Name

list_splice_init_rcu — splice an RCU-protected list into an existing list.

Synopsis

void list_splice_init_rcu (struct list_head *  list,
 struct list_head *  head,
 void (* sync(void));

Arguments

list

the RCU-protected list to splice

head

the place in the list to splice the first list into

sync

function to sync: synchronize_rcu, synchronize_sched, ...

Description

head can be RCU-read traversed concurrently with this function.

Note that this function blocks.

Important note

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.