lkml.org 
[lkml]   [2013]   [Aug]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 11/13] sched: Inline the need_resched test into the caller for _cond_resched
    Date
    From: Andi Kleen <ak@linux.intel.com>

    _cond_resched is very common in kernel calls, e.g. it's used in every user
    access. Usually it does at least two explicit calls just to decide to do
    nothing: _cond_resched and should_resched(). Inline a need_resched()
    into the caller to avoid these calls in the common case of no reschedule
    being needed.

    Previously this would have been very expensive in terms of binary size
    because there were a lot of inlined cond_resched()s in copy_*_user()
    and put/get_user(). But with the newest changes to x86 uaccess.h
    these not inlined anymore, so we can use a slightly bigger, but much
    faster fast path version.

    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    ---
    include/linux/sched.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/include/linux/sched.h b/include/linux/sched.h
    index bb7a08a..9e0efa9 100644
    --- a/include/linux/sched.h
    +++ b/include/linux/sched.h
    @@ -2435,7 +2435,7 @@ extern int __cond_resched_softirq(void);

    #ifdef CONFIG_PREEMPT_VOLUNTARY
    extern int _cond_resched(void);
    -# define might_resched() _cond_resched()
    +# define might_resched() (need_resched() ? _cond_resched() : 0)
    #else
    # define might_resched() do { } while (0)
    #endif
    --
    1.8.3.1


    \
     
     \ /
      Last update: 2013-08-10 01:41    [W:4.052 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site