[PATCH 5/5] perf trace: Fix 'newfstatat'/'fstatat' argument pretty printing

Arnaldo Carvalho de Melo posted 5 patches 1 year, 10 months ago
[PATCH 5/5] perf trace: Fix 'newfstatat'/'fstatat' argument pretty printing
Posted by Arnaldo Carvalho de Melo 1 year, 10 months ago
From: Arnaldo Carvalho de Melo <acme@redhat.com>

There were needless two entries, one for 'newfstatat' and another for
'fstatat', keep just one and pretty print its 'flags' argument using the
fs_at_flags scnprintf that is also used by other FS syscalls such as
'stat', now:

  root@number:~# perf trace -e newfstatat --max-events=5
       0.000 ( 0.010 ms): abrt-dump-jour/1400 newfstatat(dfd: 7, filename: "", statbuf: 0x7fff0d127000, flag: EMPTY_PATH) = 0
       0.020 ( 0.003 ms): abrt-dump-jour/1400 newfstatat(dfd: 9, filename: "", statbuf: 0x55752507b0e8, flag: EMPTY_PATH) = 0
       0.039 ( 0.004 ms): abrt-dump-jour/1400 newfstatat(dfd: 19, filename: "", statbuf: 0x557525061378, flag: EMPTY_PATH) = 0
       0.047 ( 0.003 ms): abrt-dump-jour/1400 newfstatat(dfd: 20, filename: "", statbuf: 0x5575250b8cc8, flag: EMPTY_PATH) = 0
       0.053 ( 0.003 ms): abrt-dump-jour/1400 newfstatat(dfd: 22, filename: "", statbuf: 0x5575250535d8, flag: EMPTY_PATH) = 0
  root@number:~#

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-trace.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index ef0dfffd99fdf3cc..d3ec244e692a415e 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -978,7 +978,6 @@ static const struct syscall_fmt syscall_fmts[] = {
 		   [1] = { .scnprintf = SCA_FILENAME,	  /* path */ },
 		   [2] = { .scnprintf = SCA_FSPICK_FLAGS, /* flags */ }, }, },
 	{ .name	    = "fstat", .alias = "newfstat", },
-	{ .name	    = "fstatat", .alias = "newfstatat", },
 	{ .name	    = "futex",
 	  .arg = { [1] = { .scnprintf = SCA_FUTEX_OP, /* op */ },
 		   [5] = { .scnprintf = SCA_FUTEX_VAL3, /* val3 */ }, }, },
@@ -1060,8 +1059,10 @@ static const struct syscall_fmt syscall_fmts[] = {
 	  .arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
 	{ .name	    = "nanosleep",
 	  .arg = { [0] = { .scnprintf = SCA_TIMESPEC,  /* req */ }, }, },
-	{ .name	    = "newfstatat",
-	  .arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
+	{ .name	    = "newfstatat", .alias = "fstatat",
+	  .arg = { [0] = { .scnprintf = SCA_FDAT,	  /* dirfd */ },
+		   [1] = { .scnprintf = SCA_FILENAME,	  /* pathname */ },
+		   [3] = { .scnprintf = SCA_FS_AT_FLAGS, /* flags */ }, }, },
 	{ .name	    = "open",
 	  .arg = { [1] = { .scnprintf = SCA_OPEN_FLAGS, /* flags */ }, }, },
 	{ .name	    = "open_by_handle_at",
-- 
2.44.0
Re: [PATCH 5/5] perf trace: Fix 'newfstatat'/'fstatat' argument pretty printing
Posted by Ian Rogers 1 year, 10 months ago
On Wed, Mar 20, 2024 at 12:31 PM Arnaldo Carvalho de Melo
<acme@kernel.org> wrote:
>
> From: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> There were needless two entries, one for 'newfstatat' and another for
> 'fstatat', keep just one and pretty print its 'flags' argument using the
> fs_at_flags scnprintf that is also used by other FS syscalls such as
> 'stat', now:
>
>   root@number:~# perf trace -e newfstatat --max-events=5
>        0.000 ( 0.010 ms): abrt-dump-jour/1400 newfstatat(dfd: 7, filename: "", statbuf: 0x7fff0d127000, flag: EMPTY_PATH) = 0
>        0.020 ( 0.003 ms): abrt-dump-jour/1400 newfstatat(dfd: 9, filename: "", statbuf: 0x55752507b0e8, flag: EMPTY_PATH) = 0
>        0.039 ( 0.004 ms): abrt-dump-jour/1400 newfstatat(dfd: 19, filename: "", statbuf: 0x557525061378, flag: EMPTY_PATH) = 0
>        0.047 ( 0.003 ms): abrt-dump-jour/1400 newfstatat(dfd: 20, filename: "", statbuf: 0x5575250b8cc8, flag: EMPTY_PATH) = 0
>        0.053 ( 0.003 ms): abrt-dump-jour/1400 newfstatat(dfd: 22, filename: "", statbuf: 0x5575250535d8, flag: EMPTY_PATH) = 0
>   root@number:~#
>
> Cc: Adrian Hunter <adrian.hunter@intel.com>
> Cc: Ian Rogers <irogers@google.com>
> Cc: Jiri Olsa <jolsa@kernel.org>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Reviewed-by: Ian Rogers <irogers@google.com>

Thanks,
Ian

> ---
>  tools/perf/builtin-trace.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
> index ef0dfffd99fdf3cc..d3ec244e692a415e 100644
> --- a/tools/perf/builtin-trace.c
> +++ b/tools/perf/builtin-trace.c
> @@ -978,7 +978,6 @@ static const struct syscall_fmt syscall_fmts[] = {
>                    [1] = { .scnprintf = SCA_FILENAME,     /* path */ },
>                    [2] = { .scnprintf = SCA_FSPICK_FLAGS, /* flags */ }, }, },
>         { .name     = "fstat", .alias = "newfstat", },
> -       { .name     = "fstatat", .alias = "newfstatat", },
>         { .name     = "futex",
>           .arg = { [1] = { .scnprintf = SCA_FUTEX_OP, /* op */ },
>                    [5] = { .scnprintf = SCA_FUTEX_VAL3, /* val3 */ }, }, },
> @@ -1060,8 +1059,10 @@ static const struct syscall_fmt syscall_fmts[] = {
>           .arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
>         { .name     = "nanosleep",
>           .arg = { [0] = { .scnprintf = SCA_TIMESPEC,  /* req */ }, }, },
> -       { .name     = "newfstatat",
> -         .arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
> +       { .name     = "newfstatat", .alias = "fstatat",
> +         .arg = { [0] = { .scnprintf = SCA_FDAT,         /* dirfd */ },
> +                  [1] = { .scnprintf = SCA_FILENAME,     /* pathname */ },
> +                  [3] = { .scnprintf = SCA_FS_AT_FLAGS, /* flags */ }, }, },
>         { .name     = "open",
>           .arg = { [1] = { .scnprintf = SCA_OPEN_FLAGS, /* flags */ }, }, },
>         { .name     = "open_by_handle_at",
> --
> 2.44.0
>