zephyr/subsys/net/ip/Kconfig.mgmt
Nicolas Pitre 52e2f83185 kernel/timeout: introduce the timepoint API
This is meant as a substitute for sys_clock_timeout_end_calc()

Current sys_clock_timeout_end_calc() usage opens up many bug
possibilities due to the actual timeout evaluation's open-coded nature.

Issue ##50611 is one example.

- Some users store the returned value in a signed variable, others in
  an unsigned one, making the comparison with UINT64_MAX (corresponding
  to K_FOREVER) wrong in the signed case.

- Some users compute the difference and store that in a signed variable
  to compare against 0 which still doesn't work with K_FOREVER. And when
  this difference is used as a timeout argument then the K_FOREVER
  nature of the timeout is lost.

- Some users complexify their code by special-casing K_NO_WAIT and
  K_FOREVER inline which is bad for both code readability and binary
  size.

Let's introduce a better abstraction to deal with absolute timepoints
with an opaque type to be used with a well-defined API.
The word "timeout" was avoided in the naming on purpose as the timeout
namespace is quite crowded already and it is preferable to make a
distinction between relative time periods (timeouts) and absolute time
values (timepoints).

A few stacks are also adjusted as they were too tight on X86.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2023-07-25 09:12:26 +02:00

89 lines
3 KiB
Plaintext

# Copyright (c) 2016 Intel Corporation.
# SPDX-License-Identifier: Apache-2.0
menuconfig NET_MGMT
bool "Network Management API"
help
Add support for NM API that enables managing different aspects
of the network stack as well as receiving notification on network
events (ip address change, iface up and running ...).
config NET_MGMT_EVENT
bool "Add support for runtime network event notifications"
depends on NET_MGMT
help
This adds support for the stack to notify events towards any
relevant listener. This can be necessary when application
(or else) needs to be notified on a specific network event
(ip address change for instance) to trigger some related work.
if NET_MGMT_EVENT
config NET_MGMT_EVENT_STACK_SIZE
int "Stack size for the inner thread handling event callbacks"
default 2048 if COVERAGE_GCOV
default 840 if X86
default 800 if THREAD_LOCAL_STORAGE
default 768
help
Set the internal stack size for NM to run registered callbacks
on events.
config NET_MGMT_EVENT_QUEUE_SIZE
int "Size of event queue"
default 16 if NET_MGMT_EVENT_MONITOR
default 5
range 1 1024
help
Numbers of events which can be queued at same time. Note that if a
3rd event comes in, the first will be removed without generating any
notification. Thus the size of this queue has to be tweaked depending
on the load of the system, planned for the usage.
config NET_MGMT_EVENT_QUEUE_TIMEOUT
int "Timeout for event queue"
default 10
range 1 10000
help
Timeout in milliseconds for the event queue. This timeout is used to
wait for the queue to be available.
config NET_MGMT_EVENT_INFO
bool "Passing information along with an event"
help
Event notifier will be able to provide information to an event,
and listeners will then be able to get it. Such information depends
on the type of event.
config NET_MGMT_EVENT_MONITOR
bool "Monitor network events from net shell"
depends on NET_SHELL && NET_MGMT_EVENT_INFO
help
Allow user to monitor network events from net shell using
"net events [on|off]" command. The monitoring is disabled by
default. Note that you should probably increase the value of
NET_MGMT_EVENT_QUEUE_SIZE from the default in order not to miss
any events.
config NET_MGMT_EVENT_MONITOR_AUTO_START
bool "Start the event monitor automatically at boot"
depends on NET_MGMT_EVENT_MONITOR && SHELL_BACKEND_SERIAL
help
Allow user to start monitoring network events automatically
when the system starts. The auto start is disabled by default.
The default UART based shell is used to print data.
module = NET_MGMT_EVENT
module-dep = NET_LOG
module-str = Log level for network management event core
module-help = Enable debug messages output for network management events.
source "subsys/net/Kconfig.template.log_config.net"
config NET_DEBUG_MGMT_EVENT_STACK
bool "Stack analysis output on Net MGMT event core"
select INIT_STACKS
help
Add debug messages output on how much Net MGMT event stack is used.
endif # NET_MGMT_EVENT