diff options
Diffstat (limited to 'libglusterfs/src')
| -rw-r--r-- | libglusterfs/src/list.h | 33 | 
1 files changed, 33 insertions, 0 deletions
diff --git a/libglusterfs/src/list.h b/libglusterfs/src/list.h index 886c4f273..52d98fc51 100644 --- a/libglusterfs/src/list.h +++ b/libglusterfs/src/list.h @@ -120,6 +120,7 @@ list_splice (struct list_head *list, struct list_head *head)  } +/* Splice moves @list to the head of the list at @head. */  static inline void  list_splice_init (struct list_head *list, struct list_head *head)  { @@ -131,6 +132,38 @@ list_splice_init (struct list_head *list, struct list_head *head)  } +static inline void +__list_append (struct list_head *list, struct list_head *head) +{ +	(head->prev)->next = (list->next); +        (list->next)->prev = (head->prev); +        (head->prev) = (list->prev); +        (list->prev)->next = head; +} + + +static inline void +list_append (struct list_head *list, struct list_head *head) +{ +	if (list_empty (list)) +		return; + +	__list_append (list, head); +} + + +/* Append moves @list to the end of @head */ +static inline void +list_append_init (struct list_head *list, struct list_head *head) +{ +	if (list_empty (list)) +		return; + +	__list_append (list, head); +	INIT_LIST_HEAD (list); +} + +  #define list_entry(ptr, type, member)					\  	((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))  | 
