Messages in this thread | | | Date | Thu, 27 Aug 2009 11:57:33 -0400 (EDT) | From | Steven Rostedt <> | Subject | Re: [PATCH] tracing/profile: Fix profile_disable vs module_unload |
| |
On Thu, 27 Aug 2009, Peter Zijlstra wrote:
> On Wed, 2009-08-26 at 15:48 -0400, Steven Rostedt wrote: > > \ > > @@ -399,16 +413,20 @@ static int ftrace_profile_enable_##call(struct ftrace_event_call *event_call) \ > > { \ > > int ret = 0; \ > > \ > > - if (!atomic_inc_return(&event_call->profile_count)) \ > > + if (!atomic_inc_return(&event_call->profile_count)) { \ > > + event_trace_up_ref(); \ > > ret = register_trace_##call(ftrace_profile_##call); \ > > + } \ > > \ > > return ret; \ > > } \ > > \ > > static void ftrace_profile_disable_##call(struct ftrace_event_call *event_call)\ > > { \ > > - if (atomic_add_negative(-1, &event_call->profile_count)) \ > > + if (atomic_add_negative(-1, &event_call->profile_count)) { \ > > unregister_trace_##call(ftrace_profile_##call); \ > > + event_trace_down_ref(); \ > > + } \ > > } > > Ha, almost, make that {un,}register_ftrace_##call() and stick the module > gunk in there, and I'm ok.
Peter, that {un,}register_tace_##call is the tracepoint code. The DEFINE_TRACE creates those functions. This is the lowest level we can go in the ftrace.h file.
-- Steve
| |