perf trace beauty: Print O_RDONLY when (flags & O_ACCMODE) == 0
authorArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 17 Dec 2018 14:55:57 +0000 (11:55 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 18 Dec 2018 19:07:42 +0000 (16:07 -0300)
And there are more flags, to match strace's output.

 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3

Also to help with regression tests.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-ofovpmvdli3bwch30936xn7t@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/trace/beauty/open_flags.c

index 6da48893a1bb6c39e1b5bb9e1931ee21e9787c8a..78f6566ef110983063220759550aad75caab9a81 100644 (file)
@@ -27,8 +27,10 @@ size_t open__scnprintf_flags(unsigned long flags, char *bf, size_t size, bool sh
        const char *prefix = "O_";
        int printed = 0;
 
+       if ((flags & O_ACCMODE) == O_RDONLY)
+               printed = scnprintf(bf, size, "%s%s", show_prefix ? prefix : "", "RDONLY");
        if (flags == 0)
-               return scnprintf(bf, size, "%s%s", show_prefix ? prefix : "", "RDONLY");
+               return printed;
 #define        P_FLAG(n) \
        if (flags & O_##n) { \
                printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \