aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-trace.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2013-10-08 15:00:21 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-10-11 11:17:59 -0400
commit03e3adc9f4d8b57dc83475c8c4c6e462a78ff709 (patch)
treea2fa111925de27561e3cf8ac22b33c143644591d /tools/perf/builtin-trace.c
parent316d70d6dbde540b275289563cbddd9f0c903fc6 (diff)
perf trace: Allow specifying index offset in strarrays
So that the index passed doesn't have to start at zero, being decremented from an offset specified when declaring the strarray before being used as the real array index. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-k1ce6uqyt4qar9edrj3mevod@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-trace.c')
-rw-r--r--tools/perf/builtin-trace.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index addc3e11f999..7424298b87e3 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -44,6 +44,7 @@ struct syscall_arg {
44}; 44};
45 45
46struct strarray { 46struct strarray {
47 int offset;
47 int nr_entries; 48 int nr_entries;
48 const char **entries; 49 const char **entries;
49}; 50};
@@ -53,14 +54,20 @@ struct strarray {
53 .entries = array, \ 54 .entries = array, \
54} 55}
55 56
57#define DEFINE_STRARRAY_OFFSET(array, off) struct strarray strarray__##array = { \
58 .offset = off, \
59 .nr_entries = ARRAY_SIZE(array), \
60 .entries = array, \
61}
62
56static size_t syscall_arg__scnprintf_strarray(char *bf, size_t size, 63static size_t syscall_arg__scnprintf_strarray(char *bf, size_t size,
57 struct syscall_arg *arg) 64 struct syscall_arg *arg)
58{ 65{
59 int idx = arg->val;
60 struct strarray *sa = arg->parm; 66 struct strarray *sa = arg->parm;
67 int idx = arg->val - sa->offset;
61 68
62 if (idx < 0 || idx >= sa->nr_entries) 69 if (idx < 0 || idx >= sa->nr_entries)
63 return scnprintf(bf, size, "%d", idx); 70 return scnprintf(bf, size, "%d", arg->val);
64 71
65 return scnprintf(bf, size, "%s", sa->entries[idx]); 72 return scnprintf(bf, size, "%s", sa->entries[idx]);
66} 73}
@@ -288,8 +295,8 @@ static size_t syscall_arg__scnprintf_futex_op(char *bf, size_t size, struct sysc
288 295
289#define SCA_FUTEX_OP syscall_arg__scnprintf_futex_op 296#define SCA_FUTEX_OP syscall_arg__scnprintf_futex_op
290 297
291static const char *epoll_ctl_ops[] = { [1] = "ADD", "DEL", "MOD", }; 298static const char *epoll_ctl_ops[] = { "ADD", "DEL", "MOD", };
292static DEFINE_STRARRAY(epoll_ctl_ops); 299static DEFINE_STRARRAY_OFFSET(epoll_ctl_ops, 1);
293 300
294static const char *itimers[] = { "REAL", "VIRTUAL", "PROF", }; 301static const char *itimers[] = { "REAL", "VIRTUAL", "PROF", };
295static DEFINE_STRARRAY(itimers); 302static DEFINE_STRARRAY(itimers);