• Oleg Nesterov's avatar
    sched/wait: Introduce prepare_to_wait_event() · c2d81644
    Oleg Nesterov authored
    Add the new helper, prepare_to_wait_event() which should only be used
    by ___wait_event().
    
    prepare_to_wait_event() returns -ERESTARTSYS if signal_pending_state()
    is true, otherwise it does prepare_to_wait/exclusive.  This allows to
    uninline the signal-pending checks in wait_event*() macros.
    
    Also, it can initialize wait->private/func. We do not care if they were
    already initialized, the values are the same. This also shaves a couple
    of insns from the inlined code.
    
    This obviously makes prepare_*() path a little bit slower, but we are
    likely going to sleep anyway, so I think it makes sense to shrink .text:
    
                   text    data      bss      dec     hex  filename
                ===================================================
       before:  5126092 2959248 10117120 18202460 115bf5c   vmlinux
        after:  5124618 2955152 10117120 18196890 115a99a   vmlinux
    
    on my build.
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20131007161824.GA29757@redhat.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    c2d81644
wait.c 11.2 KB