|
#define | SYS_DLIST_FOR_EACH_NODE(__dl, __dn) |
| Provide the primitive to iterate on a list Note: the loop is unsafe and thus __dn should not be removed. More...
|
|
#define | SYS_DLIST_ITERATE_FROM_NODE(__dl, __dn) |
| Provide the primitive to iterate on a list, from a node in the list Note: the loop is unsafe and thus __dn should not be removed. More...
|
|
#define | SYS_DLIST_FOR_EACH_NODE_SAFE(__dl, __dn, __dns) |
| Provide the primitive to safely iterate on a list Note: __dn can be removed, it will not break the loop. More...
|
|
#define | SYS_DLIST_CONTAINER(__dn, __cn, __n) ((__dn != NULL) ? CONTAINER_OF(__dn, __typeof__(*__cn), __n) : NULL) |
|
#define | SYS_DLIST_PEEK_HEAD_CONTAINER(__dl, __cn, __n) SYS_DLIST_CONTAINER(sys_dlist_peek_head(__dl), __cn, __n) |
|
#define | SYS_DLIST_PEEK_NEXT_CONTAINER(__dl, __cn, __n) |
|
#define | SYS_DLIST_FOR_EACH_CONTAINER(__dl, __cn, __n) |
| Provide the primitive to iterate on a list under a container Note: the loop is unsafe and thus __cn should not be detached. More...
|
|
#define | SYS_DLIST_FOR_EACH_CONTAINER_SAFE(__dl, __cn, __cns, __n) |
| Provide the primitive to safely iterate on a list under a container Note: __cn can be detached, it will not break the loop. More...
|
|
#define | SYS_DLIST_STATIC_INIT(ptr_to_list) { {(ptr_to_list)}, {(ptr_to_list)} } |
|
|
static void | sys_dlist_init (sys_dlist_t *list) |
| initialize list to its empty state More...
|
|
static void | sys_dnode_init (sys_dnode_t *node) |
| initialize node to its state when not in a list More...
|
|
static bool | sys_dnode_is_linked (const sys_dnode_t *node) |
| check if a node is a member of any list More...
|
|
static bool | sys_dlist_is_head (sys_dlist_t *list, sys_dnode_t *node) |
| check if a node is the list's head More...
|
|
static bool | sys_dlist_is_tail (sys_dlist_t *list, sys_dnode_t *node) |
| check if a node is the list's tail More...
|
|
static bool | sys_dlist_is_empty (sys_dlist_t *list) |
| check if the list is empty More...
|
|
static bool | sys_dlist_has_multiple_nodes (sys_dlist_t *list) |
| check if more than one node present More...
|
|
static sys_dnode_t * | sys_dlist_peek_head (sys_dlist_t *list) |
| get a reference to the head item in the list More...
|
|
static sys_dnode_t * | sys_dlist_peek_head_not_empty (sys_dlist_t *list) |
| get a reference to the head item in the list More...
|
|
static sys_dnode_t * | sys_dlist_peek_next_no_check (sys_dlist_t *list, sys_dnode_t *node) |
| get a reference to the next item in the list, node is not NULL More...
|
|
static sys_dnode_t * | sys_dlist_peek_next (sys_dlist_t *list, sys_dnode_t *node) |
| get a reference to the next item in the list More...
|
|
static sys_dnode_t * | sys_dlist_peek_prev_no_check (sys_dlist_t *list, sys_dnode_t *node) |
| get a reference to the previous item in the list, node is not NULL More...
|
|
static sys_dnode_t * | sys_dlist_peek_prev (sys_dlist_t *list, sys_dnode_t *node) |
| get a reference to the previous item in the list More...
|
|
static sys_dnode_t * | sys_dlist_peek_tail (sys_dlist_t *list) |
| get a reference to the tail item in the list More...
|
|
static void | sys_dlist_append (sys_dlist_t *list, sys_dnode_t *node) |
| add node to tail of list More...
|
|
static void | sys_dlist_prepend (sys_dlist_t *list, sys_dnode_t *node) |
| add node to head of list More...
|
|
static void | sys_dlist_insert (sys_dnode_t *successor, sys_dnode_t *node) |
| Insert a node into a list. More...
|
|
static void | sys_dlist_insert_at (sys_dlist_t *list, sys_dnode_t *node, int(*cond)(sys_dnode_t *node, void *data), void *data) |
| insert node at position More...
|
|
static void | sys_dlist_remove (sys_dnode_t *node) |
| remove a specific node from a list More...
|
|
static sys_dnode_t * | sys_dlist_get (sys_dlist_t *list) |
| get the first node in a list More...
|
|
#define SYS_DLIST_FOR_EACH_CONTAINER_SAFE |
( |
|
__dl, |
|
|
|
__cn, |
|
|
|
__cns, |
|
|
|
__n |
|
) |
| |
#include <include/sys/dlist.h>
Value:
__cn != NULL; __cn = __cns, \
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_DLIST_FOR_EACH_CONTAINER_SAFE(l, c, cn, n) {
<user code>
}
- Parameters
-
__dl | A pointer on a sys_dlist_t to iterate on |
__cn | A pointer to peek each entry of the list |
__cns | A pointer for the loop to run safely |
__n | The field name of sys_dnode_t within the container struct |
#define SYS_DLIST_FOR_EACH_NODE |
( |
|
__dl, |
|
|
|
__dn |
|
) |
| |
#include <include/sys/dlist.h>
Value:
static sys_dnode_t * sys_dlist_peek_head(sys_dlist_t *list)
get a reference to the head item in the list
Definition: dlist.h:298
static sys_dnode_t * sys_dlist_peek_next(sys_dlist_t *list, sys_dnode_t *node)
get a reference to the next item in the list
Definition: dlist.h:345
Provide the primitive to iterate on a list Note: the loop is unsafe and thus __dn should not be removed.
User MUST add the loop statement curly braces enclosing its own code:
SYS_DLIST_FOR_EACH_NODE(l, n) {
<user code>
}
This and other SYS_DLIST_*() macros are not thread safe.
- Parameters
-
__dl | A pointer on a sys_dlist_t to iterate on |
__dn | A sys_dnode_t pointer to peek each node of the list |
#define SYS_DLIST_FOR_EACH_NODE_SAFE |
( |
|
__dl, |
|
|
|
__dn, |
|
|
|
__dns |
|
) |
| |
#include <include/sys/dlist.h>
Value:
__dn != NULL; __dn = __dns, \
Provide the primitive to safely iterate on a list Note: __dn can be removed, it will not break the loop.
User MUST add the loop statement curly braces enclosing its own code:
SYS_DLIST_FOR_EACH_NODE_SAFE(l, n, s) {
<user code>
}
This and other SYS_DLIST_*() macros are not thread safe.
- Parameters
-
__dl | A pointer on a sys_dlist_t to iterate on |
__dn | A sys_dnode_t pointer to peek each node of the list |
__dns | A sys_dnode_t pointer for the loop to run safely |
#define SYS_DLIST_ITERATE_FROM_NODE |
( |
|
__dl, |
|
|
|
__dn |
|
) |
| |
#include <include/sys/dlist.h>
Value:
__dn != NULL; \
static sys_dnode_t * sys_dlist_peek_next_no_check(sys_dlist_t *list, sys_dnode_t *node)
get a reference to the next item in the list, node is not NULL
Definition: dlist.h:329
Provide the primitive to iterate on a list, from a node in the list Note: the loop is unsafe and thus __dn should not be removed.
User MUST add the loop statement curly braces enclosing its own code:
SYS_DLIST_ITERATE_FROM_NODE(l, n) {
<user code>
}
Like SYS_DLIST_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_DLIST_*() macros are not thread safe.
- Parameters
-
__dl | A pointer on a sys_dlist_t to iterate on |
__dn | A sys_dnode_t pointer to peek each node of the list; it contains the starting node, or NULL to start from the head |