lkml.org 
[lkml]   [2012]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC][PATCH] tracing/module: Move tracepoint out of module.h

    * Steven Rostedt <rostedt@goodmis.org> wrote:

    > On Mon, 2012-01-23 at 09:29 +1030, Rusty Russell wrote:
    > > > could just move the "if" part out.
    > >
    > > Agreed. Since GCC should be able to eliminate that branch in almost all
    > > cases, since it's usually a literal NULL or address of a (non-weak)
    > > symbol.
    > >
    > > Be interesting to see the before/after sizes with this out-of-line.
    >
    > Using my default test config I got:
    >
    > text data bss dec hex filename
    > 7489488 2249584 9719808 19458880 128eb40 vmlinux-prepatch
    > 7482458 2248048 9719808 19450314 128c9ca vmlinux-postpatch
    >
    > An 8k savings!

    Lovely!

    > @@ -445,8 +444,7 @@ static inline void __module_get(struct module *module)
    > {
    > if (module) {
    > preempt_disable();
    > - __this_cpu_inc(module->refptr->incs);
    > - trace_module_get(module, _THIS_IP_);
    > + inc_module(module, _THIS_IP_);
    > preempt_enable();
    > }
    > }
    > @@ -458,10 +456,9 @@ static inline int try_module_get(struct module *module)
    > if (module) {
    > preempt_disable();
    >
    > - if (likely(module_is_live(module))) {
    > - __this_cpu_inc(module->refptr->incs);
    > - trace_module_get(module, _THIS_IP_);
    > - } else
    > + if (likely(module_is_live(module)))
    > + inc_module(module, _THIS_IP_);
    > + else
    > ret = 0;

    How much more do we save if we move all of try_module_get() out
    of line? It still seems a rather thick inline function with
    preempt section and all. I'd *really* suggest that it should all
    be uninlined.

    Thanks,

    Ingo


    \
     
     \ /
      Last update: 2012-01-26 11:31    [W:0.025 / U:0.180 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site