mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH perf 0/2] perf: trace-event-parse: support more operators and print formats
@ 2011-03-10 22:55 David Sharp
  2011-03-10 22:55 ` [PATCH perf 1/2] perf: trace-event-parse: support additional operators: '!', '~', and '!=' David Sharp
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: David Sharp @ 2011-03-10 22:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Sharp, Steven Rostedt, Ingo Molnar, Stephane Eranian

These patches correspond to similar patches recently applied to trace-cmd

Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Stephane Eranian <eranian@google.com>

David Sharp (2):
  perf: trace-event-parse: support additional operators: '!', '~',  and
    '!='
  perf: trace-event-parse: support printing short fields

 tools/perf/util/trace-event-parse.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

-- 
1.7.3.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH perf 1/2] perf: trace-event-parse: support additional operators: '!', '~',  and '!='
  2011-03-10 22:55 [PATCH perf 0/2] perf: trace-event-parse: support more operators and print formats David Sharp
@ 2011-03-10 22:55 ` David Sharp
  2011-03-10 22:55 ` [PATCH perf 2/2] perf: trace-event-parse: support printing short fields David Sharp
  2011-03-10 23:17 ` [PATCH perf 0/2] perf: trace-event-parse: support more operators and print formats Steven Rostedt
  2 siblings, 0 replies; 5+ messages in thread
From: David Sharp @ 2011-03-10 22:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Sharp, Steven Rostedt, Ingo Molnar, Stephane Eranian

Add support for the unary operators '!' and '~', and support '!=' so that
it is differentiated from '!'.

Signed-off-by: David Sharp <dhsharp@google.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Stephane Eranian <eranian@google.com>
---
 tools/perf/util/trace-event-parse.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c
index 73a0222..67fe01a 100644
--- a/tools/perf/util/trace-event-parse.c
+++ b/tools/perf/util/trace-event-parse.c
@@ -1107,6 +1107,9 @@ static int get_op_prio(char *op)
 {
 	if (!op[1]) {
 		switch (op[0]) {
+		case '~':
+		case '!':
+			return 4;
 		case '*':
 		case '/':
 		case '%':
@@ -1184,6 +1187,7 @@ process_op(struct event *event, struct print_arg *arg, char **tok)
 			return EVENT_ERROR;
 		}
 		switch (token[0]) {
+		case '~':
 		case '!':
 		case '+':
 		case '-':
@@ -2109,6 +2113,21 @@ static unsigned long long eval_num_arg(void *data, int size,
 		left = eval_num_arg(data, size, event, arg->op.left);
 		right = eval_num_arg(data, size, event, arg->op.right);
 		switch (arg->op.op[0]) {
+		case '!':
+			switch (arg->op.op[1]) {
+			case 0:
+				val = !right;
+				break;
+			case '=':
+				val = left != right;
+				break;
+			default:
+				die("unknown op '%s'", arg->op.op);
+			}
+			break;
+		case '~':
+			val = ~right;
+			break;
 		case '|':
 			if (arg->op.op[1])
 				val = left || right;
-- 
1.7.3.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH perf 2/2] perf: trace-event-parse: support printing short fields
  2011-03-10 22:55 [PATCH perf 0/2] perf: trace-event-parse: support more operators and print formats David Sharp
  2011-03-10 22:55 ` [PATCH perf 1/2] perf: trace-event-parse: support additional operators: '!', '~', and '!=' David Sharp
@ 2011-03-10 22:55 ` David Sharp
  2011-03-10 23:17 ` [PATCH perf 0/2] perf: trace-event-parse: support more operators and print formats Steven Rostedt
  2 siblings, 0 replies; 5+ messages in thread
From: David Sharp @ 2011-03-10 22:55 UTC (permalink / raw)
  To: linux-kernel; +Cc: David Sharp, Steven Rostedt, Ingo Molnar, Stephane Eranian

Handle "%hd" etc. in pretty_print()

Signed-off-by: David Sharp <dhsharp@google.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Stephane Eranian <eranian@google.com>
---
 tools/perf/util/trace-event-parse.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c
index 67fe01a..0cf4366 100644
--- a/tools/perf/util/trace-event-parse.c
+++ b/tools/perf/util/trace-event-parse.c
@@ -2534,6 +2534,9 @@ static void pretty_print(void *data, int size, struct event *event)
 			case '%':
 				printf("%%");
 				break;
+			case 'h':
+				ls--;
+				goto cont_process;
 			case 'l':
 				ls++;
 				goto cont_process;
@@ -2589,6 +2592,12 @@ static void pretty_print(void *data, int size, struct event *event)
 					}
 				}
 				switch (ls) {
+				case -2:
+					printf(format, (char)val);
+					break;
+				case -1:
+					printf(format, (short)val);
+					break;
 				case 0:
 					printf(format, (int)val);
 					break;
-- 
1.7.3.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH perf 0/2] perf: trace-event-parse: support more operators and print formats
  2011-03-10 22:55 [PATCH perf 0/2] perf: trace-event-parse: support more operators and print formats David Sharp
  2011-03-10 22:55 ` [PATCH perf 1/2] perf: trace-event-parse: support additional operators: '!', '~', and '!=' David Sharp
  2011-03-10 22:55 ` [PATCH perf 2/2] perf: trace-event-parse: support printing short fields David Sharp
@ 2011-03-10 23:17 ` Steven Rostedt
  2 siblings, 0 replies; 5+ messages in thread
From: Steven Rostedt @ 2011-03-10 23:17 UTC (permalink / raw)
  To: David Sharp
  Cc: linux-kernel, Ingo Molnar, Stephane Eranian,
	Arnaldo Carvalho de Melo, Frederic Weisbecker

[ Added Cc for Arnaldo and Frederic ]

-- Steve


On Thu, 2011-03-10 at 14:55 -0800, David Sharp wrote:
> These patches correspond to similar patches recently applied to trace-cmd
> 
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Cc: Ingo Molnar <mingo@elte.hu>
> Cc: Stephane Eranian <eranian@google.com>
> 
> David Sharp (2):
>   perf: trace-event-parse: support additional operators: '!', '~',  and
>     '!='
>   perf: trace-event-parse: support printing short fields
> 
>  tools/perf/util/trace-event-parse.c |   28 ++++++++++++++++++++++++++++
>  1 files changed, 28 insertions(+), 0 deletions(-)
> 



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH perf 1/2] perf: trace-event-parse: support additional operators: '!', '~',  and '!='
  2011-03-21 22:34 David Sharp
@ 2011-03-21 22:34 ` David Sharp
  0 siblings, 0 replies; 5+ messages in thread
From: David Sharp @ 2011-03-21 22:34 UTC (permalink / raw)
  To: linux-kernel
  Cc: mrubin, David Sharp, Arnaldo Carvalho de Melo,
	Frederic Weisbecker, Steven Rostedt, Ingo Molnar,
	Stephane Eranian

Add support for the unary operators '!' and '~', and support '!=' so that
it is differentiated from '!'.

Signed-off-by: David Sharp <dhsharp@google.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Stephane Eranian <eranian@google.com>
---
 tools/perf/util/trace-event-parse.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c
index 73a0222..67fe01a 100644
--- a/tools/perf/util/trace-event-parse.c
+++ b/tools/perf/util/trace-event-parse.c
@@ -1107,6 +1107,9 @@ static int get_op_prio(char *op)
 {
 	if (!op[1]) {
 		switch (op[0]) {
+		case '~':
+		case '!':
+			return 4;
 		case '*':
 		case '/':
 		case '%':
@@ -1184,6 +1187,7 @@ process_op(struct event *event, struct print_arg *arg, char **tok)
 			return EVENT_ERROR;
 		}
 		switch (token[0]) {
+		case '~':
 		case '!':
 		case '+':
 		case '-':
@@ -2109,6 +2113,21 @@ static unsigned long long eval_num_arg(void *data, int size,
 		left = eval_num_arg(data, size, event, arg->op.left);
 		right = eval_num_arg(data, size, event, arg->op.right);
 		switch (arg->op.op[0]) {
+		case '!':
+			switch (arg->op.op[1]) {
+			case 0:
+				val = !right;
+				break;
+			case '=':
+				val = left != right;
+				break;
+			default:
+				die("unknown op '%s'", arg->op.op);
+			}
+			break;
+		case '~':
+			val = ~right;
+			break;
 		case '|':
 			if (arg->op.op[1])
 				val = left || right;
-- 
1.7.3.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-03-21 22:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-10 22:55 [PATCH perf 0/2] perf: trace-event-parse: support more operators and print formats David Sharp
2011-03-10 22:55 ` [PATCH perf 1/2] perf: trace-event-parse: support additional operators: '!', '~', and '!=' David Sharp
2011-03-10 22:55 ` [PATCH perf 2/2] perf: trace-event-parse: support printing short fields David Sharp
2011-03-10 23:17 ` [PATCH perf 0/2] perf: trace-event-parse: support more operators and print formats Steven Rostedt
2011-03-21 22:34 David Sharp
2011-03-21 22:34 ` [PATCH perf 1/2] perf: trace-event-parse: support additional operators: '!', '~', and '!=' David Sharp

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome