X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu%2Flist.h;h=bb50128e56e4de7d57df313672f012d9077f3573;hp=04dad80929ef1d6f2ec1a3adcd302d8f2f962533;hb=4b7cab77f3c1c03f021cb0f7e8d150eed3f948e9;hpb=58090b340c54e555a0162f21bfd11e58d13398a0 diff --git a/urcu/list.h b/urcu/list.h index 04dad80..bb50128 100644 --- a/urcu/list.h +++ b/urcu/list.h @@ -37,7 +37,6 @@ struct cds_list_head struct cds_list_head *prev; }; - /* Define a variable with the head and tail of the list. */ #define CDS_LIST_HEAD(name) \ struct cds_list_head name = { &(name), &(name) } @@ -126,14 +125,21 @@ cds_list_splice (struct cds_list_head *add, struct cds_list_head *head) } } +/* Returns 1 if list is empty, 0 otherwise */ +static inline +int cds_list_empty(struct cds_list_head *head) +{ + return head->next == head->prev; +} + /* Get typed element from list at a given position. */ #define cds_list_entry(ptr, type, member) \ ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member))) /* Get first entry from a list. */ -#define cds_list_first_entry(ptr, type, member) \ - cds_list_entry((ptr)->next, type, member) +#define cds_list_first_entry(head, type, member) \ + cds_list_entry((head)->next, type, member) /* Iterate forward over the elements of the list. */