diff options
Diffstat (limited to 'libglusterfs/src/list.h')
| -rw-r--r-- | libglusterfs/src/list.h | 23 | 
1 files changed, 22 insertions, 1 deletions
diff --git a/libglusterfs/src/list.h b/libglusterfs/src/list.h index 04b4047129f..894fa3012cf 100644 --- a/libglusterfs/src/list.h +++ b/libglusterfs/src/list.h @@ -179,15 +179,36 @@ list_append_init (struct list_head *list, struct list_head *head)  	INIT_LIST_HEAD (list);  } +static inline int +list_is_last (struct list_head *list, struct list_head *head) +{ +        return (list->next == head); +} + +static inline int +list_is_singular(struct list_head *head) +{ +        return !list_empty(head) && (head->next == head->prev); +}  #define list_entry(ptr, type, member)					\  	((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) +#define list_first_entry(ptr, type, member)     \ +        list_entry((ptr)->next, type, member) + +#define list_last_entry(ptr, type, member)     \ +        list_entry((ptr)->prev, type, member) + +#define list_next_entry(pos, member) \ +        list_entry((pos)->member.next, typeof(*(pos)), member) + +#define list_prev_entry(pos, member) \ +        list_entry((pos)->member.prev, typeof(*(pos)), member)  #define list_for_each(pos, head)                                        \  	for (pos = (head)->next; pos != (head); pos = pos->next) -  #define list_for_each_entry(pos, head, member)				\  	for (pos = list_entry((head)->next, typeof(*pos), member);	\  	     &pos->member != (head); 					\  | 
