[RFC PATCH 1/8] tracing: probeevent: Cleanup print argument functions

2018-02-13 Thread Masami Hiramatsu
Current print argument functions prints the argument
name too. It is not good for printing out multiple
values for one argument. This change it to just print
out the value.

Signed-off-by: Masami Hiramatsu 
---
 kernel/trace/trace_kprobe.c |   20 ++--
 kernel/trace/trace_probe.c  |   12 +---
 kernel/trace/trace_probe.h  |   19 ---
 kernel/trace/trace_uprobe.c |9 ++---
 4 files changed, 29 insertions(+), 31 deletions(-)

diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 492700c5fb4d..7d9df336805e 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -1058,8 +1058,6 @@ print_kprobe_event(struct trace_iterator *iter, int flags,
struct kprobe_trace_entry_head *field;
struct trace_seq *s = >seq;
struct trace_probe *tp;
-   u8 *data;
-   int i;
 
field = (struct kprobe_trace_entry_head *)iter->ent;
tp = container_of(event, struct trace_probe, call.event);
@@ -1071,11 +1069,9 @@ print_kprobe_event(struct trace_iterator *iter, int 
flags,
 
trace_seq_putc(s, ')');
 
-   data = (u8 *)[1];
-   for (i = 0; i < tp->nr_args; i++)
-   if (!tp->args[i].type->print(s, tp->args[i].name,
-data + tp->args[i].offset, field))
-   goto out;
+   if (print_probe_args(s, tp->args, tp->nr_args,
+(u8 *)[1], field) < 0)
+   goto out;
 
trace_seq_putc(s, '\n');
  out:
@@ -1089,8 +1085,6 @@ print_kretprobe_event(struct trace_iterator *iter, int 
flags,
struct kretprobe_trace_entry_head *field;
struct trace_seq *s = >seq;
struct trace_probe *tp;
-   u8 *data;
-   int i;
 
field = (struct kretprobe_trace_entry_head *)iter->ent;
tp = container_of(event, struct trace_probe, call.event);
@@ -1107,11 +1101,9 @@ print_kretprobe_event(struct trace_iterator *iter, int 
flags,
 
trace_seq_putc(s, ')');
 
-   data = (u8 *)[1];
-   for (i = 0; i < tp->nr_args; i++)
-   if (!tp->args[i].type->print(s, tp->args[i].name,
-data + tp->args[i].offset, field))
-   goto out;
+   if (print_probe_args(s, tp->args, tp->nr_args,
+(u8 *)[1], field) < 0)
+   goto out;
 
trace_seq_putc(s, '\n');
 
diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c
index d59357308677..4a6021fd14df 100644
--- a/kernel/trace/trace_probe.c
+++ b/kernel/trace/trace_probe.c
@@ -38,10 +38,9 @@ const char *reserved_field_names[] = {
 
 /* Printing  in basic type function template */
 #define DEFINE_BASIC_PRINT_TYPE_FUNC(tname, type, fmt) \
-int PRINT_TYPE_FUNC_NAME(tname)(struct trace_seq *s, const char *name, \
-   void *data, void *ent)  \
+int PRINT_TYPE_FUNC_NAME(tname)(struct trace_seq *s, void *data, void *ent)\
 {  \
-   trace_seq_printf(s, " %s=" fmt, name, *(type *)data);   \
+   trace_seq_printf(s, fmt, *(type *)data);\
return !trace_seq_has_overflowed(s);\
 }  \
 const char PRINT_TYPE_FMT_NAME(tname)[] = fmt; \
@@ -61,15 +60,14 @@ DEFINE_BASIC_PRINT_TYPE_FUNC(x32, u32, "0x%x")
 DEFINE_BASIC_PRINT_TYPE_FUNC(x64, u64, "0x%Lx")
 
 /* Print type function for string type */
-int PRINT_TYPE_FUNC_NAME(string)(struct trace_seq *s, const char *name,
-void *data, void *ent)
+int PRINT_TYPE_FUNC_NAME(string)(struct trace_seq *s, void *data, void *ent)
 {
int len = *(u32 *)data >> 16;
 
if (!len)
-   trace_seq_printf(s, " %s=(fault)", name);
+   trace_seq_puts(s, "(fault)");
else
-   trace_seq_printf(s, " %s=\"%s\"", name,
+   trace_seq_printf(s, "\"%s\"",
 (const char *)get_loc_data(data, ent));
return !trace_seq_has_overflowed(s);
 }
diff --git a/kernel/trace/trace_probe.h b/kernel/trace/trace_probe.h
index fb66e3eaa192..cbefd29a0131 100644
--- a/kernel/trace/trace_probe.h
+++ b/kernel/trace/trace_probe.h
@@ -94,7 +94,7 @@ static nokprobe_inline void *get_loc_data(u32 *dl, void *ent)
 /* Data fetch function type */
 typedefvoid (*fetch_func_t)(struct pt_regs *, void *, void *);
 /* Printing function type */
-typedef int (*print_type_func_t)(struct trace_seq *, const char *, void *, 
void *);
+typedef int (*print_type_func_t)(struct trace_seq *, void *, void *);
 
 /* Fetch types */
 enum {
@@ -136,8 +136,7 @@ typedef u32 string_size;
 
 /* Printing  in basic type function template */
 #define DECLARE_BASIC_PRINT_TYPE_FUNC(type)   

[RFC PATCH 1/8] tracing: probeevent: Cleanup print argument functions

2018-02-13 Thread Masami Hiramatsu
Current print argument functions prints the argument
name too. It is not good for printing out multiple
values for one argument. This change it to just print
out the value.

Signed-off-by: Masami Hiramatsu 
---
 kernel/trace/trace_kprobe.c |   20 ++--
 kernel/trace/trace_probe.c  |   12 +---
 kernel/trace/trace_probe.h  |   19 ---
 kernel/trace/trace_uprobe.c |9 ++---
 4 files changed, 29 insertions(+), 31 deletions(-)

diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c
index 492700c5fb4d..7d9df336805e 100644
--- a/kernel/trace/trace_kprobe.c
+++ b/kernel/trace/trace_kprobe.c
@@ -1058,8 +1058,6 @@ print_kprobe_event(struct trace_iterator *iter, int flags,
struct kprobe_trace_entry_head *field;
struct trace_seq *s = >seq;
struct trace_probe *tp;
-   u8 *data;
-   int i;
 
field = (struct kprobe_trace_entry_head *)iter->ent;
tp = container_of(event, struct trace_probe, call.event);
@@ -1071,11 +1069,9 @@ print_kprobe_event(struct trace_iterator *iter, int 
flags,
 
trace_seq_putc(s, ')');
 
-   data = (u8 *)[1];
-   for (i = 0; i < tp->nr_args; i++)
-   if (!tp->args[i].type->print(s, tp->args[i].name,
-data + tp->args[i].offset, field))
-   goto out;
+   if (print_probe_args(s, tp->args, tp->nr_args,
+(u8 *)[1], field) < 0)
+   goto out;
 
trace_seq_putc(s, '\n');
  out:
@@ -1089,8 +1085,6 @@ print_kretprobe_event(struct trace_iterator *iter, int 
flags,
struct kretprobe_trace_entry_head *field;
struct trace_seq *s = >seq;
struct trace_probe *tp;
-   u8 *data;
-   int i;
 
field = (struct kretprobe_trace_entry_head *)iter->ent;
tp = container_of(event, struct trace_probe, call.event);
@@ -1107,11 +1101,9 @@ print_kretprobe_event(struct trace_iterator *iter, int 
flags,
 
trace_seq_putc(s, ')');
 
-   data = (u8 *)[1];
-   for (i = 0; i < tp->nr_args; i++)
-   if (!tp->args[i].type->print(s, tp->args[i].name,
-data + tp->args[i].offset, field))
-   goto out;
+   if (print_probe_args(s, tp->args, tp->nr_args,
+(u8 *)[1], field) < 0)
+   goto out;
 
trace_seq_putc(s, '\n');
 
diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c
index d59357308677..4a6021fd14df 100644
--- a/kernel/trace/trace_probe.c
+++ b/kernel/trace/trace_probe.c
@@ -38,10 +38,9 @@ const char *reserved_field_names[] = {
 
 /* Printing  in basic type function template */
 #define DEFINE_BASIC_PRINT_TYPE_FUNC(tname, type, fmt) \
-int PRINT_TYPE_FUNC_NAME(tname)(struct trace_seq *s, const char *name, \
-   void *data, void *ent)  \
+int PRINT_TYPE_FUNC_NAME(tname)(struct trace_seq *s, void *data, void *ent)\
 {  \
-   trace_seq_printf(s, " %s=" fmt, name, *(type *)data);   \
+   trace_seq_printf(s, fmt, *(type *)data);\
return !trace_seq_has_overflowed(s);\
 }  \
 const char PRINT_TYPE_FMT_NAME(tname)[] = fmt; \
@@ -61,15 +60,14 @@ DEFINE_BASIC_PRINT_TYPE_FUNC(x32, u32, "0x%x")
 DEFINE_BASIC_PRINT_TYPE_FUNC(x64, u64, "0x%Lx")
 
 /* Print type function for string type */
-int PRINT_TYPE_FUNC_NAME(string)(struct trace_seq *s, const char *name,
-void *data, void *ent)
+int PRINT_TYPE_FUNC_NAME(string)(struct trace_seq *s, void *data, void *ent)
 {
int len = *(u32 *)data >> 16;
 
if (!len)
-   trace_seq_printf(s, " %s=(fault)", name);
+   trace_seq_puts(s, "(fault)");
else
-   trace_seq_printf(s, " %s=\"%s\"", name,
+   trace_seq_printf(s, "\"%s\"",
 (const char *)get_loc_data(data, ent));
return !trace_seq_has_overflowed(s);
 }
diff --git a/kernel/trace/trace_probe.h b/kernel/trace/trace_probe.h
index fb66e3eaa192..cbefd29a0131 100644
--- a/kernel/trace/trace_probe.h
+++ b/kernel/trace/trace_probe.h
@@ -94,7 +94,7 @@ static nokprobe_inline void *get_loc_data(u32 *dl, void *ent)
 /* Data fetch function type */
 typedefvoid (*fetch_func_t)(struct pt_regs *, void *, void *);
 /* Printing function type */
-typedef int (*print_type_func_t)(struct trace_seq *, const char *, void *, 
void *);
+typedef int (*print_type_func_t)(struct trace_seq *, void *, void *);
 
 /* Fetch types */
 enum {
@@ -136,8 +136,7 @@ typedef u32 string_size;
 
 /* Printing  in basic type function template */
 #define DECLARE_BASIC_PRINT_TYPE_FUNC(type)