25 typedef struct list list_t;
53#define list_item_set_owner(p_list_item, p_owner) ((p_list_item)->owner_ptr = (void *)(p_owner))
54#define list_item_get_owner(p_list_item) ((p_list_item)->owner_ptr)
55#define list_item_set_value(p_list_item, val) ((p_list_item)->value = (uint32_t)(val))
56#define list_item_get_value(p_list_item) ((p_list_item)->value)
57#define list_item_get_list_contain(p_list_item) ((p_list_item)->list_ptr)
59#define list_get_head_item_value(p_list) ((((p_list)->end_item).next_ptr)->value)
60#define list_get_head_item(p_list) (((p_list)->end_item).next_ptr)
61#define list_get_owner_of_head_item(p_list) (list_item_get_owner(((p_list)->end_item).next_ptr))
62#define list_get_end_item(p_list) ((p_list)->end_item)
63#define list_get_num_item(p_list) (((p_list)->num_of_items))
64#define list_is_empty(p_list) (((p_list)->num_of_items == (uint8_t)0) ? OS_TRUE : OS_FALSE)
111 void akos_list_insert(list_t *
const p_list, list_item_t *
const p_list_item);
Kernel control and critical-section API.
void akos_list_item_init(list_item_t *const p_list_item)
Initialize list item linkage and ownership metadata.
void akos_list_init(list_t *const p_list)
Initialize list metadata and sentinel.
void * akos_list_get_owner_of_next_item(list_t *const p_list)
Get owner of next item and advance list cursor.
void akos_list_insert(list_t *const p_list, list_item_t *const p_list_item)
Insert item in ascending order by list_item::value.
void akos_list_insert_end(list_t *const p_list, list_item_t *const p_list_item)
Insert item at list tail.
list_item_t * akos_list_item_get_prev(list_item_t *p_list_item)
Get previous list item.
uint16_t akos_list_remove(list_item_t *const p_list_item)
Remove item from containing list.
list_item_t * akos_list_item_get_next(list_item_t *p_list_item)
Get next list item.
Doubly-linked list node used by scheduler/timer lists.
struct list_item * next_ptr
struct list_item * prev_ptr
Doubly-linked list metadata with end sentinel.
struct list_item * curr_item_ptr
struct list_item end_item