The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/tools/firewire/list.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 struct list {
    2         struct list *next, *prev;
    3 };
    4 
    5 static inline void
    6 list_init(struct list *list)
    7 {
    8         list->next = list;
    9         list->prev = list;
   10 }
   11 
   12 static inline int
   13 list_empty(struct list *list)
   14 {
   15         return list->next == list;
   16 }
   17 
   18 static inline void
   19 list_insert(struct list *link, struct list *new_link)
   20 {
   21         new_link->prev          = link->prev;
   22         new_link->next          = link;
   23         new_link->prev->next    = new_link;
   24         new_link->next->prev    = new_link;
   25 }
   26 
   27 static inline void
   28 list_append(struct list *list, struct list *new_link)
   29 {
   30         list_insert((struct list *)list, new_link);
   31 }
   32 
   33 static inline void
   34 list_prepend(struct list *list, struct list *new_link)
   35 {
   36         list_insert(list->next, new_link);
   37 }
   38 
   39 static inline void
   40 list_remove(struct list *link)
   41 {
   42         link->prev->next = link->next;
   43         link->next->prev = link->prev;
   44 }
   45 
   46 #define list_entry(link, type, member) \
   47         ((type *)((char *)(link)-(unsigned long)(&((type *)0)->member)))
   48 
   49 #define list_head(list, type, member)           \
   50         list_entry((list)->next, type, member)
   51 
   52 #define list_tail(list, type, member)           \
   53         list_entry((list)->prev, type, member)
   54 
   55 #define list_next(elm, member)                                  \
   56         list_entry((elm)->member.next, typeof(*elm), member)
   57 
   58 #define list_for_each_entry(pos, list, member)                  \
   59         for (pos = list_head(list, typeof(*pos), member);       \
   60              &pos->member != (list);                            \
   61              pos = list_next(pos, member))
   62 

Cache object: 1e23159afb6794527b15f605858dcae4


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.