libosmocore 0.9.6-23.20170220git32ee5af8.fc42
Osmocom core library
|
Simple doubly linked list implementation. More...
#include <stddef.h>
Go to the source code of this file.
Data Structures | |
struct | llist_head |
(double) linked list header structure More... | |
Macros | |
#define | inline __inline__ |
#define | container_of(ptr, type, member) |
cast a member of a structure out to the containing structure | |
#define | LLIST_POISON1 ((void *) 0x00100100) |
#define | LLIST_POISON2 ((void *) 0x00200200) |
#define | LLIST_HEAD_INIT(name) |
#define | LLIST_HEAD(name) |
define a statically-initialized llist_head | |
#define | INIT_LLIST_HEAD(ptr) |
initialize a llist_head to point back to self | |
#define | llist_entry(ptr, type, member) |
Get the struct containing this list entry. | |
#define | llist_for_each(pos, head) |
Iterate over a linked list. | |
#define | __llist_for_each(pos, head) |
Iterate over a llist (no prefetch) | |
#define | llist_for_each_prev(pos, head) |
Iterate over a llist backwards. | |
#define | llist_for_each_safe(pos, n, head) |
Iterate over a list; safe against removal of llist entry. | |
#define | llist_for_each_entry(pos, head, member) |
Iterate over llist of given type. | |
#define | llist_for_each_entry_reverse(pos, head, member) |
Iterate backwards over llist of given type. | |
#define | llist_for_each_entry_continue(pos, head, member) |
iterate over llist of given type continuing after existing point | |
#define | llist_for_each_entry_safe(pos, n, head, member) |
iterate over llist of given type, safe against removal of non-consecutive(!) llist entries | |
#define | llist_for_each_rcu(pos, head) |
#define | __llist_for_each_rcu(pos, head) |
#define | llist_for_each_safe_rcu(pos, n, head) |
#define | llist_for_each_entry_rcu(pos, head, member) |
#define | llist_for_each_continue_rcu(pos, head) |
Functions | |
static void | prefetch (const void *x) |
static void | __llist_add (struct llist_head *_new, struct llist_head *prev, struct llist_head *next) |
Insert a new entry between two known consecutive entries. | |
static void | llist_add (struct llist_head *_new, struct llist_head *head) |
add a new entry into a linked list (at head) | |
static void | llist_add_tail (struct llist_head *_new, struct llist_head *head) |
add a new entry into a linked list (at tail) | |
static void | __llist_del (struct llist_head *prev, struct llist_head *next) |
static void | llist_del (struct llist_head *entry) |
Delete entry from linked list. | |
static void | llist_del_init (struct llist_head *entry) |
Delete entry from linked list and reinitialize it. | |
static void | llist_move (struct llist_head *llist, struct llist_head *head) |
Delete from one llist and add as another's head. | |
static void | llist_move_tail (struct llist_head *llist, struct llist_head *head) |
Delete from one llist and add as another's tail. | |
static int | llist_empty (const struct llist_head *head) |
Test whether a linked list is empty. | |
static void | __llist_splice (struct llist_head *llist, struct llist_head *head) |
static void | llist_splice (struct llist_head *llist, struct llist_head *head) |
Join two llists. | |
static void | llist_splice_init (struct llist_head *llist, struct llist_head *head) |
join two llists and reinitialise the emptied llist. | |
static unsigned int | llist_count (struct llist_head *head) |
count nr of llist items by iterating. | |
Simple doubly linked list implementation.
Some of the internal functions ("__xxx") are useful when manipulating whole llists rather than single entries, as sometimes we already know the next/prev entries and we can generate better code by using them directly rather than using the generic single-entry routines.