diff --git a/arch/arm/src/stm32h7/stm32_crypto.c b/arch/arm/src/stm32h7/stm32_crypto.c index 9ff3b164a973e..42e087939e510 100644 --- a/arch/arm/src/stm32h7/stm32_crypto.c +++ b/arch/arm/src/stm32h7/stm32_crypto.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "arm_internal.h" #include "hardware/stm32h7x3xx_rcc.h" diff --git a/arch/arm/src/xmc4/xmc4_i2c.c b/arch/arm/src/xmc4/xmc4_i2c.c index 38414abd5b335..e62bb0f2db245 100644 --- a/arch/arm/src/xmc4/xmc4_i2c.c +++ b/arch/arm/src/xmc4/xmc4_i2c.c @@ -34,6 +34,7 @@ #include #include +#include #include #include diff --git a/arch/risc-v/src/bl808/bl808_gpadc.c b/arch/risc-v/src/bl808/bl808_gpadc.c index f80447e2bde1c..3901e0034d71b 100644 --- a/arch/risc-v/src/bl808/bl808_gpadc.c +++ b/arch/risc-v/src/bl808/bl808_gpadc.c @@ -40,6 +40,7 @@ #include #include #include +#include #include "hardware/bl808_gpadc.h" #include "riscv_internal.h" diff --git a/arch/risc-v/src/common/espressif/esp_allocateheap.c b/arch/risc-v/src/common/espressif/esp_allocateheap.c index 5e562aedf49e7..29566a5f497f4 100644 --- a/arch/risc-v/src/common/espressif/esp_allocateheap.c +++ b/arch/risc-v/src/common/espressif/esp_allocateheap.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include "riscv_internal.h" diff --git a/arch/risc-v/src/common/espressif/esp_gpio.c b/arch/risc-v/src/common/espressif/esp_gpio.c index c10ea7d6b9232..ec82ee659c4de 100644 --- a/arch/risc-v/src/common/espressif/esp_gpio.c +++ b/arch/risc-v/src/common/espressif/esp_gpio.c @@ -40,6 +40,7 @@ #include #include #include +#include /* Arch */ diff --git a/arch/risc-v/src/common/espressif/esp_i2c_slave.c b/arch/risc-v/src/common/espressif/esp_i2c_slave.c index dbbb06ba2e7c5..1f4c6a847b76e 100644 --- a/arch/risc-v/src/common/espressif/esp_i2c_slave.c +++ b/arch/risc-v/src/common/espressif/esp_i2c_slave.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/risc-v/src/common/espressif/esp_i2s.c b/arch/risc-v/src/common/espressif/esp_i2s.c index e831672eb42d7..e10b00e7bce34 100644 --- a/arch/risc-v/src/common/espressif/esp_i2s.c +++ b/arch/risc-v/src/common/espressif/esp_i2s.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include diff --git a/arch/risc-v/src/common/espressif/esp_irq.c b/arch/risc-v/src/common/espressif/esp_irq.c index 945da04b0b19e..0ee7d29c392a7 100644 --- a/arch/risc-v/src/common/espressif/esp_irq.c +++ b/arch/risc-v/src/common/espressif/esp_irq.c @@ -34,6 +34,7 @@ #include #include +#include #include "irq/irq.h" diff --git a/arch/risc-v/src/common/espressif/esp_spi.c b/arch/risc-v/src/common/espressif/esp_spi.c index d74a6e279327c..a655e858b32c8 100644 --- a/arch/risc-v/src/common/espressif/esp_spi.c +++ b/arch/risc-v/src/common/espressif/esp_spi.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/risc-v/src/common/espressif/esp_temperature_sensor.c b/arch/risc-v/src/common/espressif/esp_temperature_sensor.c index 07a512a6f60e0..df88b0f88c75d 100644 --- a/arch/risc-v/src/common/espressif/esp_temperature_sensor.c +++ b/arch/risc-v/src/common/espressif/esp_temperature_sensor.c @@ -25,6 +25,7 @@ ****************************************************************************/ #include +#include #include #ifdef CONFIG_ESPRESSIF_TEMP diff --git a/arch/sim/src/sim/sim_gpiochip.c b/arch/sim/src/sim/sim_gpiochip.c index 52906811888a1..e437b2a6e0d7f 100644 --- a/arch/sim/src/sim/sim_gpiochip.c +++ b/arch/sim/src/sim/sim_gpiochip.c @@ -23,6 +23,7 @@ ****************************************************************************/ #include +#include #include #include #include diff --git a/arch/xtensa/src/common/espressif/esp_i2c_slave.c b/arch/xtensa/src/common/espressif/esp_i2c_slave.c index 94d6d9cb45413..c65cff7c34f86 100644 --- a/arch/xtensa/src/common/espressif/esp_i2c_slave.c +++ b/arch/xtensa/src/common/espressif/esp_i2c_slave.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/xtensa/src/common/espressif/esp_irq.c b/arch/xtensa/src/common/espressif/esp_irq.c index b7396d59b3193..56b62833b568e 100644 --- a/arch/xtensa/src/common/espressif/esp_irq.c +++ b/arch/xtensa/src/common/espressif/esp_irq.c @@ -34,6 +34,7 @@ #include #include +#include #include #include #include diff --git a/arch/xtensa/src/esp32s2/esp32s2_spi.c b/arch/xtensa/src/esp32s2/esp32s2_spi.c index 30e1c7bfdb1fb..b6ebff6dd23a1 100644 --- a/arch/xtensa/src/esp32s2/esp32s2_spi.c +++ b/arch/xtensa/src/esp32s2/esp32s2_spi.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/xtensa/src/esp32s3/esp32s3_partition.c b/arch/xtensa/src/esp32s3/esp32s3_partition.c index ba261f3ec6a35..8b267a4614f5b 100644 --- a/arch/xtensa/src/esp32s3/esp32s3_partition.c +++ b/arch/xtensa/src/esp32s3/esp32s3_partition.c @@ -30,6 +30,7 @@ #include #include +#include #include "esp32s3_spiflash_mtd.h" #include "esp32s3_partition.h" diff --git a/boards/arm/stm32f4/mikroe-stm32f4/src/stm32_touchscreen.c b/boards/arm/stm32f4/mikroe-stm32f4/src/stm32_touchscreen.c index 35c3f8eced207..923e46fa89528 100644 --- a/boards/arm/stm32f4/mikroe-stm32f4/src/stm32_touchscreen.c +++ b/boards/arm/stm32f4/mikroe-stm32f4/src/stm32_touchscreen.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include diff --git a/boards/arm/tiva/tm4c1294-launchpad/src/tm4c_bringup.c b/boards/arm/tiva/tm4c1294-launchpad/src/tm4c_bringup.c index eff17a00c9bb2..aeb59bd1867cc 100644 --- a/boards/arm/tiva/tm4c1294-launchpad/src/tm4c_bringup.c +++ b/boards/arm/tiva/tm4c1294-launchpad/src/tm4c_bringup.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include diff --git a/boards/mips/pic32mx/pic32mx7mmb/src/pic32_touchscreen.c b/boards/mips/pic32mx/pic32mx7mmb/src/pic32_touchscreen.c index 53ca39a95c2c3..7251ef75bdd50 100644 --- a/boards/mips/pic32mx/pic32mx7mmb/src/pic32_touchscreen.c +++ b/boards/mips/pic32mx/pic32mx7mmb/src/pic32_touchscreen.c @@ -37,6 +37,7 @@ #include #include +#include #include #include #include diff --git a/boards/risc-v/esp32c2/common/src/esp_board_adc.c b/boards/risc-v/esp32c2/common/src/esp_board_adc.c index aaf61adedc052..074d458a7de62 100644 --- a/boards/risc-v/esp32c2/common/src/esp_board_adc.c +++ b/boards/risc-v/esp32c2/common/src/esp_board_adc.c @@ -29,6 +29,7 @@ #include #include +#include #include "espressif/esp_adc.h" diff --git a/boards/risc-v/esp32c3/common/src/esp_board_adc.c b/boards/risc-v/esp32c3/common/src/esp_board_adc.c index e16c5d291f28b..4db4ef7a9efc6 100644 --- a/boards/risc-v/esp32c3/common/src/esp_board_adc.c +++ b/boards/risc-v/esp32c3/common/src/esp_board_adc.c @@ -29,6 +29,7 @@ #include #include +#include #include "espressif/esp_adc.h" diff --git a/boards/risc-v/esp32c6/common/src/esp_board_adc.c b/boards/risc-v/esp32c6/common/src/esp_board_adc.c index 726c2bf94b0d8..a9cae026ee9e7 100644 --- a/boards/risc-v/esp32c6/common/src/esp_board_adc.c +++ b/boards/risc-v/esp32c6/common/src/esp_board_adc.c @@ -29,6 +29,7 @@ #include #include +#include #include "espressif/esp_adc.h" diff --git a/boards/risc-v/esp32c6/common/src/esp_board_mpu60x0.c b/boards/risc-v/esp32c6/common/src/esp_board_mpu60x0.c index 53d35e7c4aefe..a87d972d1f1ad 100644 --- a/boards/risc-v/esp32c6/common/src/esp_board_mpu60x0.c +++ b/boards/risc-v/esp32c6/common/src/esp_board_mpu60x0.c @@ -30,6 +30,7 @@ #include #include +#include #include #include diff --git a/boards/risc-v/esp32h2/common/src/esp_board_adc.c b/boards/risc-v/esp32h2/common/src/esp_board_adc.c index 5401507d08dfa..7b2dc0b0f76d9 100644 --- a/boards/risc-v/esp32h2/common/src/esp_board_adc.c +++ b/boards/risc-v/esp32h2/common/src/esp_board_adc.c @@ -29,6 +29,7 @@ #include #include +#include #include "espressif/esp_adc.h" diff --git a/boards/risc-v/esp32p4/common/src/esp_board_adc.c b/boards/risc-v/esp32p4/common/src/esp_board_adc.c index 786ecb6f6b249..4759f7f8e85aa 100644 --- a/boards/risc-v/esp32p4/common/src/esp_board_adc.c +++ b/boards/risc-v/esp32p4/common/src/esp_board_adc.c @@ -29,6 +29,7 @@ #include #include +#include #include "espressif/esp_adc.h" diff --git a/boards/sparc/bm3803/xx3803/src/bm3803_am29lv.c b/boards/sparc/bm3803/xx3803/src/bm3803_am29lv.c index 6f889a5e178c1..b148ea1456779 100644 --- a/boards/sparc/bm3803/xx3803/src/bm3803_am29lv.c +++ b/boards/sparc/bm3803/xx3803/src/bm3803_am29lv.c @@ -35,6 +35,7 @@ #include #include +#include #ifdef CONFIG_MTD_AM29LV # include # include diff --git a/boards/sparc/bm3823/xx3823/src/bm3823_am29lv.c b/boards/sparc/bm3823/xx3823/src/bm3823_am29lv.c index d04d144a21ac5..47dcb1ce574d1 100644 --- a/boards/sparc/bm3823/xx3823/src/bm3823_am29lv.c +++ b/boards/sparc/bm3823/xx3823/src/bm3823_am29lv.c @@ -33,6 +33,7 @@ #include #include #include +#include #ifdef CONFIG_MTD_AM29LV # include diff --git a/boards/xtensa/esp32/common/src/esp32_board_adc.c b/boards/xtensa/esp32/common/src/esp32_board_adc.c index 07c41e542a434..4a19c6526a74b 100644 --- a/boards/xtensa/esp32/common/src/esp32_board_adc.c +++ b/boards/xtensa/esp32/common/src/esp32_board_adc.c @@ -29,6 +29,7 @@ #include #include +#include #include "espressif/esp_adc.h" diff --git a/boards/xtensa/esp32s2/common/src/esp32s2_board_adc.c b/boards/xtensa/esp32s2/common/src/esp32s2_board_adc.c index 0990315a5a4e2..71f6718d133e6 100644 --- a/boards/xtensa/esp32s2/common/src/esp32s2_board_adc.c +++ b/boards/xtensa/esp32s2/common/src/esp32s2_board_adc.c @@ -29,6 +29,7 @@ #include #include +#include #include "espressif/esp_adc.h" diff --git a/boards/xtensa/esp32s3/common/src/esp32s3_board_adc.c b/boards/xtensa/esp32s3/common/src/esp32s3_board_adc.c index 1c8322e7cd9c4..d0fa9cf4489a6 100644 --- a/boards/xtensa/esp32s3/common/src/esp32s3_board_adc.c +++ b/boards/xtensa/esp32s3/common/src/esp32s3_board_adc.c @@ -29,6 +29,7 @@ #include #include +#include #include "espressif/esp_adc.h" diff --git a/drivers/analog/ads1115.c b/drivers/analog/ads1115.c index 9577cfdd7520e..86e64ba60d534 100644 --- a/drivers/analog/ads1115.c +++ b/drivers/analog/ads1115.c @@ -25,6 +25,7 @@ ****************************************************************************/ #include +#include #include #include diff --git a/drivers/analog/ads7046.c b/drivers/analog/ads7046.c index d79a193c1e095..150e17a809604 100644 --- a/drivers/analog/ads7046.c +++ b/drivers/analog/ads7046.c @@ -39,6 +39,7 @@ #include #include #include +#include /**************************************************************************** * Pre-processor Definitions diff --git a/drivers/analog/mcp47x6.c b/drivers/analog/mcp47x6.c index f65f23eb47f5d..e862fc4c18527 100644 --- a/drivers/analog/mcp47x6.c +++ b/drivers/analog/mcp47x6.c @@ -39,6 +39,7 @@ #include #include +#include /**************************************************************************** * Preprocessor definitions diff --git a/drivers/leds/ktd2052.c b/drivers/leds/ktd2052.c index 298c95682485f..1a0e969f67b76 100644 --- a/drivers/leds/ktd2052.c +++ b/drivers/leds/ktd2052.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include diff --git a/drivers/mtd/mtd_cfi.c b/drivers/mtd/mtd_cfi.c index ff04913fd814e..cbaaba51ace00 100644 --- a/drivers/mtd/mtd_cfi.c +++ b/drivers/mtd/mtd_cfi.c @@ -32,6 +32,7 @@ #include #include +#include #include #include "cfi.h" diff --git a/drivers/net/oa_tc6/oa_tc6.c b/drivers/net/oa_tc6/oa_tc6.c index d7337c3358646..85fb0594e440b 100644 --- a/drivers/net/oa_tc6/oa_tc6.c +++ b/drivers/net/oa_tc6/oa_tc6.c @@ -30,6 +30,7 @@ #include #include +#include #include #ifdef CONFIG_NET_OA_TC6_NCV7410 diff --git a/drivers/net/telnet.c b/drivers/net/telnet.c index 78bff9addb001..7369b591fd188 100644 --- a/drivers/net/telnet.c +++ b/drivers/net/telnet.c @@ -36,6 +36,7 @@ #include #include +#include #include #include #include diff --git a/drivers/pci/pci_uio_ivshmem.c b/drivers/pci/pci_uio_ivshmem.c index 9340dda5180cc..1eadf73051994 100644 --- a/drivers/pci/pci_uio_ivshmem.c +++ b/drivers/pci/pci_uio_ivshmem.c @@ -34,6 +34,7 @@ #include #include +#include #include #include #include diff --git a/drivers/rpmsg/rpmsg_virtio_ivshmem.c b/drivers/rpmsg/rpmsg_virtio_ivshmem.c index 21183eb696214..2eec277d038ed 100644 --- a/drivers/rpmsg/rpmsg_virtio_ivshmem.c +++ b/drivers/rpmsg/rpmsg_virtio_ivshmem.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include diff --git a/drivers/rptun/rptun_bmp.c b/drivers/rptun/rptun_bmp.c index f7b3394cb87d7..3a749f6d3c1ad 100644 --- a/drivers/rptun/rptun_bmp.c +++ b/drivers/rptun/rptun_bmp.c @@ -24,6 +24,7 @@ * Included Files ****************************************************************************/ +#include #include #include #include diff --git a/drivers/timers/pl031.c b/drivers/timers/pl031.c index 0ff350d5339c1..38aaa4a0a8f8d 100644 --- a/drivers/timers/pl031.c +++ b/drivers/timers/pl031.c @@ -30,6 +30,7 @@ #include #include +#include #include #include diff --git a/drivers/usbdev/cdcncm.c b/drivers/usbdev/cdcncm.c index 161fd2950fd97..ede6cb00a255e 100644 --- a/drivers/usbdev/cdcncm.c +++ b/drivers/usbdev/cdcncm.c @@ -38,6 +38,7 @@ #include #include +#include #include #include #include diff --git a/drivers/video/goldfish_camera.c b/drivers/video/goldfish_camera.c index 0354bcad5996e..5ac39611dc862 100644 --- a/drivers/video/goldfish_camera.c +++ b/drivers/video/goldfish_camera.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include diff --git a/drivers/virtio/virtio-pci.c b/drivers/virtio/virtio-pci.c index 168b087661c51..79b6c56cf087e 100644 --- a/drivers/virtio/virtio-pci.c +++ b/drivers/virtio/virtio-pci.c @@ -32,6 +32,7 @@ #include #include +#include #include #include "virtio-pci.h" diff --git a/drivers/virtio/virtio-rpmb.c b/drivers/virtio/virtio-rpmb.c index d395cd9f90150..9ca8d5fb45bba 100644 --- a/drivers/virtio/virtio-rpmb.c +++ b/drivers/virtio/virtio-rpmb.c @@ -30,6 +30,7 @@ #include #include +#include #include #include #include diff --git a/drivers/wireless/bluetooth/bt_uart.c b/drivers/wireless/bluetooth/bt_uart.c index e761625b8e26f..1e174de922391 100644 --- a/drivers/wireless/bluetooth/bt_uart.c +++ b/drivers/wireless/bluetooth/bt_uart.c @@ -44,6 +44,7 @@ #include #include +#include #include #include diff --git a/drivers/wireless/gs2200m.c b/drivers/wireless/gs2200m.c index afa922f618207..428ba55262802 100644 --- a/drivers/wireless/gs2200m.c +++ b/drivers/wireless/gs2200m.c @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include diff --git a/fs/smartfs/smartfs_utils.c b/fs/smartfs/smartfs_utils.c index f81e980acf866..8155077b2fe1b 100644 --- a/fs/smartfs/smartfs_utils.c +++ b/fs/smartfs/smartfs_utils.c @@ -39,6 +39,7 @@ #include #include #include +#include #include "smartfs.h" #include "fs_heap.h" diff --git a/fs/xipfs/xipfs_mmap.c b/fs/xipfs/xipfs_mmap.c index 580b271c43c79..aeb02ca98625a 100644 --- a/fs/xipfs/xipfs_mmap.c +++ b/fs/xipfs/xipfs_mmap.c @@ -51,6 +51,7 @@ #include #include +#include #include #include diff --git a/include/nuttx/fs/fs.h b/include/nuttx/fs/fs.h index 36c039888ec16..f55547c61809f 100644 --- a/include/nuttx/fs/fs.h +++ b/include/nuttx/fs/fs.h @@ -102,13 +102,6 @@ # define _NX_GETERRVAL(r) (-errno) #endif -/* Stream flags for the fs_flags field of in struct file_struct */ - -#define __FS_FLAG_EOF (1 << 0) /* EOF detected by a read operation */ -#define __FS_FLAG_ERROR (1 << 1) /* Error detected by any operation */ -#define __FS_FLAG_LBF (1 << 2) /* Line buffered */ -#define __FS_FLAG_UBF (1 << 3) /* Buffer allocated by caller of setvbuf */ - /* Inode i_flags values: * * Bit 0-3: Inode type (Bit 3 indicates internal OS types) @@ -478,33 +471,6 @@ struct inode #define FSNODE_SIZE(n) (sizeof(struct inode) + (n)) -/* Definitions for custom stream operations with fopencookie. The - * implementation is as defined in Standard C library (libc). The only - * difference is that we use off_t instead of off64_t. This means - * off_t is int64_t if CONFIG_FS_LARGEFILE is defined and int32_t if not. - * - * These callbacks can either lead to custom functions if fopencookie is used - * or to standard file system functions if not. - */ - -typedef CODE ssize_t cookie_read_function_t(FAR void *cookie, FAR char *buf, - size_t size); -typedef CODE ssize_t cookie_write_function_t(FAR void *cookie, - FAR const char *buf, - size_t size); -typedef CODE off_t cookie_seek_function_t(FAR void *cookie, - FAR off_t *offset, - int whence); -typedef CODE int cookie_close_function_t(FAR void *cookie); - -typedef struct cookie_io_functions_t -{ - FAR cookie_read_function_t *read; - FAR cookie_write_function_t *write; - FAR cookie_seek_function_t *seek; - FAR cookie_close_function_t *close; -} cookie_io_functions_t; - /* This is the underlying representation of an open file. A file * descriptor is an index into an array of such types. The type associates * the file descriptor to the file state and to a set of inode operations. @@ -560,74 +526,6 @@ struct fdlist struct fd fl_prefds[CONFIG_NFILE_DESCRIPTORS_PER_BLOCK]; }; -/* The following structure defines the list of files used for standard C I/O. - * Note that NuttX can support the standard C APIs with or without buffering - * - * When buffering is used, the following describes the usage of the I/O - * buffer. - * The buffer can be used for reading or writing -- but not both at the same - * time. - * An fflush is implied between each change in direction of access. - * - * The field fs_bufread determines whether the buffer is being used for - * reading or for writing as follows: - * - * BUFFER - * +----------------------+ <- fs_bufstart Points to the beginning of - * | | the buffer. - * | WR: Buffered data | WR: Start of buffered write - * | | data. - * | RD: Already read | RD: Start of already read - * | | data. - * +----------------------+ - * | WR: Available buffer | <- fs_bufpos Points to next byte: - * | RD: Read-ahead data | WR: End+1 of buffered write - * | | data. - * | | RD: Points to next char to - * | | return - * +----------------------+ - * | WR: Available | <- fs_bufread Top+1 of buffered read data - * | RD: Available | WR: bufstart buffer used for - * | | writing. - * | | RD: Pointer to last buffered - * | | read char+1 - * +----------------------+ - * <- fs_bufend Points to the end of the - * buffer+1 - */ - -#ifdef CONFIG_FILE_STREAM -struct file_struct -{ - sq_entry_t fs_entry; /* Entry of file stream */ - rmutex_t fs_lock; /* Recursive lock */ - cookie_io_functions_t fs_iofunc; /* Callbacks to user / system functions */ - FAR void *fs_cookie; /* Pointer to file descriptor / cookie struct */ -#ifndef CONFIG_STDIO_DISABLE_BUFFERING - FAR char *fs_bufstart; /* Pointer to start of buffer */ - FAR char *fs_bufend; /* Pointer to 1 past end of buffer */ - FAR char *fs_bufpos; /* Current position in buffer */ - FAR char *fs_bufread; /* Pointer to 1 past last buffered read char. */ -# if CONFIG_STDIO_BUFFER_SIZE > 0 - char fs_buffer[CONFIG_STDIO_BUFFER_SIZE]; -# endif -#endif - uint16_t fs_oflags; /* Open mode flags */ - uint8_t fs_flags; /* Stream flags */ -#if CONFIG_NUNGET_CHARS > 0 - uint8_t fs_nungotten; /* The number of characters buffered for ungetc */ - char fs_ungotten[CONFIG_NUNGET_CHARS]; -#endif -}; - -struct streamlist -{ - mutex_t sl_lock; /* For thread safety */ - struct file_struct sl_std[3]; - sq_queue_t sl_queue; -}; -#endif /* CONFIG_FILE_STREAM */ - /**************************************************************************** * Public Function Prototypes ****************************************************************************/ diff --git a/include/nuttx/fs/procfs.h b/include/nuttx/fs/procfs.h index 35ebca03334a8..ca369008fbd95 100644 --- a/include/nuttx/fs/procfs.h +++ b/include/nuttx/fs/procfs.h @@ -29,6 +29,7 @@ #include #include +#include /**************************************************************************** * Pre-processor Definitions @@ -130,10 +131,6 @@ struct procfs_dir_priv_s /* An entry for procfs_register_meminfo */ -struct mallinfo; -struct mm_heap_s; -struct mm_memdump_s; - struct procfs_meminfo_entry_s { FAR const char *name; diff --git a/include/nuttx/tls.h b/include/nuttx/tls.h index e7b673aed5f77..256bfd15a14b2 100644 --- a/include/nuttx/tls.h +++ b/include/nuttx/tls.h @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -39,6 +40,8 @@ #include #include #include +#include +#include #ifdef CONFIG_PTHREAD_ATFORK # include @@ -75,6 +78,15 @@ * Public Types ****************************************************************************/ +#ifdef CONFIG_FILE_STREAM +struct streamlist +{ + mutex_t sl_lock; /* For thread safety */ + struct file_struct sl_std[3]; + sq_queue_t sl_queue; +}; +#endif /* CONFIG_FILE_STREAM */ + #ifdef __cplusplus #define EXTERN extern "C" extern "C" diff --git a/include/stdio.h b/include/stdio.h index 1aa4e6691b5c8..0311f96bffb58 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -33,8 +33,17 @@ #include #include -#include -#include +#include +#include + +/* Kernel code, and every program of a flat or protected build, still sees + * the file system types through stdio.h. The programs of a kernel build + * cannot use them, and do not see them. + */ + +#if !defined(CONFIG_BUILD_KERNEL) || defined(__KERNEL__) +# include +#endif /**************************************************************************** * Pre-processor Definitions @@ -59,6 +68,13 @@ #define _IOLBF 1 /* Line buffered */ #define _IONBF 2 /* Unbuffered */ +/* Stream flags for the fs_flags field of in struct file_struct */ + +#define __FS_FLAG_EOF (1 << 0) /* EOF detected by a read operation */ +#define __FS_FLAG_ERROR (1 << 1) /* Error detected by any operation */ +#define __FS_FLAG_LBF (1 << 2) /* Line buffered */ +#define __FS_FLAG_UBF (1 << 3) /* Buffer allocated by caller of setvbuf */ + /* File system error values */ #define EOF (-1) @@ -109,6 +125,94 @@ * Public Type Definitions ****************************************************************************/ +/* Definitions for custom stream operations with fopencookie. The + * implementation is as defined in Standard C library (libc). The only + * difference is that we use off_t instead of off64_t. This means + * off_t is int64_t if CONFIG_FS_LARGEFILE is defined and int32_t if not. + * + * These callbacks can either lead to custom functions if fopencookie is used + * or to standard file system functions if not. + */ + +typedef CODE ssize_t cookie_read_function_t(FAR void *cookie, FAR char *buf, + size_t size); +typedef CODE ssize_t cookie_write_function_t(FAR void *cookie, + FAR const char *buf, + size_t size); +typedef CODE off_t cookie_seek_function_t(FAR void *cookie, + FAR off_t *offset, + int whence); +typedef CODE int cookie_close_function_t(FAR void *cookie); + +typedef struct cookie_io_functions_t +{ + FAR cookie_read_function_t *read; + FAR cookie_write_function_t *write; + FAR cookie_seek_function_t *seek; + FAR cookie_close_function_t *close; +} cookie_io_functions_t; + +/* The following structure defines the list of files used for standard C I/O. + * Note that NuttX can support the standard C APIs with or without buffering + * + * When buffering is used, the following describes the usage of the I/O + * buffer. + * The buffer can be used for reading or writing -- but not both at the same + * time. + * An fflush is implied between each change in direction of access. + * + * The field fs_bufread determines whether the buffer is being used for + * reading or for writing as follows: + * + * BUFFER + * +----------------------+ <- fs_bufstart Points to the beginning of + * | | the buffer. + * | WR: Buffered data | WR: Start of buffered write + * | | data. + * | RD: Already read | RD: Start of already read + * | | data. + * +----------------------+ + * | WR: Available buffer | <- fs_bufpos Points to next byte: + * | RD: Read-ahead data | WR: End+1 of buffered write + * | | data. + * | | RD: Points to next char to + * | | return + * +----------------------+ + * | WR: Available | <- fs_bufread Top+1 of buffered read data + * | RD: Available | WR: bufstart buffer used for + * | | writing. + * | | RD: Pointer to last buffered + * | | read char+1 + * +----------------------+ + * <- fs_bufend Points to the end of the + * buffer+1 + */ + +#ifdef CONFIG_FILE_STREAM +struct file_struct +{ + sq_entry_t fs_entry; /* Entry of file stream */ + rmutex_t fs_lock; /* Recursive lock */ + cookie_io_functions_t fs_iofunc; /* Callbacks to user / system functions */ + FAR void *fs_cookie; /* Pointer to file descriptor / cookie struct */ +#ifndef CONFIG_STDIO_DISABLE_BUFFERING + FAR char *fs_bufstart; /* Pointer to start of buffer */ + FAR char *fs_bufend; /* Pointer to 1 past end of buffer */ + FAR char *fs_bufpos; /* Current position in buffer */ + FAR char *fs_bufread; /* Pointer to 1 past last buffered read char. */ +# if CONFIG_STDIO_BUFFER_SIZE > 0 + char fs_buffer[CONFIG_STDIO_BUFFER_SIZE]; +# endif +#endif + uint16_t fs_oflags; /* Open mode flags */ + uint8_t fs_flags; /* Stream flags */ +#if CONFIG_NUNGET_CHARS > 0 + uint8_t fs_nungotten; /* The number of characters buffered for ungetc */ + char fs_ungotten[CONFIG_NUNGET_CHARS]; +#endif +}; +#endif /* CONFIG_FILE_STREAM */ + /* Streams */ typedef struct file_struct FILE; @@ -132,6 +236,10 @@ extern "C" /* ANSI-like File System Interfaces */ +/* The standard streams, see stdin, stdout and stderr above */ + +FAR FILE *lib_get_stream(int fd); + /* Operations on streams (FILE) */ void clearerr(FAR FILE *stream); diff --git a/libs/libbuiltin/libgcc/gcov.c b/libs/libbuiltin/libgcc/gcov.c index 18c309cce4040..2ff033bd1117d 100644 --- a/libs/libbuiltin/libgcc/gcov.c +++ b/libs/libbuiltin/libgcc/gcov.c @@ -31,6 +31,7 @@ #include #include +#include #include /**************************************************************************** diff --git a/libs/libc/gdbstub/lib_gdbstub.c b/libs/libc/gdbstub/lib_gdbstub.c index dac21623eb9ac..0cccc4a975b9d 100644 --- a/libs/libc/gdbstub/lib_gdbstub.c +++ b/libs/libc/gdbstub/lib_gdbstub.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include diff --git a/libs/libc/libc.h b/libs/libc/libc.h index 465c636589bec..02c8d5928a2f8 100644 --- a/libs/libc/libc.h +++ b/libs/libc/libc.h @@ -38,6 +38,7 @@ # include # include +# include # include #endif diff --git a/libs/libc/locale/lib_iconv.c b/libs/libc/locale/lib_iconv.c index 6ffac2a1ef9a2..f6897d6552d9f 100644 --- a/libs/libc/locale/lib_iconv.c +++ b/libs/libc/locale/lib_iconv.c @@ -33,6 +33,8 @@ #include #include +#include + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ diff --git a/libs/libc/misc/lib_ftok.c b/libs/libc/misc/lib_ftok.c index 56cb7b4e80d7e..75e3625aa4fdc 100644 --- a/libs/libc/misc/lib_ftok.c +++ b/libs/libc/misc/lib_ftok.c @@ -33,6 +33,8 @@ #include #include +#include + /**************************************************************************** * Public Functions ****************************************************************************/ diff --git a/libs/libc/netdb/lib_netdb.h b/libs/libc/netdb/lib_netdb.h index 03bb762888cb8..815e8035059fd 100644 --- a/libs/libc/netdb/lib_netdb.h +++ b/libs/libc/netdb/lib_netdb.h @@ -30,6 +30,7 @@ #include #include +#include #include #ifdef CONFIG_LIBC_NETDB diff --git a/libs/libc/pwd/lib_getspnamr.c b/libs/libc/pwd/lib_getspnamr.c index 69ee8622a2bc3..8a68fe031372b 100644 --- a/libs/libc/pwd/lib_getspnamr.c +++ b/libs/libc/pwd/lib_getspnamr.c @@ -25,6 +25,7 @@ #include #include +#include #include #include diff --git a/libs/libc/signal/sig_psignal.c b/libs/libc/signal/sig_psignal.c index 4402f80c269e9..10df6dcc1fb16 100644 --- a/libs/libc/signal/sig_psignal.c +++ b/libs/libc/signal/sig_psignal.c @@ -27,6 +27,7 @@ #include #include +#include #include #include #include diff --git a/libs/libc/stdio/lib_clearerr.c b/libs/libc/stdio/lib_clearerr.c index 43f2adb553769..18b0ee22210f9 100644 --- a/libs/libc/stdio/lib_clearerr.c +++ b/libs/libc/stdio/lib_clearerr.c @@ -30,6 +30,7 @@ #include #include +#include #ifdef CONFIG_FILE_STREAM diff --git a/libs/libc/stdio/lib_feof.c b/libs/libc/stdio/lib_feof.c index dcbde85dcbae8..9eab089708ee6 100644 --- a/libs/libc/stdio/lib_feof.c +++ b/libs/libc/stdio/lib_feof.c @@ -30,6 +30,7 @@ #include #include +#include #ifdef CONFIG_FILE_STREAM diff --git a/libs/libc/stdio/lib_ferror.c b/libs/libc/stdio/lib_ferror.c index 93522581ebe29..ef7ba9b54142c 100644 --- a/libs/libc/stdio/lib_ferror.c +++ b/libs/libc/stdio/lib_ferror.c @@ -30,6 +30,7 @@ #include #include +#include #ifdef CONFIG_FILE_STREAM diff --git a/libs/libc/stdio/lib_fgetwc.c b/libs/libc/stdio/lib_fgetwc.c index f5a9027aa6da8..16fb53076c5c3 100644 --- a/libs/libc/stdio/lib_fgetwc.c +++ b/libs/libc/stdio/lib_fgetwc.c @@ -33,6 +33,8 @@ #include #include +#include "libc.h" + #ifdef CONFIG_FILE_STREAM /**************************************************************************** diff --git a/libs/libc/stdio/lib_fileno.c b/libs/libc/stdio/lib_fileno.c index a32e57fe6fe92..4366d87f69576 100644 --- a/libs/libc/stdio/lib_fileno.c +++ b/libs/libc/stdio/lib_fileno.c @@ -30,6 +30,7 @@ #include #include +#include #ifdef CONFIG_FILE_STREAM diff --git a/libs/libc/stdio/lib_libfilelock.c b/libs/libc/stdio/lib_libfilelock.c index a0e355b6933fd..10ffa091bb5a5 100644 --- a/libs/libc/stdio/lib_libfilelock.c +++ b/libs/libc/stdio/lib_libfilelock.c @@ -34,6 +34,7 @@ #include #include +#include /**************************************************************************** * Public Functions diff --git a/libs/libc/stdio/lib_printf.c b/libs/libc/stdio/lib_printf.c index 7c787fb735e09..190eeee336513 100644 --- a/libs/libc/stdio/lib_printf.c +++ b/libs/libc/stdio/lib_printf.c @@ -25,6 +25,7 @@ ****************************************************************************/ #include +#include /**************************************************************************** * Public Functions diff --git a/libs/libc/stdio/lib_putwchar.c b/libs/libc/stdio/lib_putwchar.c index c4761fc6c0d07..cd8aec0219df9 100644 --- a/libs/libc/stdio/lib_putwchar.c +++ b/libs/libc/stdio/lib_putwchar.c @@ -31,6 +31,8 @@ #include #include +#include +#include #include /**************************************************************************** diff --git a/libs/libc/stdio/lib_remove.c b/libs/libc/stdio/lib_remove.c index 5242c1ee800f2..f5947124dbef3 100644 --- a/libs/libc/stdio/lib_remove.c +++ b/libs/libc/stdio/lib_remove.c @@ -27,6 +27,7 @@ #include #include +#include #include #include diff --git a/libs/libc/stdio/lib_ungetwc.c b/libs/libc/stdio/lib_ungetwc.c index 648f654c6f419..6fe104487093c 100644 --- a/libs/libc/stdio/lib_ungetwc.c +++ b/libs/libc/stdio/lib_ungetwc.c @@ -34,6 +34,9 @@ #include #include #include +#include + +#include "libc.h" #ifdef CONFIG_FILE_STREAM diff --git a/libs/libc/stdio/lib_vasprintf.c b/libs/libc/stdio/lib_vasprintf.c index 97090ed681f57..0346f2567f03b 100644 --- a/libs/libc/stdio/lib_vasprintf.c +++ b/libs/libc/stdio/lib_vasprintf.c @@ -25,6 +25,7 @@ ****************************************************************************/ #include +#include /**************************************************************************** * Pre-processor Definitions diff --git a/libs/libc/stdio/lib_vprintf.c b/libs/libc/stdio/lib_vprintf.c index fd980a99ee192..456506817dc02 100644 --- a/libs/libc/stdio/lib_vprintf.c +++ b/libs/libc/stdio/lib_vprintf.c @@ -25,6 +25,7 @@ ****************************************************************************/ #include +#include /**************************************************************************** * Public Functions diff --git a/libs/libc/unistd/lib_getpass.c b/libs/libc/unistd/lib_getpass.c index cb543fc035c41..9eb3222a1e824 100644 --- a/libs/libc/unistd/lib_getpass.c +++ b/libs/libc/unistd/lib_getpass.c @@ -23,6 +23,7 @@ ****************************************************************************/ #include +#include #include #include #include diff --git a/sched/misc/coredump.c b/sched/misc/coredump.c index 4ea68f3232acf..5a0e2a22aa83f 100644 --- a/sched/misc/coredump.c +++ b/sched/misc/coredump.c @@ -32,6 +32,7 @@ #include #include +#include #include #include