(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
-/*
- * Some of the internal functions ("__xxx") are useful when manipulating whole
- * lists rather than single entries, as sometimes we already know the next/prev
- * entries and we can generate better code by using them directly rather than
- * using the generic single-entry routines.
- */
-
-/*
- * Insert a new entry between two known consecutive entries.
- *
- * \param new The new entry to add.
- * \param prev The entry preceeding the new entry.
- * \param next The entry following the new entry.
- *
- * This is only for internal list manipulations where we know the prev/next
- * entries already.
- */
-static inline void __list_add(struct list_head *new,
- struct list_head *prev, struct list_head *next)
-{
- next->prev = new;
- new->next = next;
- new->prev = prev;
- prev->next = new;
-}
-
/**
* Insert a new entry after the specified head.
*
*/
static inline void para_list_add(struct list_head *new, struct list_head *head)
{
- __list_add(new, head, head->next);
+ new->prev = head;
+ new->next = head->next;
+ head->next->prev = new;
+ head->next = new;
}
/**
*/
static inline void list_add_tail(struct list_head *new, struct list_head *head)
{
- __list_add(new, head->prev, head);
-}
-
-/*
- * Delete a list entry by making the prev/next entries point to each other.
- *
- * This is only for internal list manipulation where we know the prev/next
- * entries already.
- */
-static inline void __list_del(struct list_head *prev, struct list_head *next)
-{
- next->prev = prev;
- prev->next = next;
+ new->prev = head->prev;
+ new->next = head;
+ head->prev->next = new;
+ head->prev = new;
}
/*
*/
static inline void list_del(struct list_head *entry)
{
- __list_del(entry->prev, entry->next);
+ entry->prev->next = entry->next;
+ entry->next->prev = entry->prev;
entry->next = LIST_POISON1;
entry->prev = LIST_POISON2;
}
*/
static inline void list_move(struct list_head *list, struct list_head *head)
{
- __list_del(list->prev, list->next);
+ list_del(list);
para_list_add(list, head);
}