3
# Run in userspace-rcu git archive. Prints out a list of API members
4
# and the version in which they were introduced. You need to list all
5
# the API members immediately below. Depends on "cscope".
7
# This program is free software; you can redistribute it and/or modify
8
# it under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 2 of the License, or
10
# (at your option) any later version.
12
# This program is distributed in the hope that it will be useful,
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU General Public License for more details.
17
# You should have received a copy of the GNU General Public License
18
# along with this program; if not, write to the Free Software
19
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
# Copyright (C) IBM Corporation, 2013
23
# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
25
api="caa_container_of \
30
call_rcu_after_fork_child \
31
call_rcu_after_fork_parent \
32
call_rcu_before_fork \
35
cds_hlist_add_head_rcu \
39
cds_hlist_for_each_entry \
40
cds_hlist_for_each_entry_rcu \
41
cds_hlist_for_each_entry_safe \
45
cds_lfht_add_replace \
47
cds_lfht_count_nodes \
52
cds_lfht_for_each_duplicate \
53
cds_lfht_for_each_entry \
54
cds_lfht_for_each_entry_duplicate \
55
cds_lfht_is_node_deleted \
56
cds_lfht_iter_get_node \
60
cds_lfht_next_duplicate \
67
cds_lfq_node_init_rcu \
70
cds_lfs_for_each_safe \
75
cds_lfs_pop_all_blocking \
76
cds_lfs_pop_blocking \
88
cds_list_first_entry \
90
cds_list_for_each_entry \
91
cds_list_for_each_entry_rcu \
92
cds_list_for_each_entry_reverse \
93
cds_list_for_each_prev \
94
cds_list_for_each_prev_safe \
95
cds_list_for_each_rcu \
96
cds_list_for_each_safe \
101
cds_list_replace_init \
102
cds_list_replace_rcu \
104
__cds_wfcq_dequeue_blocking \
105
cds_wfcq_dequeue_blocking \
106
cds_wfcq_dequeue_lock \
107
__cds_wfcq_dequeue_nonblocking \
108
cds_wfcq_dequeue_unlock \
111
__cds_wfcq_first_blocking \
112
__cds_wfcq_first_nonblocking \
113
__cds_wfcq_for_each_blocking \
114
__cds_wfcq_for_each_blocking_safe \
116
__cds_wfcq_next_blocking \
117
__cds_wfcq_next_nonblocking \
119
__cds_wfcq_splice_blocking \
120
cds_wfcq_splice_blocking \
121
__cds_wfcq_splice_nonblocking \
124
cds_wfs_for_each_blocking \
125
cds_wfs_for_each_blocking_safe \
127
cds_wfs_next_blocking \
128
cds_wfs_next_nonblocking \
131
cds_wfs_pop_all_blocking \
132
__cds_wfs_pop_blocking \
133
cds_wfs_pop_blocking \
135
__cds_wfs_pop_nonblocking \
142
cmm_smp_mb__after_uatomic_add \
143
cmm_smp_mb__after_uatomic_and \
144
cmm_smp_mb__after_uatomic_dec \
145
cmm_smp_mb__after_uatomic_inc \
146
cmm_smp_mb__after_uatomic_or \
147
cmm_smp_mb__before_uatomic_add \
148
cmm_smp_mb__before_uatomic_and \
149
cmm_smp_mb__before_uatomic_dec \
150
cmm_smp_mb__before_uatomic_inc \
151
cmm_smp_mb__before_uatomic_or \
155
create_all_cpu_call_rcu_data \
156
create_call_rcu_data \
160
free_all_cpu_call_rcu_data \
162
get_call_rcu_thread \
163
get_cpu_call_rcu_data \
164
get_default_call_rcu_data \
165
get_thread_call_rcu_data \
167
rcu_cmpxchg_pointer \
171
rcu_quiescent_state \
174
rcu_register_thread \
178
rcu_unregister_thread \
180
set_cpu_call_rcu_data \
181
set_thread_call_rcu_data \
195
T=/tmp/urcu-api-list.sh.$$
199
git remote update 1>&2
200
git reset --hard origin/master 1>&2
201
git branch -f master 1>&2
206
for tag in $tags master
209
git reset --hard $tag 1>&2
210
rm -rf cscope.* tests
211
find . \( -name SCCS -prune \) -o \( -name .git -prune \) -o \( -name '*.[h]' -print \) | grep -v -e '-impl\.h$' | cscope -bkq -i -
214
cscope -d -L -0 $i > $T/$tag/$i
215
if test -s $T/$tag/$i
222
# The call_rcu() preceding v0.6.0 is to be ignored
229
( ls $T/$tag; ls $T/$lasttag ) | sort | uniq -u |
230
awk -v tag=$tag '{ print "<tr><td>" $1 "</td><td>" tag "</td></tr>" }'