linux/tools/perf/util
Sasha Levin b67bfe0d42 hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived

        list_for_each_entry(pos, head, member)

The hlist ones were greedy and wanted an extra parameter:

        hlist_for_each_entry(tpos, pos, head, member)

Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.

Besides the semantic patch, there was some manual work required:

 - Fix up the actual hlist iterators in linux/list.h
 - Fix up the declaration of other iterators based on the hlist ones.
 - A very small amount of places were using the 'node' parameter, this
 was modified to use 'obj->member' instead.
 - Coccinelle didn't handle the hlist_for_each_entry_safe iterator
 properly, so those had to be fixed up manually.

The semantic patch which is mostly the work of Peter Senna Tschudin is here:

@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;

type T;
expression a,c,d,e;
identifier b;
statement S;
@@

-T b;
    <+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
    ...+>

[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 19:10:24 -08:00
..
include perf tools: Fix PMU format parsing test failure 2013-01-24 16:40:47 -03:00
scripting-engines perf script: hook up perf_scripting_context->pevent 2013-01-24 16:40:52 -03:00
PERF-VERSION-GEN perf tools: Do not include PERF-VERSION-FILE to Makefile 2013-01-24 16:40:45 -03:00
abspath.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
alias.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
annotate.c perf annotate: Fix warning message on a missing vmlinux 2013-02-14 14:59:27 -03:00
annotate.h perf gtk/annotate: Support multiple event annotation 2013-02-14 14:59:28 -03:00
bitmap.c perf tools: Add bitmap_or function into bitmap object 2012-02-13 23:28:10 -02:00
build-id.c perf tools: Move build_id__sprintf into build-id object 2012-10-29 11:34:46 -02:00
build-id.h perf tools: Move BUILD_ID_SIZE into build-id object 2012-10-29 11:35:32 -02:00
cache.h perf ui: Always compile browser setup code 2012-11-14 16:53:03 -03:00
callchain.c perf tools: Fix calloc argument ordering 2013-02-06 18:09:28 -03:00
callchain.h perf record: Export the callchain parsing routine and help 2012-12-11 17:22:14 -03:00
cgroup.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
cgroup.h perf tool: Add cgroup support 2011-02-16 13:30:48 +01:00
color.c perf tools: Use scnprintf where applicable 2012-03-14 12:36:19 -03:00
color.h perf hist: Replace ->print() routines by ->snprintf() equivalents 2010-04-02 16:28:15 -03:00
config.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
cpumap.c perf tools: Add cpu_map processor socket level functions 2013-02-06 18:09:26 -03:00
cpumap.h perf tools: Add cpu_map processor socket level functions 2013-02-06 18:09:26 -03:00
ctype.c perf tools: ctype.c only wants util.h 2012-02-13 23:17:40 -02:00
debug.c perf tools: Fix TUI helpline output 2012-12-09 08:46:07 -03:00
debug.h perf evsel: Introduce perf_evsel__open_strerror method 2013-01-24 16:40:09 -03:00
debugfs.c perf tools: Remove unused functions from debugfs object 2012-02-13 23:25:38 -02:00
debugfs.h perf tools: Remove unused functions from debugfs object 2012-02-13 23:25:38 -02:00
dso.c perf symbols: Generalize filter in __fprintf_buildid methods 2012-12-09 08:46:07 -03:00
dso.h perf symbols: Generalize filter in __fprintf_buildid methods 2012-12-09 08:46:07 -03:00
dwarf-aux.c perf probe: Print an enum type variable in "enum variable-name" format when showing accessible variables 2012-09-27 10:58:57 -03:00
dwarf-aux.h perf probe: Search concrete out-of-line instances 2011-08-12 09:32:10 -03:00
environment.c
event.c perf tools: Fix memory leak on error 2013-01-30 10:40:05 -03:00
event.h perf tools: Move BUILD_ID_SIZE into build-id object 2012-10-29 11:35:32 -02:00
evlist.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
evlist.h perf evlist: Make event_copy local to mmaps 2013-02-06 18:09:26 -03:00
evsel.c perf evlist: Pass the event_group info via perf_attr_details 2013-02-06 18:09:28 -03:00
evsel.h perf evlist: Pass the event_group info via perf_attr_details 2013-02-06 18:09:28 -03:00
exec_cmd.c perf tools: Makefile: Remove various and sundry cruft 2011-02-18 07:43:06 -02:00
exec_cmd.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
generate-cmdlist.sh perf tools: Convert to LIBELF_SUPPORT 2012-09-28 21:07:36 -03:00
header.c perf tools: Fix calloc argument ordering 2013-02-06 18:09:28 -03:00
header.h perf header: Add HEADER_GROUP_DESC feature 2013-01-31 13:07:44 -03:00
help.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
help.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
hist.c perf hists: Resort hist entries using group members for output 2013-01-31 13:07:45 -03:00
hist.h perf session: There is no need for a per session hists instance 2013-01-24 16:40:12 -03:00
hweight.c perf tools: Don't use code surrounded by __KERNEL__ 2010-05-02 12:00:44 -03:00
intlist.c perf tools: Allow passing a list to intlist__new 2013-01-24 16:40:53 -03:00
intlist.h perf tools: Allow passing a list to intlist__new 2013-01-24 16:40:53 -03:00
levenshtein.c
levenshtein.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
machine.c perf machine: Introduce struct machines 2013-01-24 16:40:12 -03:00
machine.h perf machine: Introduce struct machines 2013-01-24 16:40:12 -03:00
map.c perf tools: Use memdup in map__clone 2013-01-25 12:49:28 -03:00
map.h perf tools: Stop using 'self' in map.[ch] 2013-01-25 12:49:28 -03:00
pager.c perf tools: Fix pager on minimal-install embedded systems 2012-05-30 15:10:39 -03:00
parse-events.c perf tools: Fix perf_evsel::exclude_GH handling 2013-02-06 18:09:27 -03:00
parse-events.h perf tools: Keep group information 2013-01-31 13:07:43 -03:00
parse-events.l perf tools: Add basic event modifier sanity check 2012-11-14 16:52:24 -03:00
parse-events.y perf tools: Fix build with bison 2.3 and older. 2013-02-14 16:12:34 -03:00
parse-options.c perf tools: Long option completion support for each subcommands 2012-10-02 18:36:44 -03:00
parse-options.h perf tools: Long option completion support for each subcommands 2012-10-02 18:36:44 -03:00
path.c perf tools: Convert to HAVE_STRLCPY 2012-10-02 18:36:24 -03:00
perf_regs.h perf tools: Convert to LIBUNWIND_SUPPORT 2012-10-02 17:56:01 -03:00
pmu.c perf pmu: Privatize perf_pmu_{format,alias} structs 2013-01-24 16:40:51 -03:00
pmu.h perf pmu: Privatize perf_pmu_{format,alias} structs 2013-01-24 16:40:51 -03:00
pmu.l perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu.y perf tools: Fix build with bison 2.3 and older. 2013-02-14 16:12:34 -03:00
probe-event.c perf tools: remove sscanf extension %as 2012-09-24 11:49:31 -03:00
probe-event.h perf probe: Provide perf interface for uprobes 2012-05-11 13:58:17 -03:00
probe-finder.c perf probe: Allow of casting an array of char to string 2013-01-24 16:40:20 -03:00
probe-finder.h perf tools: Eliminate duplicate code and use PATH_MAX consistently 2011-11-28 10:11:04 -02:00
pstack.c perf tools: Stop using 'self' in pstack 2012-11-14 16:50:38 -03:00
pstack.h perf ui: Move hists browser to util/ui/browsers/ 2010-08-10 16:11:08 -03:00
python-ext-sources perf python: Link with sysfs.o 2013-02-06 18:09:28 -03:00
python.c perf python: Fix breakage introduced by the test_attr infrastructure 2013-01-24 16:40:09 -03:00
quote.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
quote.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
rblist.c Account the nr_entries in rblist properly 2012-10-24 14:20:11 -02:00
rblist.h perf tools: Introducing rblist 2012-08-03 10:37:21 -03:00
run-command.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
run-command.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
session.c perf machine: Simplify accessing the host machine 2013-01-24 16:40:13 -03:00
session.h perf machine: Simplify accessing the host machine 2013-01-24 16:40:13 -03:00
setup.py perf python: Properly link with libtraceevent 2012-10-20 02:43:08 +02:00
sigchain.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
sigchain.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
sort.c perf sort: Check return value of strdup() 2013-02-06 18:09:26 -03:00
sort.h perf sort: Make setup_sorting returns an error code 2013-02-06 18:09:26 -03:00
stat.c perf stat: Move stats related code to util/stat.c 2012-09-17 13:10:03 -03:00
stat.h perf stat: Move stats related code to util/stat.c 2012-09-17 13:10:03 -03:00
strbuf.c perf tools: Fix strbuf_addf() when the buffer needs to grow 2012-10-30 10:32:56 -02:00
strbuf.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
strfilter.c perf: Fix missing strndup declaration 2011-03-04 01:17:18 +01:00
strfilter.h perf tools: Add strfilter for general purpose string filter 2011-01-28 09:19:38 -02:00
string.c perf tools: Move ltrim() to util/string.c 2013-01-24 16:40:49 -03:00
strlist.c perf tools: Stop using 'self' in strlist 2013-01-25 12:49:28 -03:00
strlist.h perf tools: Stop using 'self' in strlist 2013-01-25 12:49:28 -03:00
svghelper.c perf timechart: Fix black idle boxes in the title 2011-02-28 08:56:14 +01:00
svghelper.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
symbol-elf.c perf symbols: Include elf.h header regardless LIBELF_SUPPORT 2013-01-24 16:40:18 -03:00
symbol-minimal.c perf symbols: Include elf.h header regardless LIBELF_SUPPORT 2013-01-24 16:40:18 -03:00
symbol.c perf symbols: Mark vmlinux filename as allocated 2013-01-24 16:40:32 -03:00
symbol.h perf report: Make another loop for linking group hists 2013-01-31 13:07:44 -03:00
sysfs.c perf tools: Fix possible (unlikely) buffer overflow 2013-01-24 16:40:18 -03:00
sysfs.h perf tools: Add sysfs mountpoint interface 2012-02-13 23:27:15 -02:00
target.c perf tools: Replace mempcpy with memcpy 2012-09-05 19:35:21 -03:00
target.h perf target: Add uses_mmap field 2012-05-17 12:32:54 -03:00
thread.c perf machine: Move more machine methods to machine.c 2012-12-09 08:46:08 -03:00
thread.h perf machine: Move more machine methods to machine.c 2012-12-09 08:46:08 -03:00
thread_map.c perf tools: fix thread_map__new_by_pid_str() memory leak in error path 2012-05-25 11:40:59 -03:00
thread_map.h perf tools: Fix thread map that is type pid_t 2012-04-11 17:38:50 -03:00
tool.h perf tools: Save some loops using perf_evlist__id2evsel 2011-11-28 17:57:40 -02:00
top.c perf top: Use perf_evlist__config() 2012-12-11 17:22:39 -03:00
top.h perf evsel: Do missing feature fallbacks in just one place 2013-01-24 16:40:08 -03:00
trace-event-info.c perf: Have perf use the new libtraceevent.a library 2012-04-25 13:28:48 +02:00
trace-event-parse.c perf tools: remove sscanf extension %as 2012-09-24 11:49:31 -03:00
trace-event-read.c perf tools: Have the page size value available for all tools 2012-10-06 16:33:14 -03:00
trace-event-scripting.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
trace-event.h perf tools: Support for DWARF CFI unwinding on post processing 2012-08-11 15:06:56 -03:00
types.h perf tools: Add union u64_swap type for swapping u64 data 2012-05-22 12:50:25 -03:00
unwind.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
unwind.h perf tools: Convert to LIBUNWIND_SUPPORT 2012-10-02 17:56:01 -03:00
usage.c perf target: Introduce perf_target__parse_uid() 2012-05-07 16:46:48 -03:00
util.c perf tools: Move get_term_dimensions from top to util.c 2013-01-24 16:40:34 -03:00
util.h perf tools: Move ltrim() to util/string.c 2013-01-24 16:40:49 -03:00
values.c perf tools: Fix a memory leak on perf_read_values_destroy 2011-12-20 13:41:34 -02:00
values.h perf tools: Protect header files with a consistent style 2009-09-24 21:27:51 +02:00
vdso.c perf tools: Back [vdso] DSO with real data 2012-09-11 12:08:30 -03:00
vdso.h perf tools: Back [vdso] DSO with real data 2012-09-11 12:08:30 -03:00
wrapper.c perf tools: Use __maybe_used for unused variables 2012-09-11 12:19:15 -03:00
xyarray.c perf tools: Introduce event selectors 2011-01-03 16:39:04 -02:00
xyarray.h perf tools: Introduce event selectors 2011-01-03 16:39:04 -02:00