#include "asterisk/lock.h"


Go to the source code of this file.
Defines | |
| #define | AST_DLLIST_APPEND_DLLIST(head, list, field) |
| Appends a whole list to the tail of a list. | |
| #define | AST_DLLIST_EMPTY(head) (AST_DLLIST_FIRST(head) == NULL) |
| Checks whether the specified list contains any entries. | |
| #define | AST_DLLIST_ENTRY(type) AST_DLLIST_HEAD_NOLOCK(, type) |
| Declare previous/forward links inside a list entry. | |
| #define | AST_DLLIST_FIRST(head) ((head)->first) |
| Returns the first entry contained in a list. | |
| #define | AST_DLLIST_HEAD(name, type) |
| Defines a structure to be used to hold a list of specified type. | |
| #define | AST_DLLIST_HEAD_DESTROY(head) |
| Destroys a list head structure. | |
| #define | AST_DLLIST_HEAD_INIT(head) |
| Initializes a list head structure. | |
| #define | AST_DLLIST_HEAD_INIT_NOLOCK(head) |
| Initializes a list head structure. | |
| #define | AST_DLLIST_HEAD_INIT_VALUE |
| Defines initial values for a declaration of AST_DLLIST_HEAD. | |
| #define | AST_DLLIST_HEAD_NOLOCK(name, type) |
| Defines a structure to be used to hold a list of specified type (with no lock). | |
| #define | AST_DLLIST_HEAD_NOLOCK_INIT_VALUE |
| Defines initial values for a declaration of AST_DLLIST_HEAD_NOLOCK. | |
| #define | AST_DLLIST_HEAD_NOLOCK_STATIC(name, type) |
| Defines a structure to be used to hold a list of specified type, statically initialized. | |
| #define | AST_DLLIST_HEAD_SET(head, entry) |
| Initializes a list head structure with a specified first entry. | |
| #define | AST_DLLIST_HEAD_SET_NOLOCK(head, entry) |
| Initializes a list head structure with a specified first entry. | |
| #define | AST_DLLIST_HEAD_STATIC(name, type) |
| Defines a structure to be used to hold a list of specified type, statically initialized. | |
| #define | AST_DLLIST_INSERT_AFTER(head, listelm, elm, field) |
| Inserts a list entry after a given entry. | |
| #define | AST_DLLIST_INSERT_AFTER_CURRENT(elm, field) |
| Inserts a list node after the current node during a traversal. | |
| #define | AST_DLLIST_INSERT_BEFORE(head, listelm, elm, field) |
| Inserts a list entry before a given entry. | |
| #define | AST_DLLIST_INSERT_BEFORE_CURRENT(elm, field) |
| Inserts a list node before the current node during a traversal. | |
| #define | AST_DLLIST_INSERT_BEFORE_CURRENT_BACKWARDS(elm, field) AST_DLLIST_INSERT_AFTER_CURRENT(elm, field) |
| Inserts a list entry after the current entry during a backwards traversal. Since this is a backwards traversal, this will insert the entry AFTER the current element. Since this is a backwards traveral, though, this would be BEFORE the current entry in traversal order. Confusing? | |
| #define | AST_DLLIST_INSERT_HEAD(head, elm, field) |
| Inserts a list entry at the head of a list. | |
| #define | AST_DLLIST_INSERT_TAIL(head, elm, field) |
| Appends a list entry to the tail of a list. | |
| #define | AST_DLLIST_IS_MEMBER(head, elm, field) |
| Checks whether the specified list contains the element. | |
| #define | AST_DLLIST_LAST(head) ((head)->last) |
| Returns the last entry contained in a list. | |
| #define | AST_DLLIST_LOCK(head) ast_mutex_lock(&(head)->lock) |
| Locks a list. | |
| #define | AST_DLLIST_MOVE_CURRENT(newhead, field) |
| Move the current list entry to another list at the tail. | |
| #define | AST_DLLIST_MOVE_CURRENT_BACKWARDS(newhead, field) |
| Move the current list entry to another list at the head. | |
| #define | AST_DLLIST_NEXT(elm, field) AST_DLLIST_NEXT_DIRECTION(elm, field, first) |
| Returns the next entry in the list after the given entry. | |
| #define | AST_DLLIST_NEXT_DIRECTION(elm, field, direction) ((elm)->field.direction) |
| #define | AST_DLLIST_PREV(elm, field) AST_DLLIST_NEXT_DIRECTION(elm, field, last) |
| Returns the previous entry in the list before the given entry. | |
| #define | AST_DLLIST_REMOVE(head, elm, field) |
| Removes a specific entry from a list. | |
| #define | AST_DLLIST_REMOVE_CURRENT(field) |
| Removes the current entry from a list during a traversal. | |
| #define | AST_DLLIST_REMOVE_HEAD(head, field) |
| Removes and returns the head entry from a list. | |
| #define | AST_DLLIST_REMOVE_TAIL(head, field) |
| Removes and returns the tail node from a list. | |
| #define | AST_DLLIST_REMOVE_VERIFY(head, elm, field) |
| Removes a specific node from a list if it is in the list. | |
| #define | AST_DLLIST_TRAVERSE(head, var, field) AST_DLLIST_TRAVERSE_DIRECTION(head, var, field, first) |
| Loops over (traverses) the entries in a list. | |
| #define | AST_DLLIST_TRAVERSE_BACKWARDS(head, var, field) AST_DLLIST_TRAVERSE_DIRECTION(head, var, field, last) |
| Loops over (traverses) the entries in a list in reverse order, starting at the end. | |
| #define | AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_BEGIN(head, var, field) AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN(head, var, field, last) |
| Loops safely over (traverses) the entries in a list. | |
| #define | AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_END AST_DLLIST_TRAVERSE_DIRECTION_SAFE_END |
| Closes a safe loop traversal block. | |
| #define | AST_DLLIST_TRAVERSE_DIRECTION(head, var, field, start) for ((var) = (head)->start; (var); (var) = AST_DLLIST_NEXT_DIRECTION(var, field, start)) |
| Traverse a doublly linked list using the specified direction list. | |
| #define | AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN(head, var, field, start) |
| Safe traversal of a doublly linked list using the specified direction list. | |
| #define | AST_DLLIST_TRAVERSE_DIRECTION_SAFE_END } while (0) |
| #define | AST_DLLIST_TRAVERSE_SAFE_BEGIN(head, var, field) AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN(head, var, field, first) |
| Loops safely over (traverses) the entries in a list. | |
| #define | AST_DLLIST_TRAVERSE_SAFE_END AST_DLLIST_TRAVERSE_DIRECTION_SAFE_END |
| Closes a safe loop traversal block. | |
| #define | AST_DLLIST_TRYLOCK(head) ast_mutex_trylock(&(head)->lock) |
| Locks a list, without blocking if the list is locked. | |
| #define | AST_DLLIST_UNLOCK(head) ast_mutex_unlock(&(head)->lock) |
| Attempts to unlock a list. | |
| #define | AST_RWDLLIST_APPEND_DLLIST AST_DLLIST_APPEND_DLLIST |
| #define | AST_RWDLLIST_EMPTY AST_DLLIST_EMPTY |
| #define | AST_RWDLLIST_ENTRY AST_DLLIST_ENTRY |
| #define | AST_RWDLLIST_FIRST AST_DLLIST_FIRST |
| #define | AST_RWDLLIST_HEAD(name, type) |
| Defines a structure to be used to hold a read/write list of specified type. | |
| #define | AST_RWDLLIST_HEAD_DESTROY(head) |
| Destroys an rwlist head structure. | |
| #define | AST_RWDLLIST_HEAD_INIT(head) |
| Initializes an rwlist head structure. | |
| #define | AST_RWDLLIST_HEAD_INIT_VALUE |
| Defines initial values for a declaration of AST_RWDLLIST_HEAD. | |
| #define | AST_RWDLLIST_HEAD_SET(head, entry) |
| Initializes an rwlist head structure with a specified first entry. | |
| #define | AST_RWDLLIST_HEAD_STATIC(name, type) |
| Defines a structure to be used to hold a read/write list of specified type, statically initialized. | |
| #define | AST_RWDLLIST_INSERT_AFTER AST_DLLIST_INSERT_AFTER |
| #define | AST_RWDLLIST_INSERT_AFTER_CURRENT AST_DLLIST_INSERT_AFTER_CURRENT |
| #define | AST_RWDLLIST_INSERT_BEFORE AST_DLLIST_INSERT_BEFORE |
| #define | AST_RWDLLIST_INSERT_BEFORE_CURRENT AST_DLLIST_INSERT_BEFORE_CURRENT |
| #define | AST_RWDLLIST_INSERT_BEFORE_CURRENT_BACKWARDS AST_DLLIST_INSERT_BEFORE_CURRENT_BACKWARDS |
| #define | AST_RWDLLIST_INSERT_HEAD AST_DLLIST_INSERT_HEAD |
| #define | AST_RWDLLIST_INSERT_TAIL AST_DLLIST_INSERT_TAIL |
| #define | AST_RWDLLIST_IS_MEMBER AST_DLLIST_IS_MEMBER |
| #define | AST_RWDLLIST_LAST AST_DLLIST_LAST |
| #define | AST_RWDLLIST_MOVE_CURRENT AST_DLLIST_MOVE_CURRENT |
| #define | AST_RWDLLIST_MOVE_CURRENT_BACKWARDS AST_DLLIST_MOVE_CURRENT_BACKWARDS |
| #define | AST_RWDLLIST_NEXT AST_DLLIST_NEXT |
| #define | AST_RWDLLIST_NEXT_DIRECTION AST_DLLIST_NEXT_DIRECTION |
| #define | AST_RWDLLIST_PREV AST_DLLIST_PREV |
| #define | AST_RWDLLIST_RDLOCK(head) ast_rwlock_rdlock(&(head)->lock) |
| Read locks a list. | |
| #define | AST_RWDLLIST_REMOVE AST_DLLIST_REMOVE |
| #define | AST_RWDLLIST_REMOVE_CURRENT AST_DLLIST_REMOVE_CURRENT |
| #define | AST_RWDLLIST_REMOVE_HEAD AST_DLLIST_REMOVE_HEAD |
| #define | AST_RWDLLIST_REMOVE_TAIL AST_DLLIST_REMOVE_TAIL |
| #define | AST_RWDLLIST_REMOVE_VERIFY AST_DLLIST_REMOVE_VERIFY |
| #define | AST_RWDLLIST_TRAVERSE AST_DLLIST_TRAVERSE |
| #define | AST_RWDLLIST_TRAVERSE_BACKWARDS AST_DLLIST_TRAVERSE_BACKWARDS |
| #define | AST_RWDLLIST_TRAVERSE_BACKWARDS_SAFE_BEGIN AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_BEGIN |
| #define | AST_RWDLLIST_TRAVERSE_BACKWARDS_SAFE_END AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_END |
| #define | AST_RWDLLIST_TRAVERSE_DIRECTION AST_DLLIST_TRAVERSE_DIRECTION |
| #define | AST_RWDLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN |
| #define | AST_RWDLLIST_TRAVERSE_DIRECTION_SAFE_END AST_DLLIST_TRAVERSE_DIRECTION_SAFE_END |
| #define | AST_RWDLLIST_TRAVERSE_SAFE_BEGIN AST_DLLIST_TRAVERSE_SAFE_BEGIN |
| #define | AST_RWDLLIST_TRAVERSE_SAFE_END AST_DLLIST_TRAVERSE_SAFE_END |
| #define | AST_RWDLLIST_TRYRDLOCK(head) ast_rwlock_tryrdlock(&(head)->lock) |
| Read locks a list, without blocking if the list is locked. | |
| #define | AST_RWDLLIST_TRYWRLOCK(head) ast_rwlock_trywrlock(&(head)->lock) |
| Write locks a list, without blocking if the list is locked. | |
| #define | AST_RWDLLIST_UNLOCK(head) ast_rwlock_unlock(&(head)->lock) |
| Attempts to unlock a read/write based list. | |
| #define | AST_RWDLLIST_WRLOCK(head) ast_rwlock_wrlock(&(head)->lock) |
| Write locks a list. | |
Definition in file dlinkedlists.h.
| #define AST_DLLIST_APPEND_DLLIST | ( | head, | |||
| list, | |||||
| field | ) |
Appends a whole list to the tail of a list.
| head | This is a pointer to the list head structure | |
| list | This is a pointer to the list to be appended. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 1115 of file dlinkedlists.h.
| #define AST_DLLIST_EMPTY | ( | head | ) | (AST_DLLIST_FIRST(head) == NULL) |
Checks whether the specified list contains any entries.
| head | This is a pointer to the list head structure |
zero if not.
Definition at line 468 of file dlinkedlists.h.
Declare previous/forward links inside a list entry.
| type | This is the type of each list entry. |
struct list_entry { ... AST_DLLIST_ENTRY(list_entry) list; }
The field name list here is arbitrary, and can be anything you wish.
Definition at line 412 of file dlinkedlists.h.
| #define AST_DLLIST_FIRST | ( | head | ) | ((head)->first) |
Returns the first entry contained in a list.
| head | This is a pointer to the list head structure |
Definition at line 421 of file dlinkedlists.h.
Value:
Defines a structure to be used to hold a list of specified type.
| name | This will be the name of the defined structure. | |
| type | This is the type of each list entry. |
Example usage:
static AST_DLLIST_HEAD(entry_list, entry) entries;
This would define struct entry_list, and declare an instance of it named entries, all intended to hold a list of type struct entry.
Definition at line 157 of file dlinkedlists.h.
| #define AST_DLLIST_HEAD_DESTROY | ( | head | ) |
Value:
{ \
(head)->first = NULL; \
(head)->last = NULL; \
ast_mutex_destroy(&(head)->lock); \
}
| head | This is a pointer to the list head structure |
Definition at line 963 of file dlinkedlists.h.
| #define AST_DLLIST_HEAD_INIT | ( | head | ) |
Value:
{ \
(head)->first = NULL; \
(head)->last = NULL; \
ast_mutex_init(&(head)->lock); \
}
| head | This is a pointer to the list head structure |
Definition at line 932 of file dlinkedlists.h.
| #define AST_DLLIST_HEAD_INIT_NOLOCK | ( | head | ) |
Value:
Initializes a list head structure.
| head | This is a pointer to the list head structure |
Definition at line 995 of file dlinkedlists.h.
| #define AST_DLLIST_HEAD_INIT_VALUE |
Value:
{ \
.first = NULL, \
.last = NULL, \
.lock = AST_MUTEX_INIT_VALUE, \
}
Definition at line 221 of file dlinkedlists.h.
Value:
Defines a structure to be used to hold a list of specified type (with no lock).
| name | This will be the name of the defined structure. | |
| type | This is the type of each list entry. |
Example usage:
static AST_DLLIST_HEAD_NOLOCK(entry_list, entry) entries;
This would define struct entry_list, and declare an instance of it named entries, all intended to hold a list of type struct entry.
Definition at line 211 of file dlinkedlists.h.
| #define AST_DLLIST_HEAD_NOLOCK_INIT_VALUE |
Value:
{ \
.first = NULL, \
.last = NULL, \
}
Definition at line 243 of file dlinkedlists.h.
Value:
struct name { \ struct type *first; \ struct type *last; \ } name = AST_DLLIST_HEAD_NOLOCK_INIT_VALUE
This is the same as AST_DLLIST_HEAD_STATIC, except without the lock included.
Definition at line 341 of file dlinkedlists.h.
| #define AST_DLLIST_HEAD_SET | ( | head, | |||
| entry | ) |
Value:
do { \ (head)->first = (entry); \ (head)->last = (entry); \ ast_mutex_init(&(head)->lock); \ } while (0)
| head | This is a pointer to the list head structure | |
| entry | pointer to the list entry that will become the head of the list |
Definition at line 356 of file dlinkedlists.h.
| #define AST_DLLIST_HEAD_SET_NOLOCK | ( | head, | |||
| entry | ) |
Value:
Initializes a list head structure with a specified first entry.
| head | This is a pointer to the list head structure | |
| entry | pointer to the list entry that will become the head of the list |
Definition at line 388 of file dlinkedlists.h.
Value:
struct name { \ struct type *first; \ struct type *last; \ ast_mutex_t lock; \ } name = AST_DLLIST_HEAD_INIT_VALUE
| name | This will be the name of the defined structure. | |
| type | This is the type of each list entry. |
Example usage:
static AST_DLLIST_HEAD_STATIC(entry_list, entry);
This would define struct entry_list, intended to hold a list of type struct entry.
Definition at line 284 of file dlinkedlists.h.
| #define AST_DLLIST_INSERT_AFTER | ( | head, | |||
| listelm, | |||||
| elm, | |||||
| field | ) |
Inserts a list entry after a given entry.
| head | This is a pointer to the list head structure | |
| listelm | This is a pointer to the entry after which the new entry should be inserted. | |
| elm | This is a pointer to the entry to be inserted. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 1011 of file dlinkedlists.h.
| #define AST_DLLIST_INSERT_AFTER_CURRENT | ( | elm, | |||
| field | ) |
Inserts a list node after the current node during a traversal.
| elm | This is a pointer to the node to be inserted. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link nodes of this list together. |
Definition at line 722 of file dlinkedlists.h.
| #define AST_DLLIST_INSERT_BEFORE | ( | head, | |||
| listelm, | |||||
| elm, | |||||
| field | ) |
Inserts a list entry before a given entry.
| head | This is a pointer to the list head structure | |
| listelm | This is a pointer to the entry before which the new entry should be inserted. | |
| elm | This is a pointer to the entry to be inserted. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 1037 of file dlinkedlists.h.
| #define AST_DLLIST_INSERT_BEFORE_CURRENT | ( | elm, | |||
| field | ) |
Inserts a list node before the current node during a traversal.
| elm | This is a pointer to the entry to be inserted. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link nodes of this list together. |
Definition at line 695 of file dlinkedlists.h.
| #define AST_DLLIST_INSERT_BEFORE_CURRENT_BACKWARDS | ( | elm, | |||
| field | ) | AST_DLLIST_INSERT_AFTER_CURRENT(elm, field) |
Inserts a list entry after the current entry during a backwards traversal. Since this is a backwards traversal, this will insert the entry AFTER the current element. Since this is a backwards traveral, though, this would be BEFORE the current entry in traversal order. Confusing?
| elm | This is a pointer to the entry to be inserted. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 903 of file dlinkedlists.h.
| #define AST_DLLIST_INSERT_HEAD | ( | head, | |||
| elm, | |||||
| field | ) |
Inserts a list entry at the head of a list.
| head | This is a pointer to the list head structure | |
| elm | This is a pointer to the entry to be inserted. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 1061 of file dlinkedlists.h.
| #define AST_DLLIST_INSERT_TAIL | ( | head, | |||
| elm, | |||||
| field | ) |
Appends a list entry to the tail of a list.
| head | This is a pointer to the list head structure | |
| elm | This is a pointer to the entry to be appended. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 1088 of file dlinkedlists.h.
| #define AST_DLLIST_IS_MEMBER | ( | head, | |||
| elm, | |||||
| field | ) |
Checks whether the specified list contains the element.
| head | This is a pointer to the list head structure | |
| elm | This is a pointer to the list element to see if in list. | |
| field | List node field for the next node information. |
NULL if not.
Definition at line 482 of file dlinkedlists.h.
| #define AST_DLLIST_LAST | ( | head | ) | ((head)->last) |
Returns the last entry contained in a list.
| head | This is a pointer to the list head structure |
Definition at line 430 of file dlinkedlists.h.
| #define AST_DLLIST_LOCK | ( | head | ) | ast_mutex_lock(&(head)->lock) |
Locks a list.
| head | This is a pointer to the list head structure |
| 0 | on success | |
| non-zero | on failure |
Definition at line 45 of file dlinkedlists.h.
| #define AST_DLLIST_MOVE_CURRENT | ( | newhead, | |||
| field | ) |
Value:
do { \ typeof ((newhead)->first) __list_cur = __list_current; \ AST_DLLIST_REMOVE_CURRENT(field); \ AST_DLLIST_INSERT_TAIL((newhead), __list_cur, field); \ } while (0)
Definition at line 781 of file dlinkedlists.h.
| #define AST_DLLIST_MOVE_CURRENT_BACKWARDS | ( | newhead, | |||
| field | ) |
Value:
do { \ typeof ((newhead)->first) __list_cur = __list_current; \ AST_DLLIST_REMOVE_CURRENT(field); \ AST_DLLIST_INSERT_HEAD((newhead), __list_cur, field); \ } while (0)
Definition at line 800 of file dlinkedlists.h.
| #define AST_DLLIST_NEXT | ( | elm, | |||
| field | ) | AST_DLLIST_NEXT_DIRECTION(elm, field, first) |
Returns the next entry in the list after the given entry.
| elm | This is a pointer to the current entry. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 445 of file dlinkedlists.h.
| #define AST_DLLIST_NEXT_DIRECTION | ( | elm, | |||
| field, | |||||
| direction | ) | ((elm)->field.direction) |
Definition at line 434 of file dlinkedlists.h.
| #define AST_DLLIST_PREV | ( | elm, | |||
| field | ) | AST_DLLIST_NEXT_DIRECTION(elm, field, last) |
Returns the previous entry in the list before the given entry.
| elm | This is a pointer to the current entry. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 456 of file dlinkedlists.h.
| #define AST_DLLIST_REMOVE | ( | head, | |||
| elm, | |||||
| field | ) |
Removes a specific entry from a list.
| head | This is a pointer to the list head structure | |
| elm | This is a pointer to the entry to be removed. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 1198 of file dlinkedlists.h.
Referenced by ast_event_unsubscribe().
| #define AST_DLLIST_REMOVE_CURRENT | ( | field | ) |
Removes the current entry from a list during a traversal.
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 752 of file dlinkedlists.h.
| #define AST_DLLIST_REMOVE_HEAD | ( | head, | |||
| field | ) |
Removes and returns the head entry from a list.
| head | This is a pointer to the list head structure | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
Definition at line 1141 of file dlinkedlists.h.
| #define AST_DLLIST_REMOVE_TAIL | ( | head, | |||
| field | ) |
Removes and returns the tail node from a list.
| head | This is a pointer to the list head structure | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link nodes of this list together. |
Definition at line 1170 of file dlinkedlists.h.
| #define AST_DLLIST_REMOVE_VERIFY | ( | head, | |||
| elm, | |||||
| field | ) |
Value:
({ \
typeof((elm)) __res = AST_DLLIST_IS_MEMBER(head, elm, field); \
AST_DLLIST_REMOVE(head, __res, field); \
__res; \
})
| head | This is a pointer to the list head structure | |
| elm | This is a pointer to the node to be removed. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link nodes of this list together. |
NULL if not.
Definition at line 1230 of file dlinkedlists.h.
| #define AST_DLLIST_TRAVERSE | ( | head, | |||
| var, | |||||
| field | ) | AST_DLLIST_TRAVERSE_DIRECTION(head, var, field, first) |
Loops over (traverses) the entries in a list.
| head | This is a pointer to the list head structure | |
| var | This is the name of the variable that will hold a pointer to the current list entry on each iteration. It must be declared before calling this macro. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
static AST_DLLIST_HEAD(entry_list, list_entry) entries; ... struct list_entry { ... AST_DLLIST_ENTRY(list_entry) list; } ... struct list_entry *current; ... AST_DLLIST_TRAVERSE(&entries, current, list) { (do something with current here) }
Definition at line 575 of file dlinkedlists.h.
| #define AST_DLLIST_TRAVERSE_BACKWARDS | ( | head, | |||
| var, | |||||
| field | ) | AST_DLLIST_TRAVERSE_DIRECTION(head, var, field, last) |
Loops over (traverses) the entries in a list in reverse order, starting at the end.
| head | This is a pointer to the list head structure | |
| var | This is the name of the variable that will hold a pointer to the current list entry on each iteration. It must be declared before calling this macro. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
static AST_DLLIST_HEAD(entry_list, list_entry) entries; ... struct list_entry { ... AST_DLLIST_ENTRY(list_entry) list; } ... struct list_entry *current; ... AST_DLLIST_TRAVERSE_BACKWARDS(&entries, current, list) { (do something with current here) }
Definition at line 617 of file dlinkedlists.h.
| #define AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_BEGIN | ( | head, | |||
| var, | |||||
| field | ) | AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN(head, var, field, last) |
Loops safely over (traverses) the entries in a list.
| head | This is a pointer to the list head structure | |
| var | This is the name of the variable that will hold a pointer to the current list entry on each iteration. It must be declared before calling this macro. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
static AST_DLLIST_HEAD(entry_list, list_entry) entries; ... struct list_entry { ... AST_DLLIST_ENTRY(list_entry) list; } ... struct list_entry *current; ... AST_DLLIST_TRAVERSE_SAFE_BEGIN(&entries, current, list) { (do something with current here) } AST_DLLIST_TRAVERSE_SAFE_END;
It differs from AST_DLLIST_TRAVERSE() in that the code inside the loop can modify (or even free, after calling AST_DLLIST_REMOVE_CURRENT()) the entry pointed to by the current pointer without affecting the loop traversal.
Definition at line 887 of file dlinkedlists.h.
| #define AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_END AST_DLLIST_TRAVERSE_DIRECTION_SAFE_END |
| #define AST_DLLIST_TRAVERSE_DIRECTION | ( | head, | |||
| var, | |||||
| field, | |||||
| start | ) | for ((var) = (head)->start; (var); (var) = AST_DLLIST_NEXT_DIRECTION(var, field, start)) |
Traverse a doublly linked list using the specified direction list.
| head | List head structure pointer. | |
| var | This is the name of the variable that will hold a pointer to the current list node on each iteration. It must be declared before calling this macro. | |
| field | List node field for the next node information. (declared using AST_DLLIST_ENTRY()) | |
| start | Specified list node to start traversal: first or last |
static AST_DLLIST_HEAD(entry_list, list_entry) entries; ... struct list_entry { ... AST_DLLIST_ENTRY(list_entry) list; } ... struct list_entry *current; ... AST_DLLIST_TRAVERSE_DIRECTION(&entries, current, list, first) { (do something with current here (travers list in forward direction)) } ... AST_DLLIST_TRAVERSE_DIRECTION(&entries, current, list, last) { (do something with current here (travers list in reverse direction)) }
Definition at line 533 of file dlinkedlists.h.
| #define AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN | ( | head, | |||
| var, | |||||
| field, | |||||
| start | ) |
Safe traversal of a doublly linked list using the specified direction list.
| head | List head structure pointer. | |
| var | This is the name of the variable that will hold a pointer to the current list node on each iteration. It must be declared before calling this macro. | |
| field | List node field for the next node information. (declared using AST_DLLIST_ENTRY()) | |
| start | Specified list node to start traversal: first or last |
static AST_DLLIST_HEAD(entry_list, list_entry) entries; ... struct list_entry { ... AST_DLLIST_ENTRY(list_entry) list; } ... struct list_entry *current; ... AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN(&entries, current, list, first) { (do something with current here (travers list in forward direction)) } ... AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN(&entries, current, list, last) { (do something with current here (travers list in reverse direction)) } AST_DLLIST_TRAVERSE_DIRECTION_SAFE_END;
It differs from AST_DLLIST_TRAVERSE() in that the code inside the loop can modify (or even free, after calling AST_DLLIST_REMOVE_CURRENT()) the entry pointed to by the current pointer without affecting the loop traversal.
Definition at line 662 of file dlinkedlists.h.
| #define AST_DLLIST_TRAVERSE_DIRECTION_SAFE_END } while (0) |
Definition at line 809 of file dlinkedlists.h.
| #define AST_DLLIST_TRAVERSE_SAFE_BEGIN | ( | head, | |||
| var, | |||||
| field | ) | AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN(head, var, field, first) |
Loops safely over (traverses) the entries in a list.
| head | This is a pointer to the list head structure | |
| var | This is the name of the variable that will hold a pointer to the current list entry on each iteration. It must be declared before calling this macro. | |
| field | This is the name of the field (declared using AST_DLLIST_ENTRY()) used to link entries of this list together. |
static AST_DLLIST_HEAD(entry_list, list_entry) entries; ... struct list_entry { ... AST_DLLIST_ENTRY(list_entry) list; } ... struct list_entry *current; ... AST_DLLIST_TRAVERSE_SAFE_BEGIN(&entries, current, list) { (do something with current here) } AST_DLLIST_TRAVERSE_SAFE_END;
It differs from AST_DLLIST_TRAVERSE() in that the code inside the loop can modify (or even free, after calling AST_DLLIST_REMOVE_CURRENT()) the entry pointed to by the current pointer without affecting the loop traversal.
Definition at line 848 of file dlinkedlists.h.
| #define AST_DLLIST_TRAVERSE_SAFE_END AST_DLLIST_TRAVERSE_DIRECTION_SAFE_END |
| #define AST_DLLIST_TRYLOCK | ( | head | ) | ast_mutex_trylock(&(head)->lock) |
Locks a list, without blocking if the list is locked.
| head | This is a pointer to the list head structure |
| 0 | on success | |
| non-zero | on failure |
Definition at line 84 of file dlinkedlists.h.
| #define AST_DLLIST_UNLOCK | ( | head | ) | ast_mutex_unlock(&(head)->lock) |
Attempts to unlock a list.
| head | This is a pointer to the list head structure |
Definition at line 122 of file dlinkedlists.h.
| #define AST_RWDLLIST_APPEND_DLLIST AST_DLLIST_APPEND_DLLIST |
Definition at line 1129 of file dlinkedlists.h.
| #define AST_RWDLLIST_EMPTY AST_DLLIST_EMPTY |
Definition at line 470 of file dlinkedlists.h.
| #define AST_RWDLLIST_ENTRY AST_DLLIST_ENTRY |
Definition at line 414 of file dlinkedlists.h.
| #define AST_RWDLLIST_FIRST AST_DLLIST_FIRST |
Definition at line 423 of file dlinkedlists.h.
Value:
Defines a structure to be used to hold a read/write list of specified type.
| name | This will be the name of the defined structure. | |
| type | This is the type of each list entry. |
Example usage:
static AST_RWDLLIST_HEAD(entry_list, entry) entries;
This would define struct entry_list, and declare an instance of it named entries, all intended to hold a list of type struct entry.
Definition at line 184 of file dlinkedlists.h.
| #define AST_RWDLLIST_HEAD_DESTROY | ( | head | ) |
Value:
{ \
(head)->first = NULL; \
(head)->last = NULL; \
ast_rwlock_destroy(&(head)->lock); \
}
| head | This is a pointer to the list head structure |
Definition at line 979 of file dlinkedlists.h.
| #define AST_RWDLLIST_HEAD_INIT | ( | head | ) |
Value:
{ \
(head)->first = NULL; \
(head)->last = NULL; \
ast_rwlock_init(&(head)->lock); \
}
| head | This is a pointer to the list head structure |
Definition at line 947 of file dlinkedlists.h.
Referenced by ast_event_init().
| #define AST_RWDLLIST_HEAD_INIT_VALUE |
Value:
{ \
.first = NULL, \
.last = NULL, \
.lock = AST_RWLOCK_INIT_VALUE, \
}
Definition at line 232 of file dlinkedlists.h.
| #define AST_RWDLLIST_HEAD_SET | ( | head, | |||
| entry | ) |
Value:
do { \ (head)->first = (entry); \ (head)->last = (entry); \ ast_rwlock_init(&(head)->lock); \ } while (0)
| head | This is a pointer to the list head structure | |
| entry | pointer to the list entry that will become the head of the list |
Definition at line 372 of file dlinkedlists.h.
Defines a structure to be used to hold a read/write list of specified type, statically initialized.
| name | This will be the name of the defined structure. | |
| type | This is the type of each list entry. |
Example usage:
static AST_RWDLLIST_HEAD_STATIC(entry_list, entry);
This would define struct entry_list, intended to hold a list of type struct entry.
Definition at line 311 of file dlinkedlists.h.
| #define AST_RWDLLIST_INSERT_AFTER AST_DLLIST_INSERT_AFTER |
Definition at line 1025 of file dlinkedlists.h.
| #define AST_RWDLLIST_INSERT_AFTER_CURRENT AST_DLLIST_INSERT_AFTER_CURRENT |
Definition at line 739 of file dlinkedlists.h.
| #define AST_RWDLLIST_INSERT_BEFORE AST_DLLIST_INSERT_BEFORE |
Definition at line 1051 of file dlinkedlists.h.
| #define AST_RWDLLIST_INSERT_BEFORE_CURRENT AST_DLLIST_INSERT_BEFORE_CURRENT |
Definition at line 712 of file dlinkedlists.h.
| #define AST_RWDLLIST_INSERT_BEFORE_CURRENT_BACKWARDS AST_DLLIST_INSERT_BEFORE_CURRENT_BACKWARDS |
Definition at line 906 of file dlinkedlists.h.
| #define AST_RWDLLIST_INSERT_HEAD AST_DLLIST_INSERT_HEAD |
Definition at line 1074 of file dlinkedlists.h.
| #define AST_RWDLLIST_INSERT_TAIL AST_DLLIST_INSERT_TAIL |
| #define AST_RWDLLIST_IS_MEMBER AST_DLLIST_IS_MEMBER |
Definition at line 497 of file dlinkedlists.h.
| #define AST_RWDLLIST_LAST AST_DLLIST_LAST |
Definition at line 432 of file dlinkedlists.h.
| #define AST_RWDLLIST_MOVE_CURRENT AST_DLLIST_MOVE_CURRENT |
Definition at line 788 of file dlinkedlists.h.
| #define AST_RWDLLIST_MOVE_CURRENT_BACKWARDS AST_DLLIST_MOVE_CURRENT_BACKWARDS |
Definition at line 807 of file dlinkedlists.h.
| #define AST_RWDLLIST_NEXT AST_DLLIST_NEXT |
Definition at line 447 of file dlinkedlists.h.
| #define AST_RWDLLIST_NEXT_DIRECTION AST_DLLIST_NEXT_DIRECTION |
Definition at line 436 of file dlinkedlists.h.
| #define AST_RWDLLIST_PREV AST_DLLIST_PREV |
Definition at line 458 of file dlinkedlists.h.
| #define AST_RWDLLIST_RDLOCK | ( | head | ) | ast_rwlock_rdlock(&(head)->lock) |
Read locks a list.
| head | This is a pointer to the list head structure |
| 0 | on success | |
| non-zero | on failure |
Definition at line 71 of file dlinkedlists.h.
Referenced by ast_event_check_subscriber(), ast_event_report_subs(), and handle_event().
| #define AST_RWDLLIST_REMOVE AST_DLLIST_REMOVE |
Definition at line 1217 of file dlinkedlists.h.
| #define AST_RWDLLIST_REMOVE_CURRENT AST_DLLIST_REMOVE_CURRENT |
Definition at line 769 of file dlinkedlists.h.
| #define AST_RWDLLIST_REMOVE_HEAD AST_DLLIST_REMOVE_HEAD |
Definition at line 1158 of file dlinkedlists.h.
| #define AST_RWDLLIST_REMOVE_TAIL AST_DLLIST_REMOVE_TAIL |
Definition at line 1187 of file dlinkedlists.h.
| #define AST_RWDLLIST_REMOVE_VERIFY AST_DLLIST_REMOVE_VERIFY |
Definition at line 1237 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRAVERSE AST_DLLIST_TRAVERSE |
Definition at line 578 of file dlinkedlists.h.
Referenced by ast_event_check_subscriber(), ast_event_report_subs(), and handle_event().
| #define AST_RWDLLIST_TRAVERSE_BACKWARDS AST_DLLIST_TRAVERSE_BACKWARDS |
Definition at line 620 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRAVERSE_BACKWARDS_SAFE_BEGIN AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_BEGIN |
Definition at line 890 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRAVERSE_BACKWARDS_SAFE_END AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_END |
Definition at line 922 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRAVERSE_DIRECTION AST_DLLIST_TRAVERSE_DIRECTION |
Definition at line 536 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN AST_DLLIST_TRAVERSE_DIRECTION_SAFE_BEGIN |
Definition at line 685 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRAVERSE_DIRECTION_SAFE_END AST_DLLIST_TRAVERSE_DIRECTION_SAFE_END |
Definition at line 812 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRAVERSE_SAFE_BEGIN AST_DLLIST_TRAVERSE_SAFE_BEGIN |
Definition at line 851 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRAVERSE_SAFE_END AST_DLLIST_TRAVERSE_SAFE_END |
Definition at line 914 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRYRDLOCK | ( | head | ) | ast_rwlock_tryrdlock(&(head)->lock) |
Read locks a list, without blocking if the list is locked.
| head | This is a pointer to the list head structure |
| 0 | on success | |
| non-zero | on failure |
Definition at line 110 of file dlinkedlists.h.
| #define AST_RWDLLIST_TRYWRLOCK | ( | head | ) | ast_rwlock_trywrlock(&(head)->lock) |
Write locks a list, without blocking if the list is locked.
| head | This is a pointer to the list head structure |
| 0 | on success | |
| non-zero | on failure |
Definition at line 97 of file dlinkedlists.h.
| #define AST_RWDLLIST_UNLOCK | ( | head | ) | ast_rwlock_unlock(&(head)->lock) |
Attempts to unlock a read/write based list.
| head | This is a pointer to the list head structure |
Definition at line 134 of file dlinkedlists.h.
Referenced by ast_event_check_subscriber(), ast_event_report_subs(), ast_event_sub_activate(), ast_event_unsubscribe(), and handle_event().
| #define AST_RWDLLIST_WRLOCK | ( | head | ) | ast_rwlock_wrlock(&(head)->lock) |
Write locks a list.
| head | This is a pointer to the list head structure |
| 0 | on success | |
| non-zero | on failure |
Definition at line 58 of file dlinkedlists.h.
Referenced by ast_event_sub_activate(), and ast_event_unsubscribe().
1.5.6