list_splice_init_rcu — splice an RCU-protected list into an existing list.
void list_splice_init_rcu
(struct list_head * list, struct list_head * head, void (*sync)
(void));
the RCU-protected list to splice
the place in the list to splice the first list into
function to sync: synchronize_rcu, synchronize_sched, ...
head can be RCU-read traversed concurrently with this function.
Note that this function blocks.
the caller must take whatever action is necessary to prevent any other updates to head. In principle, it is possible to modify the list as soon as sync begins execution. If this sort of thing becomes necessary, an alternative version based on call_rcu could be created. But only if -really- needed -- there is no shortage of RCU API members.