VSF Documented
Data Structures | Macros
list.h File Reference
#include <linux/types.h>

Go to the source code of this file.

Data Structures

struct  list_head
 

Macros

#define LIST_HEAD_INIT(__NAME)   { &(__NAME), &(__NAME) }
 
#define LIST_HEAD(__NAME)   struct list_head __NAME = LIST_HEAD_INIT(__NAME)
 
#define list_entry(ptr, type, member)   vsf_container_of(ptr, type, member)
 
#define list_first_entry(ptr, type, member)   list_entry((ptr)->next, type, member)
 
#define list_last_entry(ptr, type, member)   list_entry((ptr)->prev, type, member)
 
#define list_next_entry(pos, member)   list_entry((pos)->member.next, typeof(*(pos)), member)
 
#define list_next_entry_circular(pos, head, member)    (list_is_last(&(pos)->member, head) ? list_first_entry(head, typeof(*(pos)), member) : list_next_entry(pos, member))
 
#define list_prev_entry(pos, member)   list_entry((pos)->member.prev, typeof(*(pos)), member)
 
#define list_prev_entry_circular(pos, head, member)    (list_is_first(&(pos)->member, head) ? list_last_entry(head, typeof(*(pos)), member) : list_prev_entry(pos, member))
 
#define list_first_entry_or_null(ptr, type, member)
 
#define list_entry_is_head(pos, head, member)   (&pos->member == (head))
 
#define list_prepare_entry(pos, head, member)   ((pos) ? : list_entry(head, typeof(*pos), member))
 
#define list_for_each(pos, head)   for (pos = (head)->next; !list_is_head(pos, (head)); pos = pos->next)
 
#define list_for_each_continue(pos, head)   for (pos = pos->next; !list_is_head(pos, (head)); pos = pos->next)
 
#define list_for_each_prev(pos, head)   for (pos = (head)->prev; !list_is_head(pos, (head)); pos = pos->prev)
 
#define list_for_each_safe(pos, n, head)    for (pos = (head)->next, n = pos->next; !list_is_head(pos, (head)); pos = n, n = pos->next)
 
#define list_for_each_prev_safe(pos, n, head)    for (pos = (head)->prev, n = pos->prev; !list_is_head(pos, (head)); pos = n, n = pos->prev)
 
#define list_for_each_entry(pos, head, member)
 
#define list_for_each_entry_reverse(pos, head, member)
 
#define list_for_each_entry_continue(pos, head, member)
 
#define list_for_each_entry_continue_reverse(pos, head, member)
 
#define list_for_each_entry_from(pos, head, member)    for (; !list_entry_is_head(pos, head, member); pos = list_next_entry(pos, member))
 
#define list_for_each_entry_from_reverse(pos, head, member)    for (; !list_entry_is_head(pos, head, member); pos = list_prev_entry(pos, member))
 
#define list_for_each_entry_safe(pos, n, head, member)
 
#define list_for_each_entry_safe_continue(pos, n, head, member)
 
#define list_for_each_entry_safe_from(pos, n, head, member)
 
#define list_for_each_entry_safe_reverse(pos, n, head, member)
 

Macro Definition Documentation

◆ LIST_HEAD_INIT

#define LIST_HEAD_INIT (   __NAME)    { &(__NAME), &(__NAME) }

◆ LIST_HEAD

#define LIST_HEAD (   __NAME)    struct list_head __NAME = LIST_HEAD_INIT(__NAME)

◆ list_entry

#define list_entry (   ptr,
  type,
  member 
)    vsf_container_of(ptr, type, member)

◆ list_first_entry

#define list_first_entry (   ptr,
  type,
  member 
)    list_entry((ptr)->next, type, member)

◆ list_last_entry

#define list_last_entry (   ptr,
  type,
  member 
)    list_entry((ptr)->prev, type, member)

◆ list_next_entry

#define list_next_entry (   pos,
  member 
)    list_entry((pos)->member.next, typeof(*(pos)), member)

◆ list_next_entry_circular

#define list_next_entry_circular (   pos,
  head,
  member 
)     (list_is_last(&(pos)->member, head) ? list_first_entry(head, typeof(*(pos)), member) : list_next_entry(pos, member))

◆ list_prev_entry

#define list_prev_entry (   pos,
  member 
)    list_entry((pos)->member.prev, typeof(*(pos)), member)

◆ list_prev_entry_circular

#define list_prev_entry_circular (   pos,
  head,
  member 
)     (list_is_first(&(pos)->member, head) ? list_last_entry(head, typeof(*(pos)), member) : list_prev_entry(pos, member))

◆ list_first_entry_or_null

#define list_first_entry_or_null (   ptr,
  type,
  member 
)
Value:
({ \
struct list_head *head__ = (ptr); \
struct list_head *pos__ = READ_ONCE(head__->next); \
pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
})
#define NULL
Definition stddef.h:52
#define list_entry(ptr, type, member)
Definition list.h:13
Definition list.h:77
struct list_head * next
Definition list.h:78
vk_av_control_type_t type
Definition vsf_audio.h:170

◆ list_entry_is_head

#define list_entry_is_head (   pos,
  head,
  member 
)    (&pos->member == (head))

◆ list_prepare_entry

#define list_prepare_entry (   pos,
  head,
  member 
)    ((pos) ? : list_entry(head, typeof(*pos), member))

◆ list_for_each

#define list_for_each (   pos,
  head 
)    for (pos = (head)->next; !list_is_head(pos, (head)); pos = pos->next)

◆ list_for_each_continue

#define list_for_each_continue (   pos,
  head 
)    for (pos = pos->next; !list_is_head(pos, (head)); pos = pos->next)

◆ list_for_each_prev

#define list_for_each_prev (   pos,
  head 
)    for (pos = (head)->prev; !list_is_head(pos, (head)); pos = pos->prev)

◆ list_for_each_safe

#define list_for_each_safe (   pos,
  n,
  head 
)     for (pos = (head)->next, n = pos->next; !list_is_head(pos, (head)); pos = n, n = pos->next)

◆ list_for_each_prev_safe

#define list_for_each_prev_safe (   pos,
  n,
  head 
)     for (pos = (head)->prev, n = pos->prev; !list_is_head(pos, (head)); pos = n, n = pos->prev)

◆ list_for_each_entry

#define list_for_each_entry (   pos,
  head,
  member 
)
Value:
for (pos = list_first_entry(head, typeof(*pos), member); \
!list_entry_is_head(pos, head, member); \
pos = list_next_entry(pos, member))
#define list_first_entry(ptr, type, member)
Definition list.h:14
#define list_entry_is_head(pos, head, member)
Definition list.h:27
#define list_next_entry(pos, member)
Definition list.h:16
uint16_t head
Definition vsf_queue.h:632

◆ list_for_each_entry_reverse

#define list_for_each_entry_reverse (   pos,
  head,
  member 
)
Value:
for (pos = list_last_entry(head, typeof(*pos), member); \
!list_entry_is_head(pos, head, member); \
pos = list_prev_entry(pos, member))
#define list_last_entry(ptr, type, member)
Definition list.h:15
#define list_prev_entry(pos, member)
Definition list.h:19

◆ list_for_each_entry_continue

#define list_for_each_entry_continue (   pos,
  head,
  member 
)
Value:
for (pos = list_next_entry(pos, member); \
!list_entry_is_head(pos, head, member); \
pos = list_next_entry(pos, member))

◆ list_for_each_entry_continue_reverse

#define list_for_each_entry_continue_reverse (   pos,
  head,
  member 
)
Value:
for (pos = list_prev_entry(pos, member); \
!list_entry_is_head(pos, head, member); \
pos = list_prev_entry(pos, member))

◆ list_for_each_entry_from

#define list_for_each_entry_from (   pos,
  head,
  member 
)     for (; !list_entry_is_head(pos, head, member); pos = list_next_entry(pos, member))

◆ list_for_each_entry_from_reverse

#define list_for_each_entry_from_reverse (   pos,
  head,
  member 
)     for (; !list_entry_is_head(pos, head, member); pos = list_prev_entry(pos, member))

◆ list_for_each_entry_safe

#define list_for_each_entry_safe (   pos,
  n,
  head,
  member 
)
Value:
for (pos = list_first_entry(head, typeof(*pos), member), \
n = list_next_entry(pos, member); \
!list_entry_is_head(pos, head, member); \
pos = n, n = list_next_entry(n, member))

◆ list_for_each_entry_safe_continue

#define list_for_each_entry_safe_continue (   pos,
  n,
  head,
  member 
)
Value:
for (pos = list_next_entry(pos, member), n = list_next_entry(pos, member); \
!list_entry_is_head(pos, head, member); \
pos = n, n = list_next_entry(n, member))

◆ list_for_each_entry_safe_from

#define list_for_each_entry_safe_from (   pos,
  n,
  head,
  member 
)
Value:
for (n = list_next_entry(pos, member); \
!list_entry_is_head(pos, head, member); \
pos = n, n = list_next_entry(n, member))

◆ list_for_each_entry_safe_reverse

#define list_for_each_entry_safe_reverse (   pos,
  n,
  head,
  member 
)
Value:
for (pos = list_last_entry(head, typeof(*pos), member), \
n = list_prev_entry(pos, member); \
!list_entry_is_head(pos, head, member); \
pos = n, n = list_prev_entry(n, member))