Allows to enqueue list element instead of pushing on top of the list

From: Daniel Lezcano <dlezcano@fr.ibm.com>

Added the list_add_tail function to add an element at the end of the list.

Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
This commit is contained in:
dlezcano 2008-12-09 09:41:47 +00:00
parent 85cbaa06f9
commit da9e3794b5

View File

@ -7,7 +7,7 @@ struct lxc_list {
struct lxc_list *prev; struct lxc_list *prev;
}; };
#define lxc_init_list(l) { .next = l, .prev = l, } #define lxc_init_list(l) { .next = l, .prev = l }
#define lxc_list_for_each(__iterator, __list) \ #define lxc_list_for_each(__iterator, __list) \
for (__iterator = (__list)->next; \ for (__iterator = (__list)->next; \
@ -35,13 +35,25 @@ static inline int lxc_list_empty(struct lxc_list *list)
return list == list->next; return list == list->next;
} }
static inline void __lxc_list_add(struct lxc_list *new,
struct lxc_list *prev,
struct lxc_list *next)
{
next->prev = new;
new->next = next;
new->prev = prev;
prev->next = new;
}
static inline void lxc_list_add(struct lxc_list *head, struct lxc_list *list) static inline void lxc_list_add(struct lxc_list *head, struct lxc_list *list)
{ {
struct lxc_list *next = head->next; __lxc_list_add(list, head, head->next);
next->prev = list; }
list->next = next;
list->prev = head; static inline void lxc_list_add_tail(struct lxc_list *head,
head->next = list; struct lxc_list *list)
{
__lxc_list_add(list, head->prev, head);
} }
static inline void lxc_list_del(struct lxc_list *list) static inline void lxc_list_del(struct lxc_list *list)