rcu: Remove list_for_each_continue_rcu()
The list_for_each_continue_rcu() macro is no longer used, so this commit removes it. The list_for_each_entry_continue_rcu() macro should be used instead. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
878d7439d0
commit
bb08f76d84
@ -271,15 +271,14 @@ over a rather long period of time, but improvements are always welcome!
|
|||||||
The same cautions apply to call_rcu_bh() and call_rcu_sched().
|
The same cautions apply to call_rcu_bh() and call_rcu_sched().
|
||||||
|
|
||||||
9. All RCU list-traversal primitives, which include
|
9. All RCU list-traversal primitives, which include
|
||||||
rcu_dereference(), list_for_each_entry_rcu(),
|
rcu_dereference(), list_for_each_entry_rcu(), and
|
||||||
list_for_each_continue_rcu(), and list_for_each_safe_rcu(),
|
list_for_each_safe_rcu(), must be either within an RCU read-side
|
||||||
must be either within an RCU read-side critical section or
|
critical section or must be protected by appropriate update-side
|
||||||
must be protected by appropriate update-side locks. RCU
|
locks. RCU read-side critical sections are delimited by
|
||||||
read-side critical sections are delimited by rcu_read_lock()
|
rcu_read_lock() and rcu_read_unlock(), or by similar primitives
|
||||||
and rcu_read_unlock(), or by similar primitives such as
|
such as rcu_read_lock_bh() and rcu_read_unlock_bh(), in which
|
||||||
rcu_read_lock_bh() and rcu_read_unlock_bh(), in which case
|
case the matching rcu_dereference() primitive must be used in
|
||||||
the matching rcu_dereference() primitive must be used in order
|
order to keep lockdep happy, in this case, rcu_dereference_bh().
|
||||||
to keep lockdep happy, in this case, rcu_dereference_bh().
|
|
||||||
|
|
||||||
The reason that it is permissible to use RCU list-traversal
|
The reason that it is permissible to use RCU list-traversal
|
||||||
primitives when the update-side lock is held is that doing so
|
primitives when the update-side lock is held is that doing so
|
||||||
|
@ -789,9 +789,7 @@ RCU list traversal:
|
|||||||
list_for_each_entry_rcu
|
list_for_each_entry_rcu
|
||||||
hlist_for_each_entry_rcu
|
hlist_for_each_entry_rcu
|
||||||
hlist_nulls_for_each_entry_rcu
|
hlist_nulls_for_each_entry_rcu
|
||||||
|
list_for_each_entry_continue_rcu
|
||||||
list_for_each_continue_rcu (to be deprecated in favor of new
|
|
||||||
list_for_each_entry_continue_rcu)
|
|
||||||
|
|
||||||
RCU pointer/list update:
|
RCU pointer/list update:
|
||||||
|
|
||||||
|
@ -286,23 +286,6 @@ static inline void list_splice_init_rcu(struct list_head *list,
|
|||||||
&pos->member != (head); \
|
&pos->member != (head); \
|
||||||
pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
|
pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* list_for_each_continue_rcu
|
|
||||||
* @pos: the &struct list_head to use as a loop cursor.
|
|
||||||
* @head: the head for your list.
|
|
||||||
*
|
|
||||||
* Iterate over an rcu-protected list, continuing after current point.
|
|
||||||
*
|
|
||||||
* This list-traversal primitive may safely run concurrently with
|
|
||||||
* the _rcu list-mutation primitives such as list_add_rcu()
|
|
||||||
* as long as the traversal is guarded by rcu_read_lock().
|
|
||||||
*/
|
|
||||||
#define list_for_each_continue_rcu(pos, head) \
|
|
||||||
for ((pos) = rcu_dereference_raw(list_next_rcu(pos)); \
|
|
||||||
(pos) != (head); \
|
|
||||||
(pos) = rcu_dereference_raw(list_next_rcu(pos)))
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* list_for_each_entry_continue_rcu - continue iteration over list of given type
|
* list_for_each_entry_continue_rcu - continue iteration over list of given type
|
||||||
* @pos: the type * to use as a loop cursor.
|
* @pos: the type * to use as a loop cursor.
|
||||||
|
Loading…
Reference in New Issue
Block a user