X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu%2Flist.h;h=888e776fd3b9309470aa5c552e77745744aedda5;hp=6384728bc054d551fccd811cec27f43dc41d61da;hb=38004536194d9f3bdccce9aeab3c3adb2fc09b8a;hpb=ac956d0065c8a69073a90a0cb230190723d294cb diff --git a/urcu/list.h b/urcu/list.h index 6384728..888e776 100644 --- a/urcu/list.h +++ b/urcu/list.h @@ -88,6 +88,17 @@ list_move (list_t *elem, list_t *head) list_add (elem, head); } +/* replace an old entry. + */ +static inline void +list_replace(list_t *old, list_t *_new) +{ + _new->next = old->next; + _new->prev = old->prev; + _new->prev->next = _new; + _new->next->prev = _new; +} + /* Join two lists. */ static inline void list_splice (list_t *add, list_t *head) @@ -148,11 +159,11 @@ static inline int list_empty(list_t *head) } static inline void list_replace_init(list_t *old, - list_t *new) + list_t *_new) { list_t *head = old->next; list_del(old); - list_add_tail(new, head); + list_add_tail(_new, head); INIT_LIST_HEAD(old); }