![]() |
FD.io VPP
v19.08.3-2-gbabecb413
Vector Packet Processing
|
Include dependency graph for llist.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | clib_llist_anchor |
Macros | |||
| #define | CLIB_LLIST_INVALID_INDEX ((u32)~0) | ||
| #define | clib_llist_entry_index(LP, E) ((E) - (LP)) | ||
| Get list entry index. More... | |||
list anchor name | |||
Get next list entry index
| |||
| #define | clib_llist_prev_index(E, name) _lprev(E,name) | ||
| #define | clib_llist_next_index(E, name) _lnext(E,name) | ||
| #define | clib_llist_next(LP, name, E) pool_elt_at_index((LP),_lnext((E),name)) | ||
| Get next pool entry. More... | |||
| #define | clib_llist_prev(LP, name, E) pool_elt_at_index((LP),_lprev((E),name)) | ||
| Get previous pool entry. More... | |||
| #define | clib_llist_anchor_init(LP, name, E) | ||
| Initialize element in llist for entry. More... | |||
| #define | clib_llist_make_head(LP, name) | ||
| Initialize llist head. More... | |||
| #define | clib_llist_is_empty(LP, name, H) (clib_llist_entry_index (LP,H) == (H)->name.next) | ||
| Check is list is empty. More... | |||
| #define | clib_llist_elt_is_linked(E, name) | ||
| Check if element is linked in a list. More... | |||
| #define | clib_llist_insert(LP, name, E, P) | ||
| Insert entry after previous. More... | |||
| #define | clib_llist_add(LP, name, E, H) clib_llist_insert ((LP),name,(E),(H)) | ||
| Add entry after head. More... | |||
| #define | clib_llist_add_tail(LP, name, E, H) | ||
| Add entry after tail. More... | |||
| #define | clib_llist_remove(LP, name, E) | ||
| Remove entry from list. More... | |||
| #define | clib_llist_pop_first(LP, name, E, H) | ||
| Removes and returns the first element in the list. More... | |||
| #define | clib_llist_splice(LP, name, P, H) | ||
| Splice two lists at a given position. More... | |||
| #define | clib_llist_foreach(LP, name, H, E, body) | ||
| Walk list starting at head. More... | |||
| #define | clib_llist_foreach_safe(LP, name, H, E, body) | ||
| Walk list starting at head safe. More... | |||
| #define | clib_llist_foreach_reverse(LP, name, H, E, body) | ||
| Walk list starting at head in reverse order. More... | |||
Typedefs | |
| typedef u32 | clib_llist_index_t |
| typedef struct clib_llist_anchor | clib_llist_anchor_t |
| #define clib_llist_add | ( | LP, | |
| name, | |||
| E, | |||
| H | |||
| ) | clib_llist_insert ((LP),name,(E),(H)) |
| #define clib_llist_add_tail | ( | LP, | |
| name, | |||
| E, | |||
| H | |||
| ) |
Add entry after tail.
| LP | linked list pool |
| name | list anchor name |
| E | new entry |
| H | list head |
| #define clib_llist_anchor_init | ( | LP, | |
| name, | |||
| E | |||
| ) |
Initialize element in llist for entry.
| LP | linked list pool |
| name | list anchor name |
| E | entry whose ll anchor is to be initialized |
| #define clib_llist_elt_is_linked | ( | E, | |
| name | |||
| ) |
Check if element is linked in a list.
| E | list element |
| name | list anchor name |
| #define clib_llist_entry_index | ( | LP, | |
| E | |||
| ) | ((E) - (LP)) |
| #define clib_llist_foreach | ( | LP, | |
| name, | |||
| H, | |||
| E, | |||
| body | |||
| ) |
Walk list starting at head.
| LP | linked list pool |
| name | list anchor name |
| H | head entry |
| E | entry iterator |
| body | code to be executed |
| #define clib_llist_foreach_reverse | ( | LP, | |
| name, | |||
| H, | |||
| E, | |||
| body | |||
| ) |
Walk list starting at head in reverse order.
| LP | linked list pool |
| name | list anchor name |
| H | head entry |
| E | entry iterator |
| body | code to be executed |
| #define clib_llist_foreach_safe | ( | LP, | |
| name, | |||
| H, | |||
| E, | |||
| body | |||
| ) |
Walk list starting at head safe.
| LP | linked list pool |
| name | list anchor name |
| HI | head index |
| EI | entry index iterator |
| body | code to be executed |
Insert entry after previous.
| LP | linked list pool |
| name | list anchor name |
| E | new entry |
| P | previous in list |
| #define clib_llist_is_empty | ( | LP, | |
| name, | |||
| H | |||
| ) | (clib_llist_entry_index (LP,H) == (H)->name.next) |
| #define clib_llist_make_head | ( | LP, | |
| name | |||
| ) |
Initialize llist head.
| LP | linked list pool |
| name | list anchor name |
| #define clib_llist_next | ( | LP, | |
| name, | |||
| E | |||
| ) | pool_elt_at_index((LP),_lnext((E),name)) |
| #define clib_llist_pop_first | ( | LP, | |
| name, | |||
| E, | |||
| H | |||
| ) |
Removes and returns the first element in the list.
The element is not freed. It's the responsability of the caller to free it.
| LP | linked list pool |
| name | list anchor name |
| E | storage the first entry |
| H | list head entry |
| #define clib_llist_prev | ( | LP, | |
| name, | |||
| E | |||
| ) | pool_elt_at_index((LP),_lprev((E),name)) |
| #define clib_llist_remove | ( | LP, | |
| name, | |||
| E | |||
| ) |
Remove entry from list.
| LP | linked list pool |
| name | list anchor name |
| E | entry to be removed |
Splice two lists at a given position.
List spliced into destination list is left with 0 entries, i.e., head is made to point to itself.
| LP | linked list pool |
| name | list anchor name |
| P | position in destination where source list is spliced |
| H | head of source list that will be spliced into destination |
| typedef struct clib_llist_anchor clib_llist_anchor_t |
| typedef u32 clib_llist_index_t |