On Thu, 2009-12-03 at 09:09 -0500, Mathieu Desnoyers wrote: > * Steven Rostedt (rostedt@xxxxxxxxxxx) wrote: > > On Thu, 2009-12-03 at 08:51 -0500, Masami Hiramatsu wrote: > > > > > > Basically, we should have a: > > > > > > > > kernel/sched_trace.c that includes the include/trace/events/sched.h and > > > > does the define. > > > > > > > > And the same goes for other trace points. > > > > > > Hmm, I'd rather like to move it into kernel/events/ or something new > > > sub directory, since those files will have just two lines (define and > > > include). > > > > I'm fine with a kernel/events dir. > > Yep, sounds fine. > > Maybe we could have separate files for: > > a) event definitions > b) class definitions Um, because we don't add classes nor definitions for that matter in C files. These files will just have: #define CREATE_TRACE_POINT #include <trace/event/x.h> #include <trace/event/y.h> [...] > > ? > > > > > > > > > >> e.g. > > > >> > > > >> @kernel/tracepoint.c > > > >> ... > > > >> #define CREATE_TRACE_POINTS > > > >> #include <trace/events/sched.h> > > > >> #include <trace/events/...> > > > > > > > > We could do this for all that is defined in the include/trace/events. > > > > > > > >> ... > > > >> > > > >> @kernel/sched.c > > > >> ... > > > >> #include <trace/events/sched.h> /* Just include events header */ > > > >> ... > > > >> > > > >> @fs/ext4/super.c (no change, since it can be module) > > > >> ... > > > >> #define CREATE_TRACE_POINTS > > > >> #include <trace/events/ext4.h> > > > > > > > > Perhaps we should move out anything in include/trace/events that is also > > > > a module into its sub system? > > > > > > Would you mean putting those headers in sub-system's directory? > > > (e.g. fs/ext4/) > > > In that case, a problem will happen when user want to hook those > > > tracepoint from their module, because it is hard to find those > > > local headers. > > > > Why? Modules usually do have their own headers in their sub system. > > > > OK, if a module keeps their headers global (include/linux) then sure > > they can keep their tracepoint header in include/trace/events. But I > > still think that the module CREATE_TRACE_POINTS code should be kept with > > the module code itself (but in a small separate file). > > I agree with Steven here: modules should come with their own trace event > definitions, and if the trace classes they use are not available in the > standard kernel, they should come with these trace classes definitions > too. > > A small *_trace.c file linked along with the module looks fine by me. > > And please, try to re-used the already existing symbol dependency > management already present in the kernel to deal with module dependency > on class and dependency such as: > > module-a.ko > defines trace class > module-b.ko > module-c.ko > > module-b and module-c define events which depend on the trace class. > > If you make the event definition depend on a symbol defined in module-a, > everything should work flawlessly. It also works if the class is defined > in the core kernel. I think the issue is where to find the headers. But this does bring up another point. I don't think I designed the class macro to be used by events in other headers. Looking at the code, since all the shared functions are "static" it wont work. I guess I can modify it to be global, and also export them as GPL. -- Steve -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html