Provided by: libqb-dev_1.0.1-1ubuntu1_amd64
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.