This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: Missing tracepoints in systemtap? stap -L 'kernel.trace("*")' vs cat /sys/kernel/debug/tracing/available_events
- From: Josh Stone <jistone at redhat dot com>
- To: William Cohen <wcohen at redhat dot com>
- Cc: "systemtap at sources dot redhat dot com" <systemtap at sources dot redhat dot com>
- Date: Tue, 02 Feb 2010 12:30:27 -0800
- Subject: Re: Missing tracepoints in systemtap? stap -L 'kernel.trace("*")' vs cat /sys/kernel/debug/tracing/available_events
- References: <4B6849C6.5040200@redhat.com>
On 02/02/2010 07:50 AM, William Cohen wrote:
> There are a couple events that show up for systemtap but not for
> /sys/kernel/debug/tracing/available_events:
>
> -kvm_mmio
This one is because we discover the tracepoints offline, and kvm is
often built as a module. Debugfs only reports online events, so it
won't list the kvm tracepoint if the module isn't loaded.
> -napi_poll
This one is defined using DECLARE_TRACE, which doesn't bring it into the
ftrace/perf infrastructure (as with the TRACE_EVENT family).
> Most of the missing events are sys_*
We do support the raw tracepoints for sys_enter and sys_exit. The rest
are not really tracepoints, but rather have a special implementation in
ftrace -- grep CONFIG_FTRACE_SYSCALLS.
> and there are some i915_* events only in the available_events.
The i915 tracepoints are defined in drivers/gpu/drm/i915/i915_trace.h,
which isn't part of our normal search path. We can't directly use any
tracepoints like this from a module, as we won't have the proper
callback signature. See also:
http://sourceware.org/bugzilla/show_bug.cgi?id=10745
> However, I am surprised that the hrtimer_*, itimer_*, and timer_
> events from the kernel's include/trace/events didn't show up for
> systemtap.
This is because the timer.h header fails on the unknown cputime_t type.
I don't see anything obvious of why this would have changed -- perhaps
some chained header stopped including that definition. In any case, we
could hack around it like so:
diff --git a/tapsets.cxx b/tapsets.cxx
index dafec5f..32016a2 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -6107,6 +6107,7 @@ static vector<string> tracepoint_extra_headers ()
// PR 9993
// XXX: may need this to be configurable
they_live.push_back ("linux/skbuff.h");
+ they_live.push_back ("asm/cputime.h");
return they_live;
}
Or consider sending a patch to the kernel adding that #include directly.
Josh