diff --git a/drivers/gpio/gpio_intel_apl.c b/drivers/gpio/gpio_intel_apl.c index 8b2e5881616..56eb86c9318 100644 --- a/drivers/gpio/gpio_intel_apl.c +++ b/drivers/gpio/gpio_intel_apl.c @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include "gpio_utils.h" diff --git a/include/bluetooth/att.h b/include/bluetooth/att.h index 65eceef1f70..c0c220a9f4f 100644 --- a/include/bluetooth/att.h +++ b/include/bluetooth/att.h @@ -14,7 +14,7 @@ extern "C" { #endif -#include +#include /* Error codes for Error response PDU */ #define BT_ATT_ERR_INVALID_HANDLE 0x01 diff --git a/include/drivers/clock_control.h b/include/drivers/clock_control.h index e95e4292f13..0d5b7fae64f 100644 --- a/include/drivers/clock_control.h +++ b/include/drivers/clock_control.h @@ -13,7 +13,7 @@ #include #include #include -#include +#include #ifdef __cplusplus extern "C" { diff --git a/include/drivers/gpio.h b/include/drivers/gpio.h index 1f8e87d9f75..a1312b141a1 100644 --- a/include/drivers/gpio.h +++ b/include/drivers/gpio.h @@ -14,7 +14,7 @@ #define ZEPHYR_INCLUDE_DRIVERS_GPIO_H_ #include -#include +#include #include #include diff --git a/include/kernel_includes.h b/include/kernel_includes.h index 5b7b0a6fb8f..0ee8bcf534d 100644 --- a/include/kernel_includes.h +++ b/include/kernel_includes.h @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/include/misc/slist.h b/include/misc/slist.h index 0d393e6b7d5..1d164236dd9 100644 --- a/include/misc/slist.h +++ b/include/misc/slist.h @@ -1,416 +1,15 @@ /* - * Copyright (c) 2016 Intel Corporation + * Copyright (c) 2019 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ - -/** - * @file - * - * @brief Single-linked list implementation - * - * Single-linked list implementation using inline macros/functions. - * This API is not thread safe, and thus if a list is used across threads, - * calls to functions must be protected with synchronization primitives. - */ - #ifndef ZEPHYR_INCLUDE_MISC_SLIST_H_ #define ZEPHYR_INCLUDE_MISC_SLIST_H_ -#include -#include -#include "list_gen.h" - -#ifdef __cplusplus -extern "C" { +#ifndef CONFIG_COMPAT_INCLUDES +#warning "This header file has moved, include instead." #endif - -struct _snode { - struct _snode *next; -}; - -typedef struct _snode sys_snode_t; - -struct _slist { - sys_snode_t *head; - sys_snode_t *tail; -}; - -typedef struct _slist sys_slist_t; - -/** - * @brief Provide the primitive to iterate on a list - * Note: the loop is unsafe and thus __sn should not be removed - * - * User _MUST_ add the loop statement curly braces enclosing its own code: - * - * SYS_SLIST_FOR_EACH_NODE(l, n) { - * - * } - * - * This and other SYS_SLIST_*() macros are not thread safe. - * - * @param __sl A pointer on a sys_slist_t to iterate on - * @param __sn A sys_snode_t pointer to peek each node of the list - */ -#define SYS_SLIST_FOR_EACH_NODE(__sl, __sn) \ - Z_GENLIST_FOR_EACH_NODE(slist, __sl, __sn) - -/** - * @brief Provide the primitive to iterate on a list, from a node in the list - * Note: the loop is unsafe and thus __sn should not be removed - * - * User _MUST_ add the loop statement curly braces enclosing its own code: - * - * SYS_SLIST_ITERATE_FROM_NODE(l, n) { - * - * } - * - * Like SYS_SLIST_FOR_EACH_NODE(), but __dn already contains a node in the list - * where to start searching for the next entry from. If NULL, it starts from - * the head. - * - * This and other SYS_SLIST_*() macros are not thread safe. - * - * @param __sl A pointer on a sys_slist_t to iterate on - * @param __sn A sys_snode_t pointer to peek each node of the list - * it contains the starting node, or NULL to start from the head - */ -#define SYS_SLIST_ITERATE_FROM_NODE(__sl, __sn) \ - Z_GENLIST_ITERATE_FROM_NODE(slist, __sl, __sn) - -/** - * @brief Provide the primitive to safely iterate on a list - * Note: __sn can be removed, it will not break the loop. - * - * User _MUST_ add the loop statement curly braces enclosing its own code: - * - * SYS_SLIST_FOR_EACH_NODE_SAFE(l, n, s) { - * - * } - * - * This and other SYS_SLIST_*() macros are not thread safe. - * - * @param __sl A pointer on a sys_slist_t to iterate on - * @param __sn A sys_snode_t pointer to peek each node of the list - * @param __sns A sys_snode_t pointer for the loop to run safely - */ -#define SYS_SLIST_FOR_EACH_NODE_SAFE(__sl, __sn, __sns) \ - Z_GENLIST_FOR_EACH_NODE_SAFE(slist, __sl, __sn, __sns) - -/* - * @brief Provide the primitive to resolve the container of a list node - * Note: it is safe to use with NULL pointer nodes - * - * @param __ln A pointer on a sys_node_t to get its container - * @param __cn Container struct type pointer - * @param __n The field name of sys_node_t within the container struct - */ -#define SYS_SLIST_CONTAINER(__ln, __cn, __n) \ - Z_GENLIST_CONTAINER(__ln, __cn, __n) - -/* - * @brief Provide the primitive to peek container of the list head - * - * @param __sl A pointer on a sys_slist_t to peek - * @param __cn Container struct type pointer - * @param __n The field name of sys_node_t within the container struct - */ -#define SYS_SLIST_PEEK_HEAD_CONTAINER(__sl, __cn, __n) \ - Z_GENLIST_PEEK_HEAD_CONTAINER(slist, __sl, __cn, __n) - -/* - * @brief Provide the primitive to peek container of the list tail - * - * @param __sl A pointer on a sys_slist_t to peek - * @param __cn Container struct type pointer - * @param __n The field name of sys_node_t within the container struct - */ -#define SYS_SLIST_PEEK_TAIL_CONTAINER(__sl, __cn, __n) \ - Z_GENLIST_PEEK_TAIL_CONTAINER(slist, __sl, __cn, __n) - -/* - * @brief Provide the primitive to peek the next container - * - * @param __cn Container struct type pointer - * @param __n The field name of sys_node_t within the container struct - */ -#define SYS_SLIST_PEEK_NEXT_CONTAINER(__cn, __n) \ - Z_GENLIST_PEEK_NEXT_CONTAINER(slist, __cn, __n) - -/** - * @brief Provide the primitive to iterate on a list under a container - * Note: the loop is unsafe and thus __cn should not be detached - * - * User _MUST_ add the loop statement curly braces enclosing its own code: - * - * SYS_SLIST_FOR_EACH_CONTAINER(l, c, n) { - * - * } - * - * @param __sl A pointer on a sys_slist_t to iterate on - * @param __cn A pointer to peek each entry of the list - * @param __n The field name of sys_node_t within the container struct - */ -#define SYS_SLIST_FOR_EACH_CONTAINER(__sl, __cn, __n) \ - Z_GENLIST_FOR_EACH_CONTAINER(slist, __sl, __cn, __n) - -/** - * @brief Provide the primitive to safely iterate on a list under a container - * Note: __cn can be detached, it will not break the loop. - * - * User _MUST_ add the loop statement curly braces enclosing its own code: - * - * SYS_SLIST_FOR_EACH_NODE_SAFE(l, c, cn, n) { - * - * } - * - * @param __sl A pointer on a sys_slist_t to iterate on - * @param __cn A pointer to peek each entry of the list - * @param __cns A pointer for the loop to run safely - * @param __n The field name of sys_node_t within the container struct - */ -#define SYS_SLIST_FOR_EACH_CONTAINER_SAFE(__sl, __cn, __cns, __n) \ - Z_GENLIST_FOR_EACH_CONTAINER_SAFE(slist, __sl, __cn, __cns, __n) - - -/* - * Required function definitions for the list_gen.h interface - * - * These are the only functions that do not treat the list/node pointers - * as completely opaque types. - */ - -/** - * @brief Initialize a list - * - * @param list A pointer on the list to initialize - */ -static inline void sys_slist_init(sys_slist_t *list) -{ - list->head = NULL; - list->tail = NULL; -} - -#define SYS_SLIST_STATIC_INIT(ptr_to_list) {NULL, NULL} - -static inline sys_snode_t *z_snode_next_peek(sys_snode_t *node) -{ - return node->next; -} - -static inline void z_snode_next_set(sys_snode_t *parent, sys_snode_t *child) -{ - parent->next = child; -} - -static inline void z_slist_head_set(sys_slist_t *list, sys_snode_t *node) -{ - list->head = node; -} - -static inline void z_slist_tail_set(sys_slist_t *list, sys_snode_t *node) -{ - list->tail = node; -} - -/** - * @brief Peek the first node from the list - * - * @param list A point on the list to peek the first node from - * - * @return A pointer on the first node of the list (or NULL if none) - */ -static inline sys_snode_t *sys_slist_peek_head(sys_slist_t *list) -{ - return list->head; -} - -/** - * @brief Peek the last node from the list - * - * @param list A point on the list to peek the last node from - * - * @return A pointer on the last node of the list (or NULL if none) - */ -static inline sys_snode_t *sys_slist_peek_tail(sys_slist_t *list) -{ - return list->tail; -} - -/* - * Derived, generated APIs - */ - -/** - * @brief Test if the given list is empty - * - * @param list A pointer on the list to test - * - * @return a boolean, true if it's empty, false otherwise - */ -static inline bool sys_slist_is_empty(sys_slist_t *list); - -Z_GENLIST_IS_EMPTY(slist) - -/** - * @brief Peek the next node from current node, node is not NULL - * - * Faster then sys_slist_peek_next() if node is known not to be NULL. - * - * @param node A pointer on the node where to peek the next node - * - * @return a pointer on the next node (or NULL if none) - */ -static inline sys_snode_t *sys_slist_peek_next_no_check(sys_snode_t *node); - -Z_GENLIST_PEEK_NEXT_NO_CHECK(slist, snode) - -/** - * @brief Peek the next node from current node - * - * @param node A pointer on the node where to peek the next node - * - * @return a pointer on the next node (or NULL if none) - */ -static inline sys_snode_t *sys_slist_peek_next(sys_snode_t *node); - -Z_GENLIST_PEEK_NEXT(slist, snode) - -/** - * @brief Prepend a node to the given list - * - * This and other sys_slist_*() functions are not thread safe. - * - * @param list A pointer on the list to affect - * @param node A pointer on the node to prepend - */ -static inline void sys_slist_prepend(sys_slist_t *list, - sys_snode_t *node); - -Z_GENLIST_PREPEND(slist, snode) - -/** - * @brief Append a node to the given list - * - * This and other sys_slist_*() functions are not thread safe. - * - * @param list A pointer on the list to affect - * @param node A pointer on the node to append - */ -static inline void sys_slist_append(sys_slist_t *list, - sys_snode_t *node); - -Z_GENLIST_APPEND(slist, snode) - -/** - * @brief Append a list to the given list - * - * Append a singly-linked, NULL-terminated list consisting of nodes containing - * the pointer to the next node as the first element of a node, to @a list. - * This and other sys_slist_*() functions are not thread safe. - * - * FIXME: Why are the element parameters void *? - * - * @param list A pointer on the list to affect - * @param head A pointer to the first element of the list to append - * @param tail A pointer to the last element of the list to append - */ -static inline void sys_slist_append_list(sys_slist_t *list, - void *head, void *tail); - -Z_GENLIST_APPEND_LIST(slist, snode) - -/** - * @brief merge two slists, appending the second one to the first - * - * When the operation is completed, the appending list is empty. - * This and other sys_slist_*() functions are not thread safe. - * - * @param list A pointer on the list to affect - * @param list_to_append A pointer to the list to append. - */ -static inline void sys_slist_merge_slist(sys_slist_t *list, - sys_slist_t *list_to_append); - -Z_GENLIST_MERGE_LIST(slist, snode) - -/** - * @brief Insert a node to the given list - * - * This and other sys_slist_*() functions are not thread safe. - * - * @param list A pointer on the list to affect - * @param prev A pointer on the previous node - * @param node A pointer on the node to insert - */ -static inline void sys_slist_insert(sys_slist_t *list, - sys_snode_t *prev, - sys_snode_t *node); - -Z_GENLIST_INSERT(slist, snode) - -/** - * @brief Fetch and remove the first node of the given list - * - * List must be known to be non-empty. - * This and other sys_slist_*() functions are not thread safe. - * - * @param list A pointer on the list to affect - * - * @return A pointer to the first node of the list - */ -static inline sys_snode_t *sys_slist_get_not_empty(sys_slist_t *list); - -Z_GENLIST_GET_NOT_EMPTY(slist, snode) - -/** - * @brief Fetch and remove the first node of the given list - * - * This and other sys_slist_*() functions are not thread safe. - * - * @param list A pointer on the list to affect - * - * @return A pointer to the first node of the list (or NULL if empty) - */ -static inline sys_snode_t *sys_slist_get(sys_slist_t *list); - -Z_GENLIST_GET(slist, snode) - -/** - * @brief Remove a node - * - * This and other sys_slist_*() functions are not thread safe. - * - * @param list A pointer on the list to affect - * @param prev_node A pointer on the previous node - * (can be NULL, which means the node is the list's head) - * @param node A pointer on the node to remove - */ -static inline void sys_slist_remove(sys_slist_t *list, - sys_snode_t *prev_node, - sys_snode_t *node); - -Z_GENLIST_REMOVE(slist, snode) - -/** - * @brief Find and remove a node from a list - * - * This and other sys_slist_*() functions are not thread safe. - * - * @param list A pointer on the list to affect - * @param node A pointer on the node to remove from the list - * - * @return true if node was removed - */ -static inline bool sys_slist_find_and_remove(sys_slist_t *list, - sys_snode_t *node); - -Z_GENLIST_FIND_AND_REMOVE(slist, snode) - -#ifdef __cplusplus -} -#endif +#include #endif /* ZEPHYR_INCLUDE_MISC_SLIST_H_ */ diff --git a/include/net/coap.h b/include/net/coap.h index d733d1aba56..cf22d2abc56 100644 --- a/include/net/coap.h +++ b/include/net/coap.h @@ -25,7 +25,7 @@ #include #include -#include +#include #ifdef __cplusplus extern "C" { diff --git a/include/net/dhcpv4.h b/include/net/dhcpv4.h index 2c70f3e9b78..9758dd67109 100644 --- a/include/net/dhcpv4.h +++ b/include/net/dhcpv4.h @@ -22,7 +22,7 @@ extern "C" { * @{ */ -#include +#include #include /** @cond INTERNAL_HIDDEN */ diff --git a/include/net/net_if.h b/include/net/net_if.h index ca6cf75268e..d70db3dad02 100644 --- a/include/net/net_if.h +++ b/include/net/net_if.h @@ -20,7 +20,7 @@ */ #include -#include +#include #include #include diff --git a/include/posix/pthread_key.h b/include/posix/pthread_key.h index 6d763dfa9ac..e2493e20002 100644 --- a/include/posix/pthread_key.h +++ b/include/posix/pthread_key.h @@ -12,7 +12,7 @@ extern "C" { #endif #ifdef CONFIG_PTHREAD_IPC -#include +#include #include typedef u32_t pthread_once_t; diff --git a/include/settings/settings.h b/include/settings/settings.h index 5917a357438..afef4d5e2dd 100644 --- a/include/settings/settings.h +++ b/include/settings/settings.h @@ -10,7 +10,7 @@ #include #include -#include +#include #include #ifdef __cplusplus diff --git a/include/sys/slist.h b/include/sys/slist.h new file mode 100644 index 00000000000..f0b9510c8d7 --- /dev/null +++ b/include/sys/slist.h @@ -0,0 +1,416 @@ +/* + * Copyright (c) 2016 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * + * @brief Single-linked list implementation + * + * Single-linked list implementation using inline macros/functions. + * This API is not thread safe, and thus if a list is used across threads, + * calls to functions must be protected with synchronization primitives. + */ + +#ifndef ZEPHYR_INCLUDE_SYS_SLIST_H_ +#define ZEPHYR_INCLUDE_SYS_SLIST_H_ + +#include +#include +#include "list_gen.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +struct _snode { + struct _snode *next; +}; + +typedef struct _snode sys_snode_t; + +struct _slist { + sys_snode_t *head; + sys_snode_t *tail; +}; + +typedef struct _slist sys_slist_t; + +/** + * @brief Provide the primitive to iterate on a list + * Note: the loop is unsafe and thus __sn should not be removed + * + * User _MUST_ add the loop statement curly braces enclosing its own code: + * + * SYS_SLIST_FOR_EACH_NODE(l, n) { + * + * } + * + * This and other SYS_SLIST_*() macros are not thread safe. + * + * @param __sl A pointer on a sys_slist_t to iterate on + * @param __sn A sys_snode_t pointer to peek each node of the list + */ +#define SYS_SLIST_FOR_EACH_NODE(__sl, __sn) \ + Z_GENLIST_FOR_EACH_NODE(slist, __sl, __sn) + +/** + * @brief Provide the primitive to iterate on a list, from a node in the list + * Note: the loop is unsafe and thus __sn should not be removed + * + * User _MUST_ add the loop statement curly braces enclosing its own code: + * + * SYS_SLIST_ITERATE_FROM_NODE(l, n) { + * + * } + * + * Like SYS_SLIST_FOR_EACH_NODE(), but __dn already contains a node in the list + * where to start searching for the next entry from. If NULL, it starts from + * the head. + * + * This and other SYS_SLIST_*() macros are not thread safe. + * + * @param __sl A pointer on a sys_slist_t to iterate on + * @param __sn A sys_snode_t pointer to peek each node of the list + * it contains the starting node, or NULL to start from the head + */ +#define SYS_SLIST_ITERATE_FROM_NODE(__sl, __sn) \ + Z_GENLIST_ITERATE_FROM_NODE(slist, __sl, __sn) + +/** + * @brief Provide the primitive to safely iterate on a list + * Note: __sn can be removed, it will not break the loop. + * + * User _MUST_ add the loop statement curly braces enclosing its own code: + * + * SYS_SLIST_FOR_EACH_NODE_SAFE(l, n, s) { + * + * } + * + * This and other SYS_SLIST_*() macros are not thread safe. + * + * @param __sl A pointer on a sys_slist_t to iterate on + * @param __sn A sys_snode_t pointer to peek each node of the list + * @param __sns A sys_snode_t pointer for the loop to run safely + */ +#define SYS_SLIST_FOR_EACH_NODE_SAFE(__sl, __sn, __sns) \ + Z_GENLIST_FOR_EACH_NODE_SAFE(slist, __sl, __sn, __sns) + +/* + * @brief Provide the primitive to resolve the container of a list node + * Note: it is safe to use with NULL pointer nodes + * + * @param __ln A pointer on a sys_node_t to get its container + * @param __cn Container struct type pointer + * @param __n The field name of sys_node_t within the container struct + */ +#define SYS_SLIST_CONTAINER(__ln, __cn, __n) \ + Z_GENLIST_CONTAINER(__ln, __cn, __n) + +/* + * @brief Provide the primitive to peek container of the list head + * + * @param __sl A pointer on a sys_slist_t to peek + * @param __cn Container struct type pointer + * @param __n The field name of sys_node_t within the container struct + */ +#define SYS_SLIST_PEEK_HEAD_CONTAINER(__sl, __cn, __n) \ + Z_GENLIST_PEEK_HEAD_CONTAINER(slist, __sl, __cn, __n) + +/* + * @brief Provide the primitive to peek container of the list tail + * + * @param __sl A pointer on a sys_slist_t to peek + * @param __cn Container struct type pointer + * @param __n The field name of sys_node_t within the container struct + */ +#define SYS_SLIST_PEEK_TAIL_CONTAINER(__sl, __cn, __n) \ + Z_GENLIST_PEEK_TAIL_CONTAINER(slist, __sl, __cn, __n) + +/* + * @brief Provide the primitive to peek the next container + * + * @param __cn Container struct type pointer + * @param __n The field name of sys_node_t within the container struct + */ +#define SYS_SLIST_PEEK_NEXT_CONTAINER(__cn, __n) \ + Z_GENLIST_PEEK_NEXT_CONTAINER(slist, __cn, __n) + +/** + * @brief Provide the primitive to iterate on a list under a container + * Note: the loop is unsafe and thus __cn should not be detached + * + * User _MUST_ add the loop statement curly braces enclosing its own code: + * + * SYS_SLIST_FOR_EACH_CONTAINER(l, c, n) { + * + * } + * + * @param __sl A pointer on a sys_slist_t to iterate on + * @param __cn A pointer to peek each entry of the list + * @param __n The field name of sys_node_t within the container struct + */ +#define SYS_SLIST_FOR_EACH_CONTAINER(__sl, __cn, __n) \ + Z_GENLIST_FOR_EACH_CONTAINER(slist, __sl, __cn, __n) + +/** + * @brief Provide the primitive to safely iterate on a list under a container + * Note: __cn can be detached, it will not break the loop. + * + * User _MUST_ add the loop statement curly braces enclosing its own code: + * + * SYS_SLIST_FOR_EACH_NODE_SAFE(l, c, cn, n) { + * + * } + * + * @param __sl A pointer on a sys_slist_t to iterate on + * @param __cn A pointer to peek each entry of the list + * @param __cns A pointer for the loop to run safely + * @param __n The field name of sys_node_t within the container struct + */ +#define SYS_SLIST_FOR_EACH_CONTAINER_SAFE(__sl, __cn, __cns, __n) \ + Z_GENLIST_FOR_EACH_CONTAINER_SAFE(slist, __sl, __cn, __cns, __n) + + +/* + * Required function definitions for the list_gen.h interface + * + * These are the only functions that do not treat the list/node pointers + * as completely opaque types. + */ + +/** + * @brief Initialize a list + * + * @param list A pointer on the list to initialize + */ +static inline void sys_slist_init(sys_slist_t *list) +{ + list->head = NULL; + list->tail = NULL; +} + +#define SYS_SLIST_STATIC_INIT(ptr_to_list) {NULL, NULL} + +static inline sys_snode_t *z_snode_next_peek(sys_snode_t *node) +{ + return node->next; +} + +static inline void z_snode_next_set(sys_snode_t *parent, sys_snode_t *child) +{ + parent->next = child; +} + +static inline void z_slist_head_set(sys_slist_t *list, sys_snode_t *node) +{ + list->head = node; +} + +static inline void z_slist_tail_set(sys_slist_t *list, sys_snode_t *node) +{ + list->tail = node; +} + +/** + * @brief Peek the first node from the list + * + * @param list A point on the list to peek the first node from + * + * @return A pointer on the first node of the list (or NULL if none) + */ +static inline sys_snode_t *sys_slist_peek_head(sys_slist_t *list) +{ + return list->head; +} + +/** + * @brief Peek the last node from the list + * + * @param list A point on the list to peek the last node from + * + * @return A pointer on the last node of the list (or NULL if none) + */ +static inline sys_snode_t *sys_slist_peek_tail(sys_slist_t *list) +{ + return list->tail; +} + +/* + * Derived, generated APIs + */ + +/** + * @brief Test if the given list is empty + * + * @param list A pointer on the list to test + * + * @return a boolean, true if it's empty, false otherwise + */ +static inline bool sys_slist_is_empty(sys_slist_t *list); + +Z_GENLIST_IS_EMPTY(slist) + +/** + * @brief Peek the next node from current node, node is not NULL + * + * Faster then sys_slist_peek_next() if node is known not to be NULL. + * + * @param node A pointer on the node where to peek the next node + * + * @return a pointer on the next node (or NULL if none) + */ +static inline sys_snode_t *sys_slist_peek_next_no_check(sys_snode_t *node); + +Z_GENLIST_PEEK_NEXT_NO_CHECK(slist, snode) + +/** + * @brief Peek the next node from current node + * + * @param node A pointer on the node where to peek the next node + * + * @return a pointer on the next node (or NULL if none) + */ +static inline sys_snode_t *sys_slist_peek_next(sys_snode_t *node); + +Z_GENLIST_PEEK_NEXT(slist, snode) + +/** + * @brief Prepend a node to the given list + * + * This and other sys_slist_*() functions are not thread safe. + * + * @param list A pointer on the list to affect + * @param node A pointer on the node to prepend + */ +static inline void sys_slist_prepend(sys_slist_t *list, + sys_snode_t *node); + +Z_GENLIST_PREPEND(slist, snode) + +/** + * @brief Append a node to the given list + * + * This and other sys_slist_*() functions are not thread safe. + * + * @param list A pointer on the list to affect + * @param node A pointer on the node to append + */ +static inline void sys_slist_append(sys_slist_t *list, + sys_snode_t *node); + +Z_GENLIST_APPEND(slist, snode) + +/** + * @brief Append a list to the given list + * + * Append a singly-linked, NULL-terminated list consisting of nodes containing + * the pointer to the next node as the first element of a node, to @a list. + * This and other sys_slist_*() functions are not thread safe. + * + * FIXME: Why are the element parameters void *? + * + * @param list A pointer on the list to affect + * @param head A pointer to the first element of the list to append + * @param tail A pointer to the last element of the list to append + */ +static inline void sys_slist_append_list(sys_slist_t *list, + void *head, void *tail); + +Z_GENLIST_APPEND_LIST(slist, snode) + +/** + * @brief merge two slists, appending the second one to the first + * + * When the operation is completed, the appending list is empty. + * This and other sys_slist_*() functions are not thread safe. + * + * @param list A pointer on the list to affect + * @param list_to_append A pointer to the list to append. + */ +static inline void sys_slist_merge_slist(sys_slist_t *list, + sys_slist_t *list_to_append); + +Z_GENLIST_MERGE_LIST(slist, snode) + +/** + * @brief Insert a node to the given list + * + * This and other sys_slist_*() functions are not thread safe. + * + * @param list A pointer on the list to affect + * @param prev A pointer on the previous node + * @param node A pointer on the node to insert + */ +static inline void sys_slist_insert(sys_slist_t *list, + sys_snode_t *prev, + sys_snode_t *node); + +Z_GENLIST_INSERT(slist, snode) + +/** + * @brief Fetch and remove the first node of the given list + * + * List must be known to be non-empty. + * This and other sys_slist_*() functions are not thread safe. + * + * @param list A pointer on the list to affect + * + * @return A pointer to the first node of the list + */ +static inline sys_snode_t *sys_slist_get_not_empty(sys_slist_t *list); + +Z_GENLIST_GET_NOT_EMPTY(slist, snode) + +/** + * @brief Fetch and remove the first node of the given list + * + * This and other sys_slist_*() functions are not thread safe. + * + * @param list A pointer on the list to affect + * + * @return A pointer to the first node of the list (or NULL if empty) + */ +static inline sys_snode_t *sys_slist_get(sys_slist_t *list); + +Z_GENLIST_GET(slist, snode) + +/** + * @brief Remove a node + * + * This and other sys_slist_*() functions are not thread safe. + * + * @param list A pointer on the list to affect + * @param prev_node A pointer on the previous node + * (can be NULL, which means the node is the list's head) + * @param node A pointer on the node to remove + */ +static inline void sys_slist_remove(sys_slist_t *list, + sys_snode_t *prev_node, + sys_snode_t *node); + +Z_GENLIST_REMOVE(slist, snode) + +/** + * @brief Find and remove a node from a list + * + * This and other sys_slist_*() functions are not thread safe. + * + * @param list A pointer on the list to affect + * @param node A pointer on the node to remove from the list + * + * @return true if node was removed + */ +static inline bool sys_slist_find_and_remove(sys_slist_t *list, + sys_snode_t *node); + +Z_GENLIST_FIND_AND_REMOVE(slist, snode) + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_SYS_SLIST_H_ */ diff --git a/kernel/poll.c b/kernel/poll.c index beb641ece9b..ed5fabd31ba 100644 --- a/kernel/poll.c +++ b/kernel/poll.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/lib/posix/pthread.c b/lib/posix/pthread.c index 4d3fdb16c24..c86e05dfd78 100644 --- a/lib/posix/pthread.c +++ b/lib/posix/pthread.c @@ -10,7 +10,7 @@ #include #include #include -#include +#include #define PTHREAD_INIT_FLAGS PTHREAD_CANCEL_ENABLE #define PTHREAD_CANCELED ((void *) -1) diff --git a/soc/arm/atmel_sam/common/arm_mpu_regions.c b/soc/arm/atmel_sam/common/arm_mpu_regions.c index 0f7bf93c5c9..4757d7b3b4f 100644 --- a/soc/arm/atmel_sam/common/arm_mpu_regions.c +++ b/soc/arm/atmel_sam/common/arm_mpu_regions.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include +#include #include #include "arm_mpu_mem_cfg.h" diff --git a/soc/arm/nordic_nrf/nrf52/mpu_regions.c b/soc/arm/nordic_nrf/nrf52/mpu_regions.c index d1b9920c98f..bc1b2126059 100644 --- a/soc/arm/nordic_nrf/nrf52/mpu_regions.c +++ b/soc/arm/nordic_nrf/nrf52/mpu_regions.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include +#include #include #include "mpu_mem_cfg.h" diff --git a/soc/arm/nordic_nrf/nrf91/mpu_regions.c b/soc/arm/nordic_nrf/nrf91/mpu_regions.c index 32c101f6c13..5a76e172447 100644 --- a/soc/arm/nordic_nrf/nrf91/mpu_regions.c +++ b/soc/arm/nordic_nrf/nrf91/mpu_regions.c @@ -6,7 +6,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include +#include #include diff --git a/subsys/bluetooth/controller/ll_sw/ll_addr.c b/subsys/bluetooth/controller/ll_sw/ll_addr.c index 248016f8999..e052e1d0b52 100644 --- a/subsys/bluetooth/controller/ll_sw/ll_addr.c +++ b/subsys/bluetooth/controller/ll_sw/ll_addr.c @@ -18,7 +18,7 @@ #include "lll.h" #if defined(CONFIG_BT_LL_SW) -#include +#include #include "ctrl.h" #define ull_adv_is_enabled ll_adv_is_enabled #define ull_scan_is_enabled ll_scan_is_enabled diff --git a/subsys/bluetooth/host/conn.c b/subsys/bluetooth/host/conn.c index 04cf1665ed7..cc009a34d44 100644 --- a/subsys/bluetooth/host/conn.c +++ b/subsys/bluetooth/host/conn.c @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include diff --git a/subsys/bluetooth/host/hci_core.c b/subsys/bluetooth/host/hci_core.c index 1d4b5d3b718..33d2f5a0128 100644 --- a/subsys/bluetooth/host/hci_core.c +++ b/subsys/bluetooth/host/hci_core.c @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/subsys/net/ip/6lo.h b/subsys/net/ip/6lo.h index 4317de3a0fa..d1959e36a6f 100644 --- a/subsys/net/ip/6lo.h +++ b/subsys/net/ip/6lo.h @@ -13,7 +13,7 @@ #ifndef __NET_6LO_H #define __NET_6LO_H -#include +#include #include #include diff --git a/subsys/net/ip/icmpv4.c b/subsys/net/ip/icmpv4.c index 28dd400beb5..d988cef96ee 100644 --- a/subsys/net/ip/icmpv4.c +++ b/subsys/net/ip/icmpv4.c @@ -12,7 +12,7 @@ LOG_MODULE_REGISTER(net_icmpv4, CONFIG_NET_ICMPV4_LOG_LEVEL); #include -#include +#include #include #include #include diff --git a/subsys/net/ip/icmpv6.c b/subsys/net/ip/icmpv6.c index 8cfb1b27998..9464a3ed397 100644 --- a/subsys/net/ip/icmpv6.c +++ b/subsys/net/ip/icmpv6.c @@ -12,7 +12,7 @@ LOG_MODULE_REGISTER(net_icmpv6, CONFIG_NET_ICMPV6_LOG_LEVEL); #include -#include +#include #include #include #include diff --git a/subsys/net/ip/icmpv6.h b/subsys/net/ip/icmpv6.h index 779a09d6d88..1961210cad7 100644 --- a/subsys/net/ip/icmpv6.h +++ b/subsys/net/ip/icmpv6.h @@ -13,7 +13,7 @@ #ifndef __ICMPV6_H #define __ICMPV6_H -#include +#include #include #include diff --git a/subsys/net/ip/net_mgmt.c b/subsys/net/ip/net_mgmt.c index 1cbbb57e223..38433757598 100644 --- a/subsys/net/ip/net_mgmt.c +++ b/subsys/net/ip/net_mgmt.c @@ -12,7 +12,7 @@ LOG_MODULE_REGISTER(net_mgmt, CONFIG_NET_MGMT_EVENT_LOG_LEVEL); #include #include -#include +#include #include #include "net_private.h" diff --git a/subsys/net/ip/route.c b/subsys/net/ip/route.c index 4b2901b1fd6..e3f67981f2a 100644 --- a/subsys/net/ip/route.c +++ b/subsys/net/ip/route.c @@ -15,7 +15,7 @@ LOG_MODULE_REGISTER(net_route, CONFIG_NET_ROUTE_LOG_LEVEL); #include #include #include -#include +#include #include #include diff --git a/subsys/net/ip/route.h b/subsys/net/ip/route.h index 8e41b54fc0d..062dd94feab 100644 --- a/subsys/net/ip/route.h +++ b/subsys/net/ip/route.h @@ -14,7 +14,7 @@ #define __ROUTE_H #include -#include +#include #include diff --git a/subsys/net/l2/ethernet/arp.h b/subsys/net/l2/ethernet/arp.h index 4e6553ee1c8..cfcc9746265 100644 --- a/subsys/net/l2/ethernet/arp.h +++ b/subsys/net/l2/ethernet/arp.h @@ -13,7 +13,7 @@ extern "C" { #if defined(CONFIG_NET_ARP) -#include +#include #include /** diff --git a/subsys/net/l2/ieee802154/ieee802154_fragment.h b/subsys/net/l2/ieee802154/ieee802154_fragment.h index 3606ea147b0..cd9c015498d 100644 --- a/subsys/net/l2/ieee802154/ieee802154_fragment.h +++ b/subsys/net/l2/ieee802154/ieee802154_fragment.h @@ -13,7 +13,7 @@ #ifndef __NET_IEEE802154_FRAGMENT_H__ #define __NET_IEEE802154_FRAGMENT_H__ -#include +#include #include #include diff --git a/tests/kernel/common/src/slist.c b/tests/kernel/common/src/slist.c index b860004afcf..93d443ca3fa 100644 --- a/tests/kernel/common/src/slist.c +++ b/tests/kernel/common/src/slist.c @@ -5,7 +5,7 @@ */ #include -#include +#include static sys_slist_t test_list; diff --git a/tests/kernel/lifo/lifo_usage/src/lifo_usage.h b/tests/kernel/lifo/lifo_usage/src/lifo_usage.h index 6ede937db3a..943823432c8 100644 --- a/tests/kernel/lifo/lifo_usage/src/lifo_usage.h +++ b/tests/kernel/lifo/lifo_usage/src/lifo_usage.h @@ -6,7 +6,7 @@ #ifndef __TEST_LIFO_USAGE_H__ #define __TEST_LIFO_USAGE_H__ -#include +#include typedef struct ldata { sys_snode_t snode;