lkml.org 
[lkml]   [2008]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] ring_buffer: allocate buffer page pointer

    On Thu, 2 Oct 2008, Andrew Morton wrote:
    > >
    > > This patch adds a macro to assign all entries of ftrace using the type
    > > of the variable and checking the entry id. The typecasts are now done
    > > in the macro for only those types that it knows about, which should
    > > be all the types that are allowed to be read from the tracer.
    > >
    >
    > I'm somewhat at a loss here because I'm unable to find any version of
    > kernel/trace/trace.c which looks anything like the one which is being
    > patched, but...

    As Ingo mentioned, you don't have this yet. And be happy that you don't
    ;-)

    This patch is to fix the patch that did this.

    >
    > > --- a/kernel/trace/trace.c
    > > +++ b/kernel/trace/trace.c
    > > @@ -1350,7 +1350,9 @@ print_lat_fmt(struct trace_iterator *iter, unsigned int trace_idx, int cpu)
    > > }
    > > switch (entry->type) {
    > > case TRACE_FN: {
    > > - struct ftrace_entry *field = (struct ftrace_entry *)entry;
    >
    > Why was this code using a cast in the first place? It should be using
    > entry->some_field_i_dont_have_here? That was the whole point in using
    > the anonymous union in struct trace_entry?

    Because the ring_buffer now allows for variable length entries, having a
    one size fits all entry is not optimal.

    But because C is not the best for typecasting, we have this macro to help
    solve the issue. Instead of registering everything into a single union and
    causing small fields to be large, we have a macro you can register your
    type with instead.

    -- Steve



    \
     
     \ /
      Last update: 2008-10-02 15:09    [W:4.129 / U:0.188 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site