perf tools: Add debug prints for ordered events queue
Adding some prints for ordered events queue, to help debug issues. Adding debug_ordered_events debug variable to be able to enable ordered events debug messages using: $ perf --debug ordered-events=2 report ... Also using oe pointer in perf_session__queue_event instead of chained session variable dereferencing. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Acked-by: David Ahern <dsahern@gmail.com> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jean Pihet <jean.pihet@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/n/tip-7p3mnnopjvsp9nmk9msqcfkm@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
94786b67b5
commit
cee3ab9caa
@@ -13,8 +13,12 @@
|
||||
#include "util.h"
|
||||
#include "target.h"
|
||||
|
||||
#define NSECS_PER_SEC 1000000000ULL
|
||||
#define NSECS_PER_USEC 1000ULL
|
||||
|
||||
int verbose;
|
||||
bool dump_trace = false, quiet = false;
|
||||
int debug_ordered_events;
|
||||
|
||||
static int _eprintf(int level, int var, const char *fmt, va_list args)
|
||||
{
|
||||
@@ -42,6 +46,35 @@ int eprintf(int level, int var, const char *fmt, ...)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __eprintf_time(u64 t, const char *fmt, va_list args)
|
||||
{
|
||||
int ret = 0;
|
||||
u64 secs, usecs, nsecs = t;
|
||||
|
||||
secs = nsecs / NSECS_PER_SEC;
|
||||
nsecs -= secs * NSECS_PER_SEC;
|
||||
usecs = nsecs / NSECS_PER_USEC;
|
||||
|
||||
ret = fprintf(stderr, "[%13" PRIu64 ".%06" PRIu64 "] ",
|
||||
secs, usecs);
|
||||
ret += vfprintf(stderr, fmt, args);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int eprintf_time(int level, int var, u64 t, const char *fmt, ...)
|
||||
{
|
||||
int ret = 0;
|
||||
va_list args;
|
||||
|
||||
if (var >= level) {
|
||||
va_start(args, fmt);
|
||||
ret = __eprintf_time(t, fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Overloading libtraceevent standard info print
|
||||
* function, display with -v in perf.
|
||||
@@ -110,7 +143,8 @@ static struct debug_variable {
|
||||
const char *name;
|
||||
int *ptr;
|
||||
} debug_variables[] = {
|
||||
{ .name = "verbose", .ptr = &verbose },
|
||||
{ .name = "verbose", .ptr = &verbose },
|
||||
{ .name = "ordered-events", .ptr = &debug_ordered_events},
|
||||
{ .name = NULL, }
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user