From: Benjamin Peterson <benjamin@python.org>
To: peterz@infradead.org, mingo@redhat.com, acme@kernel.org,
alexander.shishkin@linux.intel.com, jolsa@redhat.com,
namhyung@kernel.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] perf trace beautify: Beautify flags of mount(2) and umount(2).
Date: Mon, 27 Aug 2018 20:53:44 -0700 [thread overview]
Message-ID: <20180828035344.31500-1-benjamin@python.org> (raw)
Example output of perf trace -e mount,umount2:
6243.930 ( 0.052 ms): mount/30976 mount(dev_name: 0x55dc541bb920, dir_name: 0x55dc541bc960, type: 0x55dc541b9c40, flags: BIND) = 0
7851.821 (26.015 ms): umount/30983 umount2(name: 0x558daa82cf50, flags: MNT_FORCE ) = 0
Signed-off-by: Benjamin Peterson <benjamin@python.org>
---
tools/perf/builtin-trace.c | 5 ++
tools/perf/trace/beauty/mount_flags.c | 79 +++++++++++++++++++++++++++
2 files changed, 84 insertions(+)
create mode 100644 tools/perf/trace/beauty/mount_flags.c
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 22ab8e67c760..3cffb25d1928 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -603,6 +603,7 @@ static size_t syscall_arg__scnprintf_getrandom_flags(char *bf, size_t size,
#include "trace/beauty/futex_val3.c"
#include "trace/beauty/mmap.c"
#include "trace/beauty/mode_t.c"
+#include "trace/beauty/mount_flags.c"
#include "trace/beauty/msg_flags.c"
#include "trace/beauty/open_flags.c"
#include "trace/beauty/perf_event_open.c"
@@ -722,6 +723,8 @@ static struct syscall_fmt {
.arg = { [0] = { .scnprintf = SCA_HEX, /* addr */ },
[2] = { .scnprintf = SCA_MMAP_PROT, /* prot */ },
[3] = { .scnprintf = SCA_MMAP_FLAGS, /* flags */ }, }, },
+ { .name = "mount",
+ .arg = { [3] = { .scnprintf = SCA_MOUNT_FLAGS, /* flags */ }, }, },
{ .name = "mprotect",
.arg = { [0] = { .scnprintf = SCA_HEX, /* start */ },
[2] = { .scnprintf = SCA_MMAP_PROT, /* prot */ }, }, },
@@ -830,6 +833,8 @@ static struct syscall_fmt {
.arg = { [2] = { .scnprintf = SCA_SIGNUM, /* sig */ }, }, },
{ .name = "tkill",
.arg = { [1] = { .scnprintf = SCA_SIGNUM, /* sig */ }, }, },
+ { .name = "umount2", .alias = "umount",
+ .arg = { [1] = { .scnprintf = SCA_UMOUNT_FLAGS, /* flags */ }, }, },
{ .name = "uname", .alias = "newuname", },
{ .name = "unlinkat",
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
diff --git a/tools/perf/trace/beauty/mount_flags.c b/tools/perf/trace/beauty/mount_flags.c
new file mode 100644
index 000000000000..86790b82c869
--- /dev/null
+++ b/tools/perf/trace/beauty/mount_flags.c
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <sys/mount.h>
+
+static size_t syscall_arg__scnprintf_mount_flags(char *bf, size_t size, struct syscall_arg *arg)
+{
+ size_t printed = 0;
+ int flags = arg->val;
+
+ if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
+ flags &= ~MS_MGC_MSK;
+
+#define P_FLAG(n) \
+ if (flags & MS_##n) { \
+ printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \
+ flags &= ~MS_##n; \
+ }
+
+ P_FLAG(RDONLY);
+ P_FLAG(NOSUID);
+ P_FLAG(NODEV);
+ P_FLAG(NOEXEC);
+ P_FLAG(SYNCHRONOUS);
+ P_FLAG(REMOUNT);
+ P_FLAG(MANDLOCK);
+ P_FLAG(DIRSYNC);
+ P_FLAG(NOATIME);
+ P_FLAG(NODIRATIME);
+ P_FLAG(BIND);
+ P_FLAG(MOVE);
+ P_FLAG(REC);
+ P_FLAG(SILENT);
+ P_FLAG(POSIXACL);
+ P_FLAG(UNBINDABLE);
+ P_FLAG(PRIVATE);
+ P_FLAG(SLAVE);
+ P_FLAG(SHARED);
+ P_FLAG(RELATIME);
+ P_FLAG(KERNMOUNT);
+ P_FLAG(I_VERSION);
+ P_FLAG(STRICTATIME);
+ P_FLAG(LAZYTIME);
+ P_FLAG(ACTIVE);
+ P_FLAG(NOUSER);
+
+#undef P_FLAG
+
+ if (flags)
+ printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags);
+
+ return printed;
+}
+
+#define SCA_MOUNT_FLAGS syscall_arg__scnprintf_mount_flags
+
+static size_t syscall_arg__scnprintf_umount_flags(char *bf, size_t size, struct syscall_arg *arg)
+{
+ size_t printed = 0;
+ int flags = arg->val;
+
+#define P_FLAG(n) \
+ if (flags & n) { \
+ printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \
+ flags &= ~n; \
+ }
+
+ P_FLAG(MNT_FORCE);
+ P_FLAG(MNT_DETACH);
+ P_FLAG(MNT_EXPIRE);
+ P_FLAG(UMOUNT_NOFOLLOW);
+
+#undef P_FLAG
+
+ if (flags)
+ printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags);
+
+ return printed;
+}
+
+#define SCA_UMOUNT_FLAGS syscall_arg__scnprintf_umount_flags
--
2.17.1
next reply other threads:[~2018-08-28 4:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-28 3:53 Benjamin Peterson [this message]
2018-08-30 18:28 ` [PATCH] perf trace beautify: Beautify flags of mount(2) and umount(2) Arnaldo Carvalho de Melo
2018-08-30 21:50 ` Benjamin Peterson
2018-10-10 3:52 ` Benjamin Peterson
2018-10-10 12:55 ` Arnaldo Carvalho de Melo
2018-10-10 12:56 ` Arnaldo Carvalho de Melo
2018-10-23 2:40 ` Benjamin Peterson
2018-10-24 20:18 ` Arnaldo Carvalho de Melo
2018-10-26 6:23 ` Benjamin Peterson
2018-09-06 13:44 ` [tip:perf/core] perf trace beauty: Alias 'umount' to 'umount2' tip-bot for Benjamin Peterson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180828035344.31500-1-benjamin@python.org \
--to=benjamin@python.org \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.