diff --git a/arch/arm/src/lc823450/lc823450_timer.c b/arch/arm/src/lc823450/lc823450_timer.c index 00b10c9f872..bf98eee42ce 100644 --- a/arch/arm/src/lc823450/lc823450_timer.c +++ b/arch/arm/src/lc823450/lc823450_timer.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/arm/src/lc823450/lc823450_usbdev.c b/arch/arm/src/lc823450/lc823450_usbdev.c index f9b35ca7768..facacbc43cb 100644 --- a/arch/arm/src/lc823450/lc823450_usbdev.c +++ b/arch/arm/src/lc823450/lc823450_usbdev.c @@ -38,6 +38,7 @@ # include #endif +#include #include #include #include diff --git a/arch/arm/src/stm32h7/stm32_adc.c b/arch/arm/src/stm32h7/stm32_adc.c index ce1104f1c4c..d00e9bd2bb1 100644 --- a/arch/arm/src/stm32h7/stm32_adc.c +++ b/arch/arm/src/stm32h7/stm32_adc.c @@ -55,6 +55,7 @@ #include #include +#include #include #include #include diff --git a/arch/arm/src/stm32l4/stm32l4_adc.c b/arch/arm/src/stm32l4/stm32l4_adc.c index 096d2c1f968..a49559d8ebd 100644 --- a/arch/arm/src/stm32l4/stm32l4_adc.c +++ b/arch/arm/src/stm32l4/stm32l4_adc.c @@ -34,6 +34,7 @@ #include #include +#include #include #include #include diff --git a/arch/risc-v/src/bl602/bl602_netdev.c b/arch/risc-v/src/bl602/bl602_netdev.c index 9ca67224ef7..539655441e3 100644 --- a/arch/risc-v/src/bl602/bl602_netdev.c +++ b/arch/risc-v/src/bl602/bl602_netdev.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/risc-v/src/common/espressif/esp_hr_timer.c b/arch/risc-v/src/common/espressif/esp_hr_timer.c index 2049537745e..786d689c1f4 100644 --- a/arch/risc-v/src/common/espressif/esp_hr_timer.c +++ b/arch/risc-v/src/common/espressif/esp_hr_timer.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include diff --git a/arch/risc-v/src/esp32c3-legacy/esp32c3_rt_timer.c b/arch/risc-v/src/esp32c3-legacy/esp32c3_rt_timer.c index 3d395d8bb34..ba0c4216744 100644 --- a/arch/risc-v/src/esp32c3-legacy/esp32c3_rt_timer.c +++ b/arch/risc-v/src/esp32c3-legacy/esp32c3_rt_timer.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include diff --git a/arch/risc-v/src/k230/k230_rptun.c b/arch/risc-v/src/k230/k230_rptun.c index 7ef367c0851..453d8c4d266 100644 --- a/arch/risc-v/src/k230/k230_rptun.c +++ b/arch/risc-v/src/k230/k230_rptun.c @@ -34,6 +34,7 @@ #include #include +#include #include #include #include diff --git a/arch/risc-v/src/mpfs/mpfs_ihc.c b/arch/risc-v/src/mpfs/mpfs_ihc.c index 2df5247986c..736571a6ee6 100644 --- a/arch/risc-v/src/mpfs/mpfs_ihc.c +++ b/arch/risc-v/src/mpfs/mpfs_ihc.c @@ -34,6 +34,7 @@ #include #include +#include #include #include #include diff --git a/arch/risc-v/src/rv32m1/rv32m1_gpio.c b/arch/risc-v/src/rv32m1/rv32m1_gpio.c index 2b5d4ba18a2..bdfa832325c 100644 --- a/arch/risc-v/src/rv32m1/rv32m1_gpio.c +++ b/arch/risc-v/src/rv32m1/rv32m1_gpio.c @@ -32,6 +32,7 @@ #include #include +#include #include #include diff --git a/arch/sim/src/sim/posix/sim_alsa.c b/arch/sim/src/sim/posix/sim_alsa.c index bf6fc06e752..ad36ea4031a 100644 --- a/arch/sim/src/sim/posix/sim_alsa.c +++ b/arch/sim/src/sim/posix/sim_alsa.c @@ -23,6 +23,7 @@ ****************************************************************************/ #include +#include #include #include #include diff --git a/arch/sim/src/sim/sim_rptun.c b/arch/sim/src/sim/sim_rptun.c index bfe4d1e54d5..2a1e21a3ddf 100644 --- a/arch/sim/src/sim/sim_rptun.c +++ b/arch/sim/src/sim/sim_rptun.c @@ -22,6 +22,7 @@ * Included Files ****************************************************************************/ +#include #include #include #include diff --git a/arch/xtensa/src/esp32/esp32_rt_timer.c b/arch/xtensa/src/esp32/esp32_rt_timer.c index 27c1771506b..c10c4ec8d47 100644 --- a/arch/xtensa/src/esp32/esp32_rt_timer.c +++ b/arch/xtensa/src/esp32/esp32_rt_timer.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include diff --git a/arch/xtensa/src/esp32/esp32_wlan.c b/arch/xtensa/src/esp32/esp32_wlan.c index f66a429aec9..9c8b2be0e98 100644 --- a/arch/xtensa/src/esp32/esp32_wlan.c +++ b/arch/xtensa/src/esp32/esp32_wlan.c @@ -31,6 +31,7 @@ #include #include +#include #include #include #include diff --git a/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c b/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c index b0b3d7a189f..af1d3c6a050 100644 --- a/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c +++ b/arch/xtensa/src/esp32s2/esp32s2_rt_timer.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include diff --git a/arch/xtensa/src/esp32s3/esp32s3_rt_timer.c b/arch/xtensa/src/esp32s3/esp32s3_rt_timer.c index 3ac081e7640..61c4a0aaff9 100644 --- a/arch/xtensa/src/esp32s3/esp32s3_rt_timer.c +++ b/arch/xtensa/src/esp32s3/esp32s3_rt_timer.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include diff --git a/drivers/input/uinput.c b/drivers/input/uinput.c index 4f6d9ce6ae7..fa4425978e3 100644 --- a/drivers/input/uinput.c +++ b/drivers/input/uinput.c @@ -26,6 +26,7 @@ #include #include +#include #include #include #include diff --git a/drivers/misc/rpmsgdev_server.c b/drivers/misc/rpmsgdev_server.c index 5cdecaa34fe..b68ff588c67 100644 --- a/drivers/misc/rpmsgdev_server.c +++ b/drivers/misc/rpmsgdev_server.c @@ -28,6 +28,7 @@ #include #include +#include #include #include #include diff --git a/drivers/power/battery/goldfish_battery.c b/drivers/power/battery/goldfish_battery.c index 1991ab9794e..0009bbe130c 100644 --- a/drivers/power/battery/goldfish_battery.c +++ b/drivers/power/battery/goldfish_battery.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include diff --git a/drivers/power/supply/regulator.c b/drivers/power/supply/regulator.c index b7781b1a251..f95d48333a9 100644 --- a/drivers/power/supply/regulator.c +++ b/drivers/power/supply/regulator.c @@ -30,6 +30,7 @@ #include #include +#include #include #include #include diff --git a/drivers/sensors/sensor_rpmsg.c b/drivers/sensors/sensor_rpmsg.c index 81e37d5b4cf..eb8a9977409 100644 --- a/drivers/sensors/sensor_rpmsg.c +++ b/drivers/sensors/sensor_rpmsg.c @@ -27,6 +27,7 @@ #include #include +#include #include #include #include diff --git a/drivers/timers/rpmsg_rtc.c b/drivers/timers/rpmsg_rtc.c index 0e94e43a89c..5f1e051f7f4 100644 --- a/drivers/timers/rpmsg_rtc.c +++ b/drivers/timers/rpmsg_rtc.c @@ -24,6 +24,7 @@ #include +#include #include #include #include diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c index ddf737eb313..133c8950d86 100644 --- a/drivers/virtio/virtio.c +++ b/drivers/virtio/virtio.c @@ -24,6 +24,7 @@ #include +#include #include #include #include diff --git a/fs/vfs/fs_epoll.c b/fs/vfs/fs_epoll.c index 40ed949e32e..ab51b46f651 100644 --- a/fs/vfs/fs_epoll.c +++ b/fs/vfs/fs_epoll.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include diff --git a/include/nuttx/list.h b/include/nuttx/list.h index 20587802605..b3b4309374e 100644 --- a/include/nuttx/list.h +++ b/include/nuttx/list.h @@ -44,8 +44,6 @@ * Included Files ****************************************************************************/ -#include - #include #include @@ -53,6 +51,21 @@ * Pre-processor Definitions ****************************************************************************/ +/* Name: list_container_of + * + * Description: + * Cast a member of a structure out to get the address of the containing + * structure + * + * Arguments: + * ptr - The pointer to the member. + * type - The type of the container struct this is embedded in. + * member - The name of the member within the struct. + */ + +#define list_container_of(ptr, type, member) \ + ((type *)((uintptr_t)(ptr) - offsetof(type, member))) + #define LIST_INITIAL_VALUE(list) { &(list), &(list) } #define LIST_INITIAL_CLEARED_VALUE { NULL, NULL } @@ -89,11 +102,11 @@ ((item)->next != (list) ? (item)->next : \ (item)->next->next != (list) ? (item)->next->next : NULL) -#define list_entry(ptr, type, member) container_of(ptr, type, member) -#define list_first_entry(list, type, member) container_of((list)->next, type, member) -#define list_last_entry(list, type, member) container_of((list)->prev, type, member) -#define list_next_entry(list, type, member) container_of((list)->member.next, type, member) -#define list_prev_entry(list, type, member) container_of((list)->member.prev, type, member) +#define list_entry(ptr, type, member) list_container_of(ptr, type, member) +#define list_first_entry(list, type, member) list_container_of((list)->next, type, member) +#define list_last_entry(list, type, member) list_container_of((list)->prev, type, member) +#define list_next_entry(list, type, member) list_container_of((list)->member.next, type, member) +#define list_prev_entry(list, type, member) list_container_of((list)->member.prev, type, member) #define list_add_after(entry, new_entry) list_add_head(entry, new_entry) #define list_add_head(list, item) \ @@ -145,7 +158,7 @@ FAR type *__t = NULL; \ if(__node) \ { \ - __t = container_of(__node, type, member); \ + __t = list_container_of(__node, type, member); \ } \ __t; \ }) @@ -156,7 +169,7 @@ FAR type *__t = NULL; \ if(__node) \ { \ - __t = container_of(__node, type, member); \ + __t = list_container_of(__node, type, member); \ } \ __t; \ }) @@ -167,7 +180,7 @@ FAR type *__t = NULL; \ if(__node) \ { \ - __t = container_of(__node, type, member); \ + __t = list_container_of(__node, type, member); \ } \ __t; \ }) @@ -178,7 +191,7 @@ FAR type *__t = NULL; \ if(__node) \ { \ - __t = container_of(__node, type, member); \ + __t = list_container_of(__node, type, member); \ } \ __t; \ }) @@ -189,7 +202,7 @@ FAR type *__t = NULL; \ if(__node) \ { \ - __t = container_of(__node, type, member); \ + __t = list_container_of(__node, type, member); \ } \ __t; \ }) @@ -200,7 +213,7 @@ FAR type *__t = NULL; \ if(__node) \ { \ - __t = container_of(__node, type, member); \ + __t = list_container_of(__node, type, member); \ } \ __t; \ }) @@ -211,7 +224,7 @@ FAR type *__t = NULL; \ if(__node) \ { \ - __t = container_of(__node, type, member); \ + __t = list_container_of(__node, type, member); \ } \ __t; \ }) @@ -222,7 +235,7 @@ FAR type *__t = NULL; \ if(__node) \ { \ - __t = container_of(__node, type, member); \ + __t = list_container_of(__node, type, member); \ } \ __t; \ }) @@ -243,19 +256,19 @@ /* iterates over the list, entry should be the container structure type */ #define list_for_every_entry(list, entry, type, member) \ - for(entry = container_of((list)->next, type, member); \ + for(entry = list_container_of((list)->next, type, member); \ &entry->member != (list); \ - entry = container_of(entry->member.next, type, member)) + entry = list_container_of(entry->member.next, type, member)) /* iterates over the list in a safe way for deletion of current node * entry and temp_entry should be the container structure type * */ #define list_for_every_entry_safe(list, entry, temp, type, member) \ - for(entry = container_of((list)->next, type, member), \ - temp = container_of(entry->member.next, type, member); \ + for(entry = list_container_of((list)->next, type, member), \ + temp = list_container_of(entry->member.next, type, member); \ &entry->member != (list); entry = temp, \ - temp = container_of(temp->member.next, type, member)) + temp = list_container_of(temp->member.next, type, member)) /* Iterate from a given entry node in a safe way */ @@ -274,9 +287,9 @@ */ #define list_for_every_entry_reverse(list, entry, type, member) \ - for(entry = container_of((list)->prev, type, member); \ + for(entry = list_container_of((list)->prev, type, member); \ &entry->member != (list); \ - entry = container_of(entry->member.prev, type, member)) + entry = list_container_of(entry->member.prev, type, member)) /**************************************************************************** * Public Type Definitions