Provided by: libqb-dev_0.17.2.real-6ubuntu1_amd64 bug

NAME

       qblist.h - This is a kernel style list implementation.

SYNOPSIS

       #include <stdint.h>
       #include <qb/qbdefs.h>

   Data Structures
       struct qb_list_head

   Macros
       #define QB_LIST_DECLARE(name)   struct qb_list_head name = { &(name), &(name) }
           Declare and initialize a list head.
       #define QB_INIT_LIST_HEAD(ptr)
       #define qb_list_entry(ptr,  type,  member)   ((type *)((char *)(ptr)-(char*)(&((type
           *)0)->member)))
           Get the struct for this entry.
       #define qb_list_first_entry(ptr,  type,  member)   qb_list_entry((ptr)->next, type,
           member)
           Get the first element from a list.
       #define qb_list_for_each(pos,  head)   for (pos = (head)->next; pos != (head); pos =
           pos->next)
           Iterate over a list.
       #define qb_list_for_each_reverse(pos,  head)   for (pos = (head)->prev; pos != (head); pos
           = pos->prev)
           Iterate over a list backwards.
       #define qb_list_for_each_safe(pos,  n,  head)
           Iterate over a list safe against removal of list entry.
       #define qb_list_for_each_entry(pos,  head,  member)
           Iterate over list of given type.
       #define qb_list_for_each_entry_reverse(pos,  head,  member)
           Iterate backwards over list of given type.
       #define qb_list_for_each_entry_safe(pos,  n,  head,  member)
           Iterate over list of given type safe against removal of list entry.
       #define qb_list_for_each_entry_safe_reverse(pos,  n,  head,  member)
           Iterate backwards over list safe against removal.
       #define qb_list_for_each_entry_from(pos,  head,  member)
           Iterate over list of given type from the current point.

   Functions
       static void qb_list_init (struct qb_list_head *head)
           Initialize the list entry.
       static void qb_list_add (struct qb_list_head *element, struct qb_list_head *head)
           Add this element to the list.
       static void qb_list_add_tail (struct qb_list_head *element, struct qb_list_head *head)
           Add to the list (but at the end of the list).
       static void qb_list_del (struct qb_list_head *_remove)
           Delete an entry from the list.
       static void qb_list_replace (struct qb_list_head *old, struct qb_list_head *new)
           Replace old entry by new one.
       static int qb_list_is_last (const struct qb_list_head *list, const struct qb_list_head
           *head)
           Tests whether list is the last entry in list head.
       static int32_t qb_list_empty (const struct qb_list_head *head)
           A quick test to see if the list is empty (pointing to it's self).
       static void qb_list_splice (struct qb_list_head *list, struct qb_list_head *head)
           Join two lists.
       static void qb_list_splice_tail (struct qb_list_head *list, struct qb_list_head *head)
           Join two lists, each list being a queue.
       static int32_t qb_list_length (struct qb_list_head *head)
           Count the number of items in the list.

Detailed Description

       This is a kernel style list implementation.

       Author:
           Steven Dake sdake@redhat.com

Macro Definition Documentation

   #define QB_INIT_LIST_HEAD(ptr)
       Value:

       do {         (ptr)->next = (ptr); (ptr)->prev = (ptr); } while (0)

   #define QB_LIST_DECLARE(name)   struct qb_list_head name = { &(name), &(name) }
       Declare and initialize a list head.

   #define qb_list_entry(ptr, type, member)   ((type *)((char *)(ptr)-(char*)(&((type
       *)0)->member)))
       Get the struct for this entry.

       Parameters:
           ptr the &struct list_head pointer.
           type the type of the struct this is embedded in.
           member the name of the list_struct within the struct.

   #define qb_list_first_entry(ptr, type, member)   qb_list_entry((ptr)->next, type, member)
       Get the first element from a list.

       Parameters:
           ptr the &struct list_head pointer.
           type the type of the struct this is embedded in.
           member the name of the list_struct within the struct.

   #define qb_list_for_each(pos, head)   for (pos = (head)->next; pos != (head); pos = pos->next)
       Iterate over a list.

       Parameters:
           pos the &struct list_head to use as a loop counter.
           head the head for your list.

       Referenced by qb_list_length().

   #define qb_list_for_each_entry(pos, head, member)
       Value:

       for (pos = qb_list_entry((head)->next, typeof(*pos), member);               &pos->member != (head);                                                 pos = qb_list_entry(pos->member.next, typeof(*pos), member))

       Iterate over list of given type.

       Parameters:
           pos the type * to use as a loop counter.
           head the head for your list.
           member the name of the list_struct within the struct.

   #define qb_list_for_each_entry_from(pos, head, member)
       Value:

       for (; &pos->member != (head);                                                         pos = qb_list_entry(pos->member.next, typeof(*pos), member))

       Iterate over list of given type from the current point.

       Parameters:
           pos the type * to use as a loop cursor.
           head the head for your list.
           member the name of the list_struct within the struct.

   #define qb_list_for_each_entry_reverse(pos, head, member)
       Value:

       for (pos = qb_list_entry((head)->prev, typeof(*pos), member);               &pos->member != (head);                                                 pos = qb_list_entry(pos->member.prev, typeof(*pos), member))

       Iterate backwards over list of given type.

       Parameters:
           pos the type to use as a loop counter.
           head the head for your list.
           member the name of the list_struct within the struct.

   #define qb_list_for_each_entry_safe(pos, n, head, member)
       Value:

       for (pos = qb_list_entry((head)->next, typeof(*pos), member),                          n = qb_list_entry(pos->member.next, typeof(*pos), member);                    &pos->member != (head);                                                         pos = n, n = qb_list_entry(n->member.next, typeof(*n), member))

       Iterate over list of given type safe against removal of list entry.

       Parameters:
           pos the type * to use as a loop cursor.
           n another type * to use as temporary storage
           head the head for your list.
           member the name of the list_struct within the struct.

   #define qb_list_for_each_entry_safe_reverse(pos, n, head, member)
       Value:

       for (pos = qb_list_entry((head)->prev, typeof(*pos), member),                          n = qb_list_entry(pos->member.prev, typeof(*pos), member);                    &pos->member != (head);                                                         pos = n, n = qb_list_entry(n->member.prev, typeof(*n), member))

       Iterate backwards over list safe against removal.

       Parameters:
           pos the type * to use as a loop cursor.
           n another type * to use as temporary storage
           head the head for your list.
           member the name of the list_struct within the struct.

   #define qb_list_for_each_reverse(pos, head)   for (pos = (head)->prev; pos != (head); pos =
       pos->prev)
       Iterate over a list backwards.

       Parameters:
           pos the &struct list_head to use as a loop counter.
           head the head for your list.

   #define qb_list_for_each_safe(pos, n, head)
       Value:

       for (pos = (head)->next, n = pos->next; pos != (head);                 pos = n, n = pos->next)

       Iterate over a list safe against removal of list entry.

       Parameters:
           pos the &struct list_head to use as a loop counter.
           n another &struct list_head to use as temporary storage
           head the head for your list.

Function Documentation

   static void qb_list_add (struct qb_list_head * element, struct qb_list_head * head) [inline],
       [static]
       Add this element to the list.

       Parameters:
           element the new element to insert.
           head pointer to the list head

       References qb_list_head::next, and qb_list_head::prev.

   static void qb_list_add_tail (struct qb_list_head * element, struct qb_list_head * head)
       [inline],  [static]
       Add to the list (but at the end of the list).

       Parameters:
           element pointer to the element to add
           head pointer to the list head

       See also:
           qb_list_add()

       References qb_list_head::next, and qb_list_head::prev.

   static void qb_list_del (struct qb_list_head * _remove) [inline],  [static]
       Delete an entry from the list.

       Parameters:
           _remove the list item to remove

       References qb_list_head::next, and qb_list_head::prev.

   static int32_t qb_list_empty (const struct qb_list_head * head) [inline],  [static]
       A quick test to see if the list is empty (pointing to it's self).

       Parameters:
           head pointer to the list head

       Returns:
           boolean true/false

       References qb_list_head::next.

       Referenced by qb_list_splice(), and qb_list_splice_tail().

   static void qb_list_init (struct qb_list_head * head) [inline],  [static]
       Initialize the list entry. Points next and prev pointers to head.

       Parameters:
           head pointer to the list head

       References qb_list_head::next, and qb_list_head::prev.

   static int qb_list_is_last (const struct qb_list_head * list, const struct qb_list_head *
       head) [inline],  [static]
       Tests whether list is the last entry in list head.

       Parameters:
           list the entry to test
           head the head of the list

       Returns:
           boolean true/false

       References qb_list_head::next.

   static int32_t qb_list_length (struct qb_list_head * head) [inline],  [static]
       Count the number of items in the list.

       Parameters:
           head the head for your list.

       Returns:
           length of the list.

       References qb_list_for_each.

   static void qb_list_replace (struct qb_list_head * old, struct qb_list_head * new) [inline],
       [static]
       Replace old entry by new one.

       Parameters:
           old the element to be replaced
           new the new element to insert

       References qb_list_head::next, and qb_list_head::prev.

   static void qb_list_splice (struct qb_list_head * list, struct qb_list_head * head) [inline],
       [static]
       Join two lists.

       Parameters:
           list the new list to add.
           head the place to add it in the first list.

       Note:
           The 'list' is reinitialised

       References qb_list_head::next, qb_list_head::prev, and qb_list_empty().

   static void qb_list_splice_tail (struct qb_list_head * list, struct qb_list_head * head)
       [inline],  [static]
       Join two lists, each list being a queue.

       Parameters:
           list the new list to add.
           head the place to add it in the first list.

       References qb_list_head::next, qb_list_head::prev, and qb_list_empty().

Author

       Generated automatically by Doxygen for libqb from the source code.