uatomic/x86: Remove redundant memory barriers
[urcu.git] / scripts / urcu-api-list.sh
1 #!/bin/sh
2
3 # SPDX-FileCopyrightText: 2013 IBM Corporation
4 #
5 # SPDX-License-Identifier: GPL-2.0-or-later
6
7 # Run in userspace-rcu git archive. Prints out a list of API members
8 # and the version in which they were introduced. You need to list all
9 # the API members immediately below. Depends on "cscope".
10
11 # Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
12
13 api="caa_container_of \
14 caa_likely \
15 caa_max \
16 caa_unlikely \
17 call_rcu \
18 call_rcu_after_fork_child \
19 call_rcu_after_fork_parent \
20 call_rcu_before_fork \
21 call_rcu_data_free \
22 cds_hlist_add_head \
23 cds_hlist_add_head_rcu \
24 cds_hlist_del \
25 cds_hlist_del_rcu \
26 cds_hlist_entry \
27 cds_hlist_for_each_entry \
28 cds_hlist_for_each_entry_rcu \
29 cds_hlist_for_each_entry_safe \
30 CDS_INIT_HLIST_HEAD \
31 CDS_INIT_LIST_HEAD \
32 cds_lfht_add \
33 cds_lfht_add_replace \
34 cds_lfht_add_unique \
35 cds_lfht_count_nodes \
36 cds_lfht_del \
37 cds_lfht_destroy \
38 cds_lfht_first \
39 cds_lfht_for_each \
40 cds_lfht_for_each_duplicate \
41 cds_lfht_for_each_entry \
42 cds_lfht_for_each_entry_duplicate \
43 cds_lfht_is_node_deleted \
44 cds_lfht_iter_get_node \
45 cds_lfht_lookup \
46 cds_lfht_new \
47 cds_lfht_next \
48 cds_lfht_next_duplicate \
49 cds_lfht_replace \
50 cds_lfht_resize \
51 cds_lfq_dequeue_rcu \
52 cds_lfq_destroy_rcu \
53 cds_lfq_enqueue_rcu \
54 cds_lfq_init_rcu \
55 cds_lfq_node_init_rcu \
56 cds_lfs_empty \
57 cds_lfs_for_each \
58 cds_lfs_for_each_safe \
59 cds_lfs_init \
60 cds_lfs_node_init \
61 __cds_lfs_pop \
62 __cds_lfs_pop_all \
63 cds_lfs_pop_all_blocking \
64 cds_lfs_pop_blocking \
65 cds_lfs_pop_lock \
66 cds_lfs_pop_unlock \
67 cds_lfs_push \
68 cds_list_add \
69 cds_list_add_rcu \
70 cds_list_add_tail \
71 cds_list_del \
72 cds_list_del_init \
73 cds_list_del_rcu \
74 cds_list_empty \
75 cds_list_entry \
76 cds_list_first_entry \
77 cds_list_for_each \
78 cds_list_for_each_entry \
79 cds_list_for_each_entry_rcu \
80 cds_list_for_each_entry_reverse \
81 cds_list_for_each_prev \
82 cds_list_for_each_prev_safe \
83 cds_list_for_each_rcu \
84 cds_list_for_each_safe \
85 CDS_LIST_HEAD \
86 CDS_LIST_HEAD_INIT \
87 cds_list_move \
88 cds_list_replace \
89 cds_list_replace_init \
90 cds_list_replace_rcu \
91 cds_list_splice \
92 __cds_wfcq_dequeue_blocking \
93 cds_wfcq_dequeue_blocking \
94 cds_wfcq_dequeue_lock \
95 __cds_wfcq_dequeue_nonblocking \
96 cds_wfcq_dequeue_unlock \
97 cds_wfcq_empty \
98 cds_wfcq_enqueue \
99 __cds_wfcq_first_blocking \
100 __cds_wfcq_first_nonblocking \
101 __cds_wfcq_for_each_blocking \
102 __cds_wfcq_for_each_blocking_safe \
103 cds_wfcq_init \
104 __cds_wfcq_next_blocking \
105 __cds_wfcq_next_nonblocking \
106 cds_wfcq_node_init \
107 __cds_wfcq_splice_blocking \
108 cds_wfcq_splice_blocking \
109 __cds_wfcq_splice_nonblocking \
110 cds_wfs_empty \
111 cds_wfs_first \
112 cds_wfs_for_each_blocking \
113 cds_wfs_for_each_blocking_safe \
114 cds_wfs_init \
115 cds_wfs_next_blocking \
116 cds_wfs_next_nonblocking \
117 cds_wfs_node_init \
118 __cds_wfs_pop_all \
119 cds_wfs_pop_all_blocking \
120 __cds_wfs_pop_blocking \
121 cds_wfs_pop_blocking \
122 cds_wfs_pop_lock \
123 __cds_wfs_pop_nonblocking \
124 cds_wfs_pop_unlock \
125 cds_wfs_push \
126 CMM_ACCESS_ONCE \
127 cmm_barrier \
128 CMM_LOAD_SHARED \
129 cmm_smp_mb \
130 cmm_smp_mb__after_uatomic_add \
131 cmm_smp_mb__after_uatomic_and \
132 cmm_smp_mb__after_uatomic_dec \
133 cmm_smp_mb__after_uatomic_inc \
134 cmm_smp_mb__after_uatomic_or \
135 cmm_smp_mb__before_uatomic_add \
136 cmm_smp_mb__before_uatomic_and \
137 cmm_smp_mb__before_uatomic_dec \
138 cmm_smp_mb__before_uatomic_inc \
139 cmm_smp_mb__before_uatomic_or \
140 cmm_smp_rmb \
141 cmm_smp_wmb \
142 CMM_STORE_SHARED \
143 create_all_cpu_call_rcu_data \
144 create_call_rcu_data \
145 DECLARE_URCU_TLS \
146 defer_rcu \
147 DEFINE_URCU_TLS \
148 free_all_cpu_call_rcu_data \
149 get_call_rcu_data \
150 get_call_rcu_thread \
151 get_cpu_call_rcu_data \
152 get_default_call_rcu_data \
153 get_thread_call_rcu_data \
154 rcu_assign_pointer \
155 rcu_cmpxchg_pointer \
156 rcu_dereference \
157 rcu_exit \
158 rcu_init \
159 rcu_quiescent_state \
160 rcu_read_lock \
161 rcu_read_unlock \
162 rcu_register_thread \
163 rcu_set_pointer \
164 rcu_thread_offline \
165 rcu_thread_online \
166 rcu_unregister_thread \
167 rcu_xchg_pointer \
168 set_cpu_call_rcu_data \
169 set_thread_call_rcu_data \
170 synchronize_rcu \
171 uatomic_add \
172 uatomic_add_return \
173 uatomic_and \
174 uatomic_cmpxchg \
175 uatomic_dec \
176 uatomic_inc \
177 uatomic_or \
178 uatomic_read \
179 uatomic_set \
180 uatomic_xchg \
181 URCU_TLS"
182
183 T=/tmp/urcu-api-list.sh.$$
184 trap 'rm -rf $T' 0
185 mkdir $T
186
187 git remote update 1>&2
188 git reset --hard origin/master 1>&2
189 git branch -f master 1>&2
190 tags=`git tag -l`
191 lasttag="init"
192 mkdir $T/init
193
194 for tag in $tags master
195 do
196 mkdir $T/$tag
197 git reset --hard $tag 1>&2
198 rm -rf cscope.* tests
199 find . \( -name SCCS -prune \) -o \( -name .git -prune \) -o \( -name '*.[h]' -print \) | grep -v -e '-impl\.h$' | cscope -bkq -i -
200 for i in $api
201 do
202 cscope -d -L -0 $i > $T/$tag/$i
203 if test -s $T/$tag/$i
204 then
205 :
206 else
207 rm $T/$tag/$i
208 fi
209 done
210 # The call_rcu() preceding v0.6.0 is to be ignored
211 if test -d $T/v0.6.0
212 then
213 :
214 else
215 rm $T/$tag/call_rcu
216 fi
217 ( ls $T/$tag; ls $T/$lasttag ) | sort | uniq -u |
218 awk -v tag=$tag '{ print "\t<tr><td>" $1 "</td><td>" tag "</td></tr>" }'
219 lasttag=$tag
220 done
221
This page took 0.033334 seconds and 5 git commands to generate.