lkml.org 
[lkml]   [2010]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] pm_qos: remove unnecessary list-traversal
    Date
    The new extreme value is only depending on the old extreme value and
    the changed value.

    Signed-off-by: Florian Mickler <florian@mickler.org>
    ---
    This version actually compiles... :)

    kernel/pm_qos_params.c | 19 +++++++++++++++++--
    1 files changed, 17 insertions(+), 2 deletions(-)

    diff --git a/kernel/pm_qos_params.c b/kernel/pm_qos_params.c
    index f42d3f7..3ae94e1 100644
    --- a/kernel/pm_qos_params.c
    +++ b/kernel/pm_qos_params.c
    @@ -136,6 +136,16 @@ static s32 min_compare(s32 v1, s32 v2)
    }


    +static void update_target_val(int pm_qos_class, s32 val)
    +{
    + s32 extreme_value;
    + s32 new_value;
    + extreme_value = atomic_read(&pm_qos_array[pm_qos_class]->target_value);
    + new_value = pm_qos_array[pm_qos_class]->comparitor(val,extreme_value);
    + if (extreme_value != new_value)
    + atomic_set(&pm_qos_array[pm_qos_class]->target_value,new_value);
    +}
    +
    static void update_target(int pm_qos_class)
    {
    s32 extreme_value;
    @@ -253,19 +263,24 @@ void pm_qos_update_request(struct pm_qos_request_list *pm_qos_req,
    s32 temp;

    if (pm_qos_req) { /*guard against callers passing in null */
    + int target = pm_qos_req->pm_qos_class;
    spin_lock_irqsave(&pm_qos_lock, flags);
    if (new_value == PM_QOS_DEFAULT_VALUE)
    - temp = pm_qos_array[pm_qos_req->pm_qos_class]->default_value;
    + temp = pm_qos_array[target]->default_value;
    else
    temp = new_value;

    if (temp != pm_qos_req->value) {
    pending_update = 1;
    pm_qos_req->value = temp;
    + update_target_val(target,temp);
    }
    spin_unlock_irqrestore(&pm_qos_lock, flags);
    +
    if (pending_update)
    - update_target(pm_qos_req->pm_qos_class);
    + blocking_notifier_call_chain(
    + pm_qos_array[target]->notifiers,
    + (unsigned long) temp, NULL);
    }
    }
    EXPORT_SYMBOL_GPL(pm_qos_update_request);
    --
    1.7.1


    \
     
     \ /
      Last update: 2010-06-01 10:55    [W:0.022 / U:0.404 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site