From: Tom Zanussi <zanussi@kernel.org>
To: Zhengjun Xing <zhengjun.xing@linux.intel.com>,
rostedt@goodmis.org, mingo@redhat.com,
tom.zanussi@linux.intel.com
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] trace:add "gfp_t" support in synthetic_events
Date: Wed, 10 Jul 2019 14:51:37 -0500 [thread overview]
Message-ID: <1562788297.6330.7.camel@kernel.org> (raw)
In-Reply-To: <20190704025506.30199-1-zhengjun.xing@linux.intel.com>
Hi Zhengjun,
On Thu, 2019-07-04 at 10:55 +0800, Zhengjun Xing wrote:
> Add "gfp_t" support in synthetic_events, then the "gfp_t" type
> parameter in some functions can be traced.
>
> Signed-off-by: Zhengjun Xing <zhengjun.xing@linux.intel.com>
> ---
> kernel/trace/trace_events_hist.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/kernel/trace/trace_events_hist.c
> b/kernel/trace/trace_events_hist.c
> index ca6b0dff60c5..0d3ab01b7cb5 100644
> --- a/kernel/trace/trace_events_hist.c
> +++ b/kernel/trace/trace_events_hist.c
> @@ -752,6 +752,8 @@ static int synth_field_size(char *type)
> size = sizeof(unsigned long);
> else if (strcmp(type, "pid_t") == 0)
> size = sizeof(pid_t);
> + else if (strcmp(type, "gfp_t") == 0)
> + size = sizeof(gfp_t);
> else if (synth_field_is_string(type))
> size = synth_field_string_size(type);
>
> @@ -792,6 +794,8 @@ static const char *synth_field_fmt(char *type)
> fmt = "%lu";
> else if (strcmp(type, "pid_t") == 0)
> fmt = "%d";
> + else if (strcmp(type, "gfp_t") == 0)
> + fmt = "%u";
> else if (synth_field_is_string(type))
> fmt = "%s";
>
This will work, but I think it would be better to display as hex, and
also show the flags in human-readable form.
How about adding something like this on top of your patch?:
[PATCH] tracing: Add verbose gfp_flag printing to synthetic events
Add on top of 'trace:add "gfp_t" support in synthetic_events'.
Prints the gfp flags as hex in addition to the human-readable flag
string. Example output:
whoopsie-630 [000] ...1 78.969452: testevent: bar=b20 (GFP_ATOMIC|__GFP_ZERO)
rcuc/0-11 [000] ...1 81.097555: testevent: bar=a20 (GFP_ATOMIC)
rcuc/0-11 [000] ...1 81.583123: testevent: bar=a20 (GFP_ATOMIC)
Signed-off-by: Tom Zanussi <zanussi@kernel.org>
---
kernel/trace/trace_events_hist.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
index 0d3ab01..aeb4449 100644
--- a/kernel/trace/trace_events_hist.c
+++ b/kernel/trace/trace_events_hist.c
@@ -13,6 +13,10 @@
#include <linux/rculist.h>
#include <linux/tracefs.h>
+/* for gfp flag names */
+#include <linux/trace_events.h>
+#include <trace/events/mmflags.h>
+
#include "tracing_map.h"
#include "trace.h"
#include "trace_dynevent.h"
@@ -795,7 +799,7 @@ static const char *synth_field_fmt(char *type)
else if (strcmp(type, "pid_t") == 0)
fmt = "%d";
else if (strcmp(type, "gfp_t") == 0)
- fmt = "%u";
+ fmt = "%x";
else if (synth_field_is_string(type))
fmt = "%s";
@@ -838,9 +842,20 @@ static enum print_line_t print_synth_event(struct trace_iterator *iter,
i == se->n_fields - 1 ? "" : " ");
n_u64 += STR_VAR_LEN_MAX / sizeof(u64);
} else {
+ struct trace_print_flags __flags[] =
+ { __def_gfpflag_names, { -1, NULL }};
+
trace_seq_printf(s, print_fmt, se->fields[i]->name,
entry->fields[n_u64],
i == se->n_fields - 1 ? "" : " ");
+
+ if (strcmp(se->fields[i]->type, "gfp_t") == 0) {
+ trace_seq_puts(s, " (");
+ trace_print_flags_seq(s, "|",
+ entry->fields[n_u64],
+ __flags);
+ trace_seq_putc(s, ')');
+ }
n_u64++;
}
}
--
2.7.4
next prev parent reply other threads:[~2019-07-10 19:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-04 2:55 [PATCH] trace:add "gfp_t" support in synthetic_events Zhengjun Xing
2019-07-10 19:51 ` Tom Zanussi [this message]
2019-07-11 8:11 ` Xing Zhengjun
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=1562788297.6330.7.camel@kernel.org \
--to=zanussi@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=tom.zanussi@linux.intel.com \
--cc=zhengjun.xing@linux.intel.com \
/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.