Embedded Artistry Framework
Embedded Systems C++ Framework
Classes | Macros | Typedefs
ll.h File Reference
#include <stdint.h>
#include <stdlib.h>
Include dependency graph for ll.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  ll_head
 Linked list struct. More...
 

Macros

#define container_of(ptr, type, member)   ((type*)((uintptr_t)(ptr)-offsetof(type, member)))
 Define offsetof if we don't have it already. More...
 
Get Containers
#define list_entry(ptr, type, member)   container_of(ptr, type, member)
 Get the container for a list entry. More...
 
#define list_first_entry(head, type, member)   list_entry((head)->next, type, member)
 Get the container for the first item in the list. More...
 
Foreach Operations
#define list_for_each(pos, head)   for(pos = (head)->next; pos != (head); pos = pos->next)
 Declare a foreach loop which iterates over the list. More...
 
#define list_for_each_safe(pos, n, head)   for(pos = (head)->next, n = pos->next; pos != (head); pos = n, n = pos->next)
 Declare a foreach loop which iterates over the list, copy current node pointer. More...
 
#define list_for_each_entry(pos, head, member)
 Declare a for loop which operates on each node in the list using the container value. More...
 
#define list_for_each_entry_safe(pos, n, head, member)
 Declare a for loop which operates on each node in the list using a copy of the container value. More...
 
Initialization
#define ll_head_INIT(name)
 Initialize a linked list so it points to itself. More...
 
#define LIST_INIT(name)   struct ll_head name = ll_head_INIT(name)
 Initialize a linked list. More...
 

Typedefs

typedef struct ll_head ll_t
 Linked list struct. More...
 

Functions

Addition
static void list_insert (struct ll_head *n, struct ll_head *prev, struct ll_head *next)
 Insert a new element between two existing elements. More...
 
static void list_add (struct ll_head *n, struct ll_head *head)
 Add a node to the front of the list. More...
 
static void list_add_tail (struct ll_head *n, struct ll_head *head)
 Add a node to the end of the list. More...
 
Deletion
static void list_join_nodes (struct ll_head *prev, struct ll_head *next)
 Remove the node between two element pointers. More...
 
static void list_del (struct ll_head *entry)
 Remove an entry from the list. More...