#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) |
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_BEFORE(head, listelm, elm, field) |
Inserts a list entry before a given entry. | |
#define | AST_DLLIST_INSERT_BEFORE_CURRENT(elm, field) |
Inserts a list entry before the current entry during a traversal. | |
#define | AST_DLLIST_INSERT_BEFORE_CURRENT_BACKWARDS(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_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) |
#define | AST_DLLIST_MOVE_CURRENT_BACKWARDS(newhead, field) |
#define | AST_DLLIST_NEXT(elm, field) ((elm)->field.next) |
Returns the next entry in the list after the given entry. | |
#define | AST_DLLIST_PREV(elm, field) ((elm)->field.prev) |
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_TRAVERSE(head, var, field) for((var) = (head)->first; (var); (var) = (var)->field.next) |
Loops over (traverses) the entries in a list. | |
#define | AST_DLLIST_TRAVERSE_BACKWARDS(head, var, field) for((var) = (head)->last; (var); (var) = (var)->field.prev) |
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) |
Loops safely over (traverses) the entries in a list. | |
#define | AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_END } |
Closes a safe loop traversal block. | |
#define | AST_DLLIST_TRAVERSE_SAFE_BEGIN(head, var, field) |
Loops safely over (traverses) the entries in a list. | |
#define | AST_DLLIST_TRAVERSE_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_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_LAST AST_DLLIST_LAST |
#define | AST_RWDLLIST_MOVE_CURRENT AST_DLLIST_MOVE_CURRENT |
#define | AST_RWDLLIST_MOVE_CURRENT_BACKWARDS AST_DLLIST_MOVE_CURRENT |
#define | AST_RWDLLIST_NEXT AST_DLLIST_NEXT |
#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_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_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 950 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 462 of file dlinkedlists.h.
Referenced by ast_event_check_subscriber(), ast_sched_runq(), and ast_sched_wait().
#define AST_DLLIST_ENTRY | ( | type | ) |
Value:
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 406 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 419 of file dlinkedlists.h.
Referenced by ast_sched_runq(), ast_sched_wait(), and schedule().
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 812 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 783 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 842 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 241 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 338 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 353 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 383 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 281 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 857 of file dlinkedlists.h.
Referenced by schedule().
#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 879 of file dlinkedlists.h.
Referenced by schedule().
#define AST_DLLIST_INSERT_BEFORE_CURRENT | ( | elm, | |||
field | ) |
Inserts a list entry before the current entry 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 entries of this list together. |
Definition at line 712 of file dlinkedlists.h.
#define AST_DLLIST_INSERT_BEFORE_CURRENT_BACKWARDS | ( | 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 743 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 899 of file dlinkedlists.h.
Referenced by schedule().
#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 923 of file dlinkedlists.h.
Referenced by schedule().
#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 428 of file dlinkedlists.h.
Referenced by schedule().
#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 = __new_prev; \ AST_DLLIST_REMOVE_CURRENT(field); \ AST_DLLIST_INSERT_TAIL((newhead), __list_cur, field); \ } while (0)
Definition at line 681 of file dlinkedlists.h.
#define AST_DLLIST_MOVE_CURRENT_BACKWARDS | ( | newhead, | |||
field | ) |
Definition at line 689 of file dlinkedlists.h.
#define AST_DLLIST_NEXT | ( | elm, | |||
field | ) | ((elm)->field.next) |
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 439 of file dlinkedlists.h.
#define AST_DLLIST_PREV | ( | elm, | |||
field | ) | ((elm)->field.prev) |
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 450 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 999 of file dlinkedlists.h.
Referenced by ast_event_unsubscribe(), and ast_sched_del().
#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 659 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 975 of file dlinkedlists.h.
Referenced by ast_sched_runq(), and sched_context_destroy().
#define AST_DLLIST_TRAVERSE | ( | head, | |||
var, | |||||
field | ) | for((var) = (head)->first; (var); (var) = (var)->field.next) |
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 503 of file dlinkedlists.h.
Referenced by ast_sched_dump(), ast_sched_report(), and schedule().
#define AST_DLLIST_TRAVERSE_BACKWARDS | ( | head, | |||
var, | |||||
field | ) | for((var) = (head)->last; (var); (var) = (var)->field.prev) |
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 545 of file dlinkedlists.h.
Referenced by schedule().
#define AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_BEGIN | ( | head, | |||
var, | |||||
field | ) |
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 633 of file dlinkedlists.h.
#define AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_END } |
#define AST_DLLIST_TRAVERSE_SAFE_BEGIN | ( | head, | |||
var, | |||||
field | ) |
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 584 of file dlinkedlists.h.
#define AST_DLLIST_TRAVERSE_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 963 of file dlinkedlists.h.
#define AST_RWDLLIST_EMPTY AST_DLLIST_EMPTY |
Definition at line 464 of file dlinkedlists.h.
#define AST_RWDLLIST_ENTRY AST_DLLIST_ENTRY |
Definition at line 412 of file dlinkedlists.h.
#define AST_RWDLLIST_FIRST AST_DLLIST_FIRST |
Definition at line 421 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 827 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 797 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 231 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 368 of file dlinkedlists.h.
Value:
struct name { \ struct type *first; \ struct type *last; \ ast_rwlock_t lock; \ } name = AST_RWDLLIST_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_RWDLLIST_HEAD_STATIC(entry_list, entry);
This would define struct
entry_list
, intended to hold a list of type struct
entry
.
Definition at line 324 of file dlinkedlists.h.
#define AST_RWDLLIST_INSERT_AFTER AST_DLLIST_INSERT_AFTER |
Definition at line 867 of file dlinkedlists.h.
#define AST_RWDLLIST_INSERT_BEFORE AST_DLLIST_INSERT_BEFORE |
Definition at line 889 of file dlinkedlists.h.
#define AST_RWDLLIST_INSERT_BEFORE_CURRENT AST_DLLIST_INSERT_BEFORE_CURRENT |
Definition at line 727 of file dlinkedlists.h.
#define AST_RWDLLIST_INSERT_BEFORE_CURRENT_BACKWARDS AST_DLLIST_INSERT_BEFORE_CURRENT_BACKWARDS |
Definition at line 757 of file dlinkedlists.h.
#define AST_RWDLLIST_INSERT_HEAD AST_DLLIST_INSERT_HEAD |
Definition at line 909 of file dlinkedlists.h.
#define AST_RWDLLIST_INSERT_TAIL AST_DLLIST_INSERT_TAIL |
#define AST_RWDLLIST_LAST AST_DLLIST_LAST |
Definition at line 430 of file dlinkedlists.h.
#define AST_RWDLLIST_MOVE_CURRENT AST_DLLIST_MOVE_CURRENT |
Definition at line 687 of file dlinkedlists.h.
#define AST_RWDLLIST_MOVE_CURRENT_BACKWARDS AST_DLLIST_MOVE_CURRENT |
Definition at line 700 of file dlinkedlists.h.
#define AST_RWDLLIST_NEXT AST_DLLIST_NEXT |
Definition at line 441 of file dlinkedlists.h.
#define AST_RWDLLIST_PREV AST_DLLIST_PREV |
Definition at line 452 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 1019 of file dlinkedlists.h.
#define AST_RWDLLIST_REMOVE_CURRENT AST_DLLIST_REMOVE_CURRENT |
Definition at line 679 of file dlinkedlists.h.
#define AST_RWDLLIST_REMOVE_HEAD AST_DLLIST_REMOVE_HEAD |
Definition at line 988 of file dlinkedlists.h.
#define AST_RWDLLIST_TRAVERSE AST_DLLIST_TRAVERSE |
Definition at line 506 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 548 of file dlinkedlists.h.
#define AST_RWDLLIST_TRAVERSE_BACKWARDS_SAFE_BEGIN AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_BEGIN |
Definition at line 646 of file dlinkedlists.h.
#define AST_RWDLLIST_TRAVERSE_BACKWARDS_SAFE_END AST_DLLIST_TRAVERSE_BACKWARDS_SAFE_END |
Definition at line 773 of file dlinkedlists.h.
#define AST_RWDLLIST_TRAVERSE_SAFE_BEGIN AST_DLLIST_TRAVERSE_SAFE_BEGIN |
Definition at line 597 of file dlinkedlists.h.
#define AST_RWDLLIST_TRAVERSE_SAFE_END AST_DLLIST_TRAVERSE_SAFE_END |
Definition at line 765 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().