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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).