123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #
- # For a description of the syntax of this configuration file,
- # see the file kconfig-language.txt in the NuttX tools repository.
- #
- menu "Common I/O Buffer Support"
- config MM_IOB
- bool "Enable generic I/O buffer support"
- default n
- ---help---
- This setting will build the common I/O buffer (IOB) support
- library.
- if MM_IOB
- config IOB_NBUFFERS
- int "Number of pre-allocated I/O buffers"
- default 24 if (NET_WRITE_BUFFERS && !NET_READAHEAD) || (!NET_WRITE_BUFFERS && NET_READAHEAD)
- default 36 if NET_WRITE_BUFFERS && NET_READAHEAD
- default 8 if !NET_WRITE_BUFFERS && !NET_READAHEAD
- ---help---
- Each packet is represented by a series of small I/O buffers in a
- chain. This setting determines the number of preallocated I/O
- buffers available for packet data.
- config IOB_BUFSIZE
- int "Payload size of one I/O buffer"
- default 196
- ---help---
- Each packet is represented by a series of small I/O buffers in a
- chain. This setting determines the data payload each preallocated
- I/O buffer.
- config IOB_NCHAINS
- int "Number of pre-allocated I/O buffer chain heads"
- default 0 if !NET_READAHEAD && !NET_UDP_READAHEAD
- default 8 if NET_READAHEAD || NET_UDP_READAHEAD
- ---help---
- These tiny nodes are used as "containers" to support queueing of
- I/O buffer chains. This will limit the number of I/O transactions
- that can be "in-flight" at any give time. The default value of
- zero disables this features.
- These generic I/O buffer chain containers are not currently used
- by any logic in NuttX. That is because their other other specialized
- I/O buffer chain containers that also carry a payload of usage
- specific information.
- config IOB_THROTTLE
- int "I/O buffer throttle value"
- default 0 if !NET_WRITE_BUFFERS || !NET_READAHEAD
- default 8 if NET_WRITE_BUFFERS && NET_READAHEAD
- ---help---
- TCP write buffering and read-ahead buffer use the same pool of free
- I/O buffers. In order to prevent uncontrolled incoming TCP packets
- from hogging all of the available, pre-allocated I/O buffers, a
- throttling value is required. This throttle value assures that
- I/O buffers will be denied to the read-ahead logic before TCP writes
- are halted.
- config IOB_NOTIFIER
- bool "Support IOB notifications"
- default n
- depends on SCHED_WORKQUEUE
- select WQUEUE_NOTIFIER
- ---help---
- Enable building of IOB notifier logic that will execute a worker
- function on the high priority work queue when an IOB is available.
- This is is a general purpose notifier, but was developed specifically to
- support poll() logic where the poll must wait for an IOB to become
- available.
- config IOB_NOTIFIER_DIV
- int "Notification divider"
- default 4
- range 1 64
- depends on IOB_NOTIFIER
- ---help---
- IOBs may become available at very high rates and the resulting
- notification processing can be substantial even if there is nothing
- waiting for a free IOB. This divider will reduce that rate of
- notification. This must be an even power of two. Supported values
- include: 1, 2, 4, 8, 16, 32, 64. The default value of 4 means that
- a notification will be sent only when there are a multiple of 4 IOBs
- available.
- config IOB_DEBUG
- bool "Force I/O buffer debug"
- default n
- depends on DEBUG_FEATURES && !SYSLOG_BUFFER
- ---help---
- This option will force debug output from I/O buffer logic. This
- is not normally something that would want to do but is convenient
- if you are debugging the I/O buffer logic and do not want to get
- overloaded with other un-related debug output.
- NOTE that this selection is not available if IOBs are being used
- to syslog buffering logic (CONFIG_SYSLOG_BUFFER=y)!
- endif # MM_IOB
- endmenu # Common I/O buffer support
|