lkml.org 
[lkml]   [2007]   [Jun]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch-mm 11/23] hrtimer: speedup hrtimer_enqueue
    From: Ingo Molnar <mingo@elte.hu>

    Speedup hrtimer_enqueue by evaluating the rbtree insertion result.

    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

    ---
    kernel/hrtimer.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    Index: linux-2.6.22-rc4-mm/kernel/hrtimer.c
    ===================================================================
    --- linux-2.6.22-rc4-mm.orig/kernel/hrtimer.c 2007-06-10 10:44:39.000000000 +0200
    +++ linux-2.6.22-rc4-mm/kernel/hrtimer.c 2007-06-10 10:44:39.000000000 +0200
    @@ -686,6 +686,7 @@ static void enqueue_hrtimer(struct hrtim
    struct rb_node **link = &base->active.rb_node;
    struct rb_node *parent = NULL;
    struct hrtimer *entry;
    + int leftmost = 1;

    /*
    * Find the right place in the rbtree:
    @@ -697,18 +698,19 @@ static void enqueue_hrtimer(struct hrtim
    * We dont care about collisions. Nodes with
    * the same expiry time stay together.
    */
    - if (timer->expires.tv64 < entry->expires.tv64)
    + if (timer->expires.tv64 < entry->expires.tv64) {
    link = &(*link)->rb_left;
    - else
    + } else {
    link = &(*link)->rb_right;
    + leftmost = 0;
    + }
    }

    /*
    * Insert the timer to the rbtree and check whether it
    * replaces the first pending timer
    */
    - if (!base->first || timer->expires.tv64 <
    - rb_entry(base->first, struct hrtimer, node)->expires.tv64) {
    + if (leftmost) {
    /*
    * Reprogram the clock event device. When the timer is already
    * expired hrtimer_enqueue_reprogram has either called the
    --

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-06-10 11:37    [W:0.023 / U:0.236 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site