diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2017-07-14 10:13:56 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2017-07-18 23:13:53 -0300 |
commit | f9f83b3344f9ed6e1d33a87810f38eca5ed6a14f (patch) | |
tree | 5ccb793eff5d37f3da1e0cf875a14f6c0974da3d /tools/perf/trace/beauty/beauty.h | |
parent | 9cb7cf86440229fd6e6ad1718712742c344653d8 (diff) | |
download | linux-stable-f9f83b3344f9ed6e1d33a87810f38eca5ed6a14f.tar.gz linux-stable-f9f83b3344f9ed6e1d33a87810f38eca5ed6a14f.tar.bz2 linux-stable-f9f83b3344f9ed6e1d33a87810f38eca5ed6a14f.zip |
perf trace beauty: Allow accessing syscall args values in a syscall arg formatter
For instance, fcntl's upcoming 'arg' formatter needs to look at the
'cmd' value to decide how to format its value, sometimes it is a file
flags, sometimes an fd, a pointer to a structure, etc.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-2tw2jfaqm48dtw8a4addghze@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/trace/beauty/beauty.h')
-rw-r--r-- | tools/perf/trace/beauty/beauty.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/perf/trace/beauty/beauty.h b/tools/perf/trace/beauty/beauty.h index ce01079d8422..6fbac0c8120d 100644 --- a/tools/perf/trace/beauty/beauty.h +++ b/tools/perf/trace/beauty/beauty.h @@ -6,8 +6,19 @@ struct trace; struct thread; +/** + * @val: value of syscall argument being formatted + * @args: All the args, use syscall_args__val(arg, nth) to access one + * @thread: tid state (maps, pid, tid, etc) + * @trace: 'perf trace' internals: all threads, etc + * @parm: private area, may be an strarray, for instance + * @idx: syscall arg idx (is this the first?) + * @mask: a syscall arg may mask another arg, see syscall_arg__scnprintf_futex_op + */ + struct syscall_arg { unsigned long val; + unsigned char *args; struct thread *thread; struct trace *trace; void *parm; @@ -15,6 +26,8 @@ struct syscall_arg { u8 mask; }; +unsigned long syscall_arg__val(struct syscall_arg *arg, u8 idx); + size_t syscall_arg__scnprintf_strarrays(char *bf, size_t size, struct syscall_arg *arg); #define SCA_STRARRAYS syscall_arg__scnprintf_strarrays |