Skip to content

Commit 46e2c5d

Browse files
committed
doc: Update whatisRCU.rst for recent RCU API additions
Bring this file kicking and screaming into the year 2025! [ paulmck: Apply feedback from Bagas Sanjaya. ] Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
1 parent 61399e0 commit 46e2c5d

1 file changed

Lines changed: 118 additions & 32 deletions

File tree

Documentation/RCU/whatisRCU.rst

Lines changed: 118 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,67 +1021,95 @@ RCU list traversal::
10211021
list_entry_rcu
10221022
list_entry_lockless
10231023
list_first_entry_rcu
1024+
list_first_or_null_rcu
1025+
list_tail_rcu
10241026
list_next_rcu
1027+
list_next_or_null_rcu
10251028
list_for_each_entry_rcu
10261029
list_for_each_entry_continue_rcu
10271030
list_for_each_entry_from_rcu
1028-
list_first_or_null_rcu
1029-
list_next_or_null_rcu
1031+
list_for_each_entry_lockless
10301032
hlist_first_rcu
10311033
hlist_next_rcu
10321034
hlist_pprev_rcu
10331035
hlist_for_each_entry_rcu
1036+
hlist_for_each_entry_rcu_notrace
10341037
hlist_for_each_entry_rcu_bh
10351038
hlist_for_each_entry_from_rcu
10361039
hlist_for_each_entry_continue_rcu
10371040
hlist_for_each_entry_continue_rcu_bh
10381041
hlist_nulls_first_rcu
1042+
hlist_nulls_next_rcu
10391043
hlist_nulls_for_each_entry_rcu
1044+
hlist_nulls_for_each_entry_safe
10401045
hlist_bl_first_rcu
10411046
hlist_bl_for_each_entry_rcu
10421047

10431048
RCU pointer/list update::
10441049

10451050
rcu_assign_pointer
1051+
rcu_replace_pointer
1052+
INIT_LIST_HEAD_RCU
10461053
list_add_rcu
10471054
list_add_tail_rcu
10481055
list_del_rcu
10491056
list_replace_rcu
1057+
list_splice_init_rcu
1058+
list_splice_tail_init_rcu
10501059
hlist_add_behind_rcu
10511060
hlist_add_before_rcu
10521061
hlist_add_head_rcu
10531062
hlist_add_tail_rcu
10541063
hlist_del_rcu
10551064
hlist_del_init_rcu
10561065
hlist_replace_rcu
1057-
list_splice_init_rcu
1058-
list_splice_tail_init_rcu
10591066
hlist_nulls_del_init_rcu
10601067
hlist_nulls_del_rcu
10611068
hlist_nulls_add_head_rcu
1069+
hlist_nulls_add_tail_rcu
1070+
hlist_nulls_add_fake
1071+
hlists_swap_heads_rcu
10621072
hlist_bl_add_head_rcu
1063-
hlist_bl_del_init_rcu
10641073
hlist_bl_del_rcu
10651074
hlist_bl_set_first_rcu
10661075

10671076
RCU::
10681077

1069-
Critical sections Grace period Barrier
1070-
1071-
rcu_read_lock synchronize_net rcu_barrier
1072-
rcu_read_unlock synchronize_rcu
1073-
rcu_dereference synchronize_rcu_expedited
1074-
rcu_read_lock_held call_rcu
1075-
rcu_dereference_check kfree_rcu
1076-
rcu_dereference_protected
1078+
Critical sections Grace period Barrier
1079+
1080+
rcu_read_lock synchronize_net rcu_barrier
1081+
rcu_read_unlock synchronize_rcu
1082+
guard(rcu)() synchronize_rcu_expedited
1083+
scoped_guard(rcu) synchronize_rcu_mult
1084+
rcu_dereference call_rcu
1085+
rcu_dereference_check call_rcu_hurry
1086+
rcu_dereference_protected kfree_rcu
1087+
rcu_read_lock_held kvfree_rcu
1088+
rcu_read_lock_any_held kfree_rcu_mightsleep
1089+
rcu_pointer_handoff cond_synchronize_rcu
1090+
unrcu_pointer cond_synchronize_rcu_full
1091+
cond_synchronize_rcu_expedited
1092+
cond_synchronize_rcu_expedited_full
1093+
get_completed_synchronize_rcu
1094+
get_completed_synchronize_rcu_full
1095+
get_state_synchronize_rcu
1096+
get_state_synchronize_rcu_full
1097+
poll_state_synchronize_rcu
1098+
poll_state_synchronize_rcu_full
1099+
same_state_synchronize_rcu
1100+
same_state_synchronize_rcu_full
1101+
start_poll_synchronize_rcu
1102+
start_poll_synchronize_rcu_full
1103+
start_poll_synchronize_rcu_expedited
1104+
start_poll_synchronize_rcu_expedited_full
10771105

10781106
bh::
10791107

10801108
Critical sections Grace period Barrier
10811109

1082-
rcu_read_lock_bh call_rcu rcu_barrier
1083-
rcu_read_unlock_bh synchronize_rcu
1084-
[local_bh_disable] synchronize_rcu_expedited
1110+
rcu_read_lock_bh [Same as RCU] [Same as RCU]
1111+
rcu_read_unlock_bh
1112+
[local_bh_disable]
10851113
[and friends]
10861114
rcu_dereference_bh
10871115
rcu_dereference_bh_check
@@ -1092,9 +1120,9 @@ sched::
10921120

10931121
Critical sections Grace period Barrier
10941122

1095-
rcu_read_lock_sched call_rcu rcu_barrier
1096-
rcu_read_unlock_sched synchronize_rcu
1097-
[preempt_disable] synchronize_rcu_expedited
1123+
rcu_read_lock_sched [Same as RCU] [Same as RCU]
1124+
rcu_read_unlock_sched
1125+
[preempt_disable]
10981126
[and friends]
10991127
rcu_read_lock_sched_notrace
11001128
rcu_read_unlock_sched_notrace
@@ -1104,46 +1132,104 @@ sched::
11041132
rcu_read_lock_sched_held
11051133

11061134

1135+
RCU: Initialization/cleanup/ordering::
1136+
1137+
RCU_INIT_POINTER
1138+
RCU_INITIALIZER
1139+
RCU_POINTER_INITIALIZER
1140+
init_rcu_head
1141+
destroy_rcu_head
1142+
init_rcu_head_on_stack
1143+
destroy_rcu_head_on_stack
1144+
SLAB_TYPESAFE_BY_RCU
1145+
1146+
1147+
RCU: Quiescents states and control::
1148+
1149+
cond_resched_tasks_rcu_qs
1150+
rcu_all_qs
1151+
rcu_softirq_qs_periodic
1152+
rcu_end_inkernel_boot
1153+
rcu_expedite_gp
1154+
rcu_gp_is_expedited
1155+
rcu_unexpedite_gp
1156+
rcu_cpu_stall_reset
1157+
rcu_head_after_call_rcu
1158+
rcu_is_watching
1159+
1160+
1161+
RCU-sync primitive::
1162+
1163+
rcu_sync_is_idle
1164+
rcu_sync_init
1165+
rcu_sync_enter
1166+
rcu_sync_exit
1167+
rcu_sync_dtor
1168+
1169+
11071170
RCU-Tasks::
11081171

1109-
Critical sections Grace period Barrier
1172+
Critical sections Grace period Barrier
11101173

1111-
N/A call_rcu_tasks rcu_barrier_tasks
1174+
N/A call_rcu_tasks rcu_barrier_tasks
11121175
synchronize_rcu_tasks
11131176

11141177

11151178
RCU-Tasks-Rude::
11161179

1117-
Critical sections Grace period Barrier
1180+
Critical sections Grace period Barrier
11181181

1119-
N/A N/A
1120-
synchronize_rcu_tasks_rude
1182+
N/A synchronize_rcu_tasks_rude rcu_barrier_tasks_rude
1183+
call_rcu_tasks_rude
11211184

11221185

11231186
RCU-Tasks-Trace::
11241187

1125-
Critical sections Grace period Barrier
1188+
Critical sections Grace period Barrier
11261189

1127-
rcu_read_lock_trace call_rcu_tasks_trace rcu_barrier_tasks_trace
1190+
rcu_read_lock_trace call_rcu_tasks_trace rcu_barrier_tasks_trace
11281191
rcu_read_unlock_trace synchronize_rcu_tasks_trace
1192+
guard(rcu_tasks_trace)()
1193+
scoped_guard(rcu_tasks_trace)
11291194

11301195

1131-
SRCU::
1196+
SRCU list traversal::
1197+
list_for_each_entry_srcu
1198+
hlist_for_each_entry_srcu
11321199

1133-
Critical sections Grace period Barrier
11341200

1135-
srcu_read_lock call_srcu srcu_barrier
1136-
srcu_read_unlock synchronize_srcu
1137-
srcu_dereference synchronize_srcu_expedited
1201+
SRCU::
1202+
1203+
Critical sections Grace period Barrier
1204+
1205+
srcu_read_lock call_srcu srcu_barrier
1206+
srcu_read_unlock synchronize_srcu
1207+
srcu_read_lock_fast synchronize_srcu_expedited
1208+
srcu_read_unlock_fast get_state_synchronize_srcu
1209+
srcu_read_lock_nmisafe start_poll_synchronize_srcu
1210+
srcu_read_unlock_nmisafe start_poll_synchronize_srcu_expedited
1211+
srcu_read_lock_notrace poll_state_synchronize_srcu
1212+
srcu_read_unlock_notrace
1213+
srcu_down_read
1214+
srcu_up_read
1215+
srcu_down_read_fast
1216+
srcu_up_read_fast
1217+
guard(srcu)()
1218+
scoped_guard(srcu)
1219+
srcu_read_lock_held
1220+
srcu_dereference
11381221
srcu_dereference_check
1222+
srcu_dereference_notrace
11391223
srcu_read_lock_held
11401224

1141-
SRCU: Initialization/cleanup::
1225+
1226+
SRCU: Initialization/cleanup/ordering::
11421227

11431228
DEFINE_SRCU
11441229
DEFINE_STATIC_SRCU
11451230
init_srcu_struct
11461231
cleanup_srcu_struct
1232+
smp_mb__after_srcu_read_unlock
11471233

11481234
All: lockdep-checked RCU utility APIs::
11491235

0 commit comments

Comments
 (0)