|
#define | SYS_SFLIST_FOR_EACH_NODE(__sl, __sn) |
| Provide the primitive to iterate on a list Note: the loop is unsafe and thus __sn should not be removed.
|
|
#define | SYS_SFLIST_ITERATE_FROM_NODE(__sl, __sn) |
| 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.
|
|
#define | SYS_SFLIST_FOR_EACH_NODE_SAFE(__sl, __sn, __sns) |
| Provide the primitive to safely iterate on a list Note: __sn can be removed, it will not break the loop.
|
|
#define | SYS_SFLIST_CONTAINER(__ln, __cn, __n) |
| Provide the primitive to resolve the container of a list node Note: it is safe to use with NULL pointer nodes.
|
|
#define | SYS_SFLIST_PEEK_HEAD_CONTAINER(__sl, __cn, __n) |
| Provide the primitive to peek container of the list head.
|
|
#define | SYS_SFLIST_PEEK_TAIL_CONTAINER(__sl, __cn, __n) |
| Provide the primitive to peek container of the list tail.
|
|
#define | SYS_SFLIST_PEEK_NEXT_CONTAINER(__cn, __n) |
| Provide the primitive to peek the next container.
|
|
#define | SYS_SFLIST_FOR_EACH_CONTAINER(__sl, __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.
|
|
#define | SYS_SFLIST_FOR_EACH_CONTAINER_SAFE(__sl, __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.
|
|
#define | SYS_SFLIST_STATIC_INIT(ptr_to_list) |
| Statically initialize a flagged single-linked list.
|
|
#define | SYS_SFLIST_FLAGS_MASK ((uintptr_t)(__alignof__(sys_sfnode_t) - 1)) |
|
|
static void | sys_sflist_init (sys_sflist_t *list) |
| Initialize a list.
|
|
static uint8_t | sys_sfnode_flags_get (sys_sfnode_t *node) |
| Fetch flags value for a particular sfnode.
|
|
static sys_sfnode_t * | sys_sflist_peek_head (sys_sflist_t *list) |
| Peek the first node from the list.
|
|
static sys_sfnode_t * | sys_sflist_peek_tail (sys_sflist_t *list) |
| Peek the last node from the list.
|
|
static void | sys_sfnode_init (sys_sfnode_t *node, uint8_t flags) |
| Initialize an sflist node.
|
|
static void | sys_sfnode_flags_set (sys_sfnode_t *node, uint8_t flags) |
| Set flags value for an sflist node.
|
|
static bool | sys_sflist_is_empty (sys_sflist_t *list) |
| Test if the given list is empty.
|
|
static sys_sfnode_t * | sys_sflist_peek_next_no_check (sys_sfnode_t *node) |
| Peek the next node from current node, node is not NULL.
|
|
static sys_sfnode_t * | sys_sflist_peek_next (sys_sfnode_t *node) |
| Peek the next node from current node.
|
|
static void | sys_sflist_prepend (sys_sflist_t *list, sys_sfnode_t *node) |
| Prepend a node to the given list.
|
|
static void | sys_sflist_append (sys_sflist_t *list, sys_sfnode_t *node) |
| Append a node to the given list.
|
|
static void | sys_sflist_append_list (sys_sflist_t *list, void *head, void *tail) |
| Append a list to the given list.
|
|
static void | sys_sflist_merge_sflist (sys_sflist_t *list, sys_sflist_t *list_to_append) |
| merge two sflists, appending the second one to the first
|
|
static void | sys_sflist_insert (sys_sflist_t *list, sys_sfnode_t *prev, sys_sfnode_t *node) |
| Insert a node to the given list.
|
|
static sys_sfnode_t * | sys_sflist_get_not_empty (sys_sflist_t *list) |
| Fetch and remove the first node of the given list.
|
|
static sys_sfnode_t * | sys_sflist_get (sys_sflist_t *list) |
| Fetch and remove the first node of the given list.
|
|
static void | sys_sflist_remove (sys_sflist_t *list, sys_sfnode_t *prev_node, sys_sfnode_t *node) |
| Remove a node.
|
|
static bool | sys_sflist_find_and_remove (sys_sflist_t *list, sys_sfnode_t *node) |
| Find and remove a node from a list.
|
|
static size_t | sys_sflist_len (sys_sflist_t *list) |
| Compute the size of the given list in O(n) time.
|
|