Re: [PATCH 0/8] [GIT PULL] TRACE_EVENT for modules

Steven Rostedt
2009-04-14T21:24:14Z

On Tue, 14 Apr 2009, Theodore Tso wrote:

> On Tue, Apr 14, 2009 at 01:23:37PM -0400, Steven Rostedt wrote:
> >
> > Removal of the two headers per trace system. No need to have
> > include/trace/sched.h and include/linux/sched_event_types.h
> > All the changes go into include/trace/sched.h. But note that how that
> > file is made is important. One could look at the sched.h file, or
> > skb.h, lockdep.h and kmem.h as an example.
>
> Hi Steven,
>
> One thing which I would really like is to avoid needing to drop the
> header file in include/trace/<subsystem.h>.
>
> The problem that I have with this is that for ext4, we need to access
> private data structures which are defined in header files in
> fs/ext4/*.h --- which we moved into fs/ext4 a long time ago at the
> request of those who felt include/linux/* was getting rather
> cluttered, and if a subsystem had header files which were only needed
> by files for that particular subsystems, they should be moved out of
> include/linux.
>
> I supported the above-mentioned cleanup, but it's causing problems
> given that include/trace/ext4_events_types.h (or include/trace/ext4.h
> in the new world order) needs access to various structure definitions
> in fs/ext4/*.h. I could move the required header files into
> include/linux/ext4_tracing_types.h --- which has the downside that it
> is a very random collection of data structures --- or I could entirely
> revert the cleanup we did long ago and move all of the ext4 header
> files back into include/linux. But better yet would be if there was
> some way we could tell the tracing subsystem that tracing header file
> for ext4 could be found in fs/ext4/ext4_trace.h.
>
> Any chance you could support something like this?

Yes, at the bottom of your header file, before including define_trace.h,
you can simply add:

#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH ../../fs/ext4

#include <trace/define_trace.h>

the TRACE_INCLUDE_PATH is a reference from where trace/define_trace.h is
located. It may even be cleaner to do:

#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH EXT4_PATH

and in the Makefile have:

CFLAGS_ext4_jbd2.o := -DEXT4_PATH=$(PWD)

That's something like what I did for my external module test.

-- Steve