perf trace: Print the name of a syscall when failing to read its info
authorArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 24 Oct 2012 20:44:13 +0000 (18:44 -0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 24 Oct 2012 20:44:13 +0000 (18:44 -0200)
When failing to read the tracepoint event format, like currently with
sys_execve, that is not defined via SYSCALL_DEFINE macros and thus
doesn't have an entry in:

  $ ls -d /sys/kernel/debug/tracing/events/syscalls/sys_enter_*exec*
  /sys/kernel/debug/tracing/events/syscalls/sys_enter_kexec_load
  $

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/n/tip-`ranpwd
Link: http://lkml.kernel.org/n/tip-q3ak0j8b81yxylykq5wp2uwi@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-trace.c

index fb83cfe..ba05510 100644 (file)
@@ -278,7 +278,10 @@ static struct syscall *trace__syscall_info(struct trace *trace,
        return &trace->syscalls.table[id];
 
 out_cant_read:
-       printf("Problems reading syscall %d information\n", id);
+       printf("Problems reading syscall %d", id);
+       if (id <= trace->syscalls.max && trace->syscalls.table[id].name != NULL)
+               printf("(%s)", trace->syscalls.table[id].name);
+       puts(" information");
        return NULL;
 }