lkml.org 
[lkml]   [2005]   [Dec]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch] pm: fix runtime powermanagement's /sys interface
    /sys/devices/..../power interface is currently very broken. It takes
    integer from user, and passes it to drivers as pm_message_t.event
    ... without even checking it. This changes the interface to pass
    strings, and introduces checks.

    Signed-off-by: Pavel Machek <pavel@suse.cz>

    diff --git a/drivers/base/power/sysfs.c b/drivers/base/power/sysfs.c
    --- a/drivers/base/power/sysfs.c
    +++ b/drivers/base/power/sysfs.c
    @@ -27,22 +27,25 @@

    static ssize_t state_show(struct device * dev, struct device_attribute *attr, char * buf)
    {
    - return sprintf(buf, "%u\n", dev->power.power_state.event);
    + if (dev->power.power_state.event)
    + return sprintf(buf, "suspend\n");
    + else
    + return sprintf(buf, "on\n");
    }

    static ssize_t state_store(struct device * dev, struct device_attribute *attr, const char * buf, size_t n)
    {
    pm_message_t state;
    - char * rest;
    - int error = 0;
    + int error = -EINVAL;

    - state.event = simple_strtoul(buf, &rest, 10);
    - if (*rest)
    - return -EINVAL;
    - if (state.event)
    - error = dpm_runtime_suspend(dev, state);
    - else
    + state.event = PM_EVENT_SUSPEND;
    + if ((n == 2) && !strncmp(buf, "on", 2)) {
    dpm_runtime_resume(dev);
    + error = 0;
    + }
    + if ((n == 7) && !strncmp(buf, "suspend", 7))
    + error = dpm_runtime_suspend(dev, state);
    +
    return error ? error : n;
    }

    --
    Thanks, Sharp!
    -
    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: 2005-12-27 22:37    [W:0.022 / U:29.820 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site