Sound Open Firmware
Loading...
Searching...
No Matches
list.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  list_item
 

Macros

#define LIST_INIT(head)   {&head, &head}
 
#define list_is_empty(item)    ((item)->next == item)
 
#define __list_object(item, type, offset)    ((type *)((char *)(item) - (offset)))
 
#define list_item(item, type, member)    __list_object(item, type, offsetof(type, member))
 
#define list_first_item(list, type, member)    __list_object((list)->next, type, offsetof(type, member))
 
#define list_next_item(object, member)    list_item((object)->member.next, __typeof__(*(object)), member)
 
#define list_for_item(item, list)    for (item = (list)->next; item != (list); item = item->next)
 
#define list_for_item_prev(item, list)    for (item = (list)->prev; item != (list); item = item->prev)
 
#define list_for_item_safe(item, tmp, list)
 

Functions

static void list_init (struct list_item *list)
 
static void list_item_prepend (struct list_item *item, struct list_item *list)
 
static void list_item_append (struct list_item *item, struct list_item *list)
 
static void list_item_del (struct list_item *item)
 
static int list_item_is_last (struct list_item *item, struct list_item *list)
 
static void list_relink (struct list_item *new_list, struct list_item *old_list)
 Re-links the list when head address changed (list moved).
 

Macro Definition Documentation

◆ __list_object

#define __list_object (   item,
  type,
  offset 
)     ((type *)((char *)(item) - (offset)))

◆ list_first_item

#define list_first_item (   list,
  type,
  member 
)     __list_object((list)->next, type, offsetof(type, member))

◆ list_for_item

#define list_for_item (   item,
  list 
)     for (item = (list)->next; item != (list); item = item->next)

◆ list_for_item_prev

#define list_for_item_prev (   item,
  list 
)     for (item = (list)->prev; item != (list); item = item->prev)

◆ list_for_item_safe

#define list_for_item_safe (   item,
  tmp,
  list 
)
Value:
for (item = (list)->next, tmp = item->next;\
item != (list); \
item = tmp, tmp = item->next)

◆ LIST_INIT

#define LIST_INIT (   head)    {&head, &head}

◆ list_is_empty

#define list_is_empty (   item)     ((item)->next == item)

◆ list_item

#define list_item (   item,
  type,
  member 
)     __list_object(item, type, offsetof(type, member))

◆ list_next_item

#define list_next_item (   object,
  member 
)     list_item((object)->member.next, __typeof__(*(object)), member)

Function Documentation

◆ list_init()

static void list_init ( struct list_item *  list)
inlinestatic

◆ list_item_append()

static void list_item_append ( struct list_item *  item,
struct list_item *  list 
)
inlinestatic

◆ list_item_del()

static void list_item_del ( struct list_item *  item)
inlinestatic

◆ list_item_is_last()

static int list_item_is_last ( struct list_item *  item,
struct list_item *  list 
)
inlinestatic

◆ list_item_prepend()

static void list_item_prepend ( struct list_item *  item,
struct list_item *  list 
)
inlinestatic

◆ list_relink()

static void list_relink ( struct list_item *  new_list,
struct list_item *  old_list 
)
inlinestatic

Re-links the list when head address changed (list moved).

Parameters
new_listNew address of the head.
old_listOld address of the head.