Kernel Linked Lists (list_splice)
Leandro M Barbosa
lbarbosa at linux.com
Wed Mar 25 17:38:01 EDT 2015
Hello all!
I was reading the __list_splice () function code and I had a doubt. The code is:
274 static inline void __list_splice(const struct list_head *list,
275 struct list_head *prev,
276 struct list_head *next)
277 {
278 struct list_head *first = list->next;
279 struct list_head *last = list->prev;
280
281 first->prev = prev;
282 prev->next = first;
283
284 last->next = next;
285 next->prev = last;
286 }
What happens with the *list head? As I understood, when you call
list_splice (list_a, list_b, list_b->next), the code joins the two
lists together such that the list_a is put before list_b. The code
grabs list->next and list->prev but what about *list itself?
--
Leandro Moreira Barbosa
More information about the Kernelnewbies
mailing list