From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>,
Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Namhyung Kim <namhyung@kernel.org>
Subject: [PATCH 2/8] tools lib traceevent: Update printk formats when entered
Date: Fri, 01 Nov 2013 17:53:54 -0400 [thread overview]
Message-ID: <20131101215500.495619312@goodmis.org> (raw)
In-Reply-To: 20131101215352.875376844@goodmis.org
[-- Attachment #1: 0002-tools-lib-traceevent-Update-printk-formats-when-ente.patch --]
[-- Type: text/plain, Size: 3073 bytes --]
From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>
Instead of cropping off the '"' and '\n"' from a printk format every
time it is referenced, do it when it's added. This makes it easier
to reference a printk_map and should speed things up a little.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
tools/lib/traceevent/event-parse.c | 29 ++++++++++++++---------------
tools/lib/traceevent/event-parse.h | 2 +-
2 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
index deedff9..856b791 100644
--- a/tools/lib/traceevent/event-parse.c
+++ b/tools/lib/traceevent/event-parse.c
@@ -604,10 +604,11 @@ find_printk(struct pevent *pevent, unsigned long long addr)
* This registers a string by the address it was stored in the kernel.
* The @fmt passed in is duplicated.
*/
-int pevent_register_print_string(struct pevent *pevent, char *fmt,
+int pevent_register_print_string(struct pevent *pevent, const char *fmt,
unsigned long long addr)
{
struct printk_list *item = malloc(sizeof(*item));
+ char *p;
if (!item)
return -1;
@@ -615,10 +616,21 @@ int pevent_register_print_string(struct pevent *pevent, char *fmt,
item->next = pevent->printklist;
item->addr = addr;
+ /* Strip off quotes and '\n' from the end */
+ if (fmt[0] == '"')
+ fmt++;
item->printk = strdup(fmt);
if (!item->printk)
goto out_free;
+ p = item->printk + strlen(item->printk) - 1;
+ if (*p == '"')
+ *p = 0;
+
+ p -= 2;
+ if (strcmp(p, "\\n") == 0)
+ *p = 0;
+
pevent->printklist = item;
pevent->printk_count++;
@@ -3887,7 +3899,6 @@ get_bprint_format(void *data, int size __maybe_unused,
struct format_field *field;
struct printk_map *printk;
char *format;
- char *p;
field = pevent->bprint_fmt_field;
@@ -3909,20 +3920,8 @@ get_bprint_format(void *data, int size __maybe_unused,
return format;
}
- p = printk->printk;
- /* Remove any quotes. */
- if (*p == '"')
- p++;
- if (asprintf(&format, "%s : %s", "%pf", p) < 0)
+ if (asprintf(&format, "%s : %s", "%pf", printk->printk) < 0)
return NULL;
- /* remove ending quotes and new line since we will add one too */
- p = format + strlen(format) - 1;
- if (*p == '"')
- *p = 0;
-
- p -= 2;
- if (strcmp(p, "\\n") == 0)
- *p = 0;
return format;
}
diff --git a/tools/lib/traceevent/event-parse.h b/tools/lib/traceevent/event-parse.h
index 7503edf..9ab6367 100644
--- a/tools/lib/traceevent/event-parse.h
+++ b/tools/lib/traceevent/event-parse.h
@@ -533,7 +533,7 @@ int pevent_register_comm(struct pevent *pevent, const char *comm, int pid);
void pevent_register_trace_clock(struct pevent *pevent, char *trace_clock);
int pevent_register_function(struct pevent *pevent, char *name,
unsigned long long addr, char *mod);
-int pevent_register_print_string(struct pevent *pevent, char *fmt,
+int pevent_register_print_string(struct pevent *pevent, const char *fmt,
unsigned long long addr);
int pevent_pid_is_registered(struct pevent *pevent, int pid);
--
1.8.4.rc3
next prev parent reply other threads:[~2013-11-01 21:55 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-01 21:53 [PATCH 0/8] tools lib traceevent: Add changes from trace-cmd repo Steven Rostedt
2013-11-01 21:53 ` [PATCH 1/8] tools lib traceevent: Add support for extracting trace_clock in report Steven Rostedt
2013-11-01 21:53 ` Steven Rostedt [this message]
2013-11-04 20:22 ` [tip:perf/core] tools lib traceevent: Update printk formats when entered tip-bot for Steven Rostedt (Red Hat)
2013-11-01 21:53 ` [PATCH 3/8] tools lib traceevent: If %s is a pointer, check printk formats Steven Rostedt
2013-11-04 20:22 ` [tip:perf/core] " tip-bot for Steven Rostedt (Red Hat)
2013-11-01 21:53 ` [PATCH 4/8] tools lib traceevent: Handle __print_hex(__get_dynamic_array(fieldname), len) Steven Rostedt
2013-11-01 21:53 ` [PATCH 5/8] tools lib traceevent: Have bprintk output the same as the kernel does Steven Rostedt
2013-11-04 20:23 ` [tip:perf/core] " tip-bot for Steven Rostedt (Red Hat)
2013-11-01 21:53 ` [PATCH 6/8] tools lib traceevent: Check for spaces in character array Steven Rostedt
2013-11-04 20:23 ` [tip:perf/core] " tip-bot for Steven Rostedt (Red Hat)
2013-11-01 21:53 ` [PATCH 7/8] tools lib traceevent: Add flags NOHANDLE and PRINTRAW to individual events Steven Rostedt
2013-11-04 20:23 ` [tip:perf/core] " tip-bot for Steven Rostedt
2013-11-01 21:54 ` [PATCH 8/8] tools lib traceevent: Add pevent_print_func_field() helper function Steven Rostedt
2013-11-04 20:23 ` [tip:perf/core] tools lib traceevent: Add pevent_print_func_field () " tip-bot for Steven Rostedt
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=20131101215500.495619312@goodmis.org \
--to=rostedt@goodmis.org \
--cc=acme@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.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.