# # For a description of the syntax of this configuration file, # see the file kconfig-language.txt in the NuttX tools repository. # config LIBC_IOCTL_VARIADIC bool "Enable variadic ioctl()" default n ---help--- By default, NuttX implements the "old style," three-parameter, ioctl() interface with this function prototype: int ioctl(int fd, int req, unsigned long arg); That function is implemented as part of the VFS. If LIBC_IOCTL_VARIADIC is selected, then an additional compatibility layer will be provided in the C library. The enabled, then function prototype will become: int ioctl(int fd, int req, ...); The ioctl() is not controlled by any standard so it is really arbitrary which format you used. You may select the variadic function prototype with this option. That will slightly increase code size and ioctl() processing time. It will not support a variable number of arguments and it still always expects to see a third argument of type 'unsigned long'. The only benefit of this alternative function signature is that it may provide greater compatibility if you are porting code from other platforms that use the variadic ioctl() function. WARNING: Use of this option could cause subtle system errors is the third argument is omitted or if the sizeof the thread argument is anything other than sizeof (unsigned long). Most small integers will be promoted to 'int'. The following assertion appears in ioctl(): DEBUGASSERT(sizeof(int) == sizeof(unsigned long) && sizeof(FAR void *) == sizeof(unsigned long)); Do not enable this option if the above is not true. 32-bit ARM should pass this test with all three types having sizeof(type) == 4 bytes. 'float' should also be tested. But 'long long' and 'double' are out of the question! Don't event try to pass them. And what will happen if no third argument is passed? In most cases, this should just result in a garbage value for arg. But you may discover cases where something worse happens! config LIB_SENDFILE_BUFSIZE int "sendfile() buffer size" default 512 ---help--- Size of the I/O buffer to allocate in sendfile(). Default: 512b comment "Non-standard Library Support" config LIB_CRC64_FAST bool "Fast CRC64" default n ---help--- Enable the CRC64 lookup table to compute the CRC64 faster. config LIB_KBDCODEC bool "Keyboard CODEC" default n ---help--- In NuttX, a keyboard/keypad driver is simply a character driver that may have an (optional) encoding/decoding layer on the data returned by the character driver. A keyboard may return simple text data (alphabetic, numeric, and punctuaction) or control characters (enter, control-C, etc.). However, in addition, most keyboards support actions that cannot be represented as text data. Such actions include things like cursor controls (home, up arrow, page down, etc.), editing functions (insert, delete, etc.), volume controls, (mute, volume up, etc.) and other special functions. Some special encoding may be required to multiplex these two classes of data. This option enables the functions that implement the encoding and decoding of keyboard data. These are the interfaces prototyped in include/nuttx/input/kbd_codec.h. While not correctly a part of the C library, it is included here because the decoding side of this interface must be accessible by end user programs. config LIB_SLCDCODEC bool "Segment LCD CODEC" default n ---help--- In NuttX, a character-oriented, segment LCD (SLCD) driver is simply a character device that may have an (optional) encoding/decoding layer on the data provided to the SLCD driver. The application may provide simple text data (alphabetic, numeric, and punctuaction) or control characters (enter, control-C, etc.). However, in addition, most SLCDs support actions that cannot be represented as text data. Such actions include things like cursor controls (home, up arrow, page down, etc.) and other special functions (e.g., blinking). Some special encoding may be required to multiplex these two classes of data. This option enables the functions that implement the encoding and decoding of SLCD data. These are the interfaces prototyped in include/nuttx/lcd/slcd_codec.h. While not correctly a part of the C library, it is included here because the encoding side of this interface must be accessible by end user programs.