lkml.org 
[lkml]   [2011]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/8] timekeeping: Use syscore_ops instead of sysdev class and sysdev
    Date
    From: Rafael J. Wysocki <rjw@sisk.pl>

    The timekeeping subsystem uses a sysdev class and a sysdev for
    executing timekeeping_suspend() after interrupts have been turned off
    on the boot CPU (during system suspend) and for executing
    timekeeping_resume() before turning on interrupts on the boot CPU
    (during system resume). However, since both of these functions
    ignore their arguments, the entire mechanism may be replaced with a
    struct syscore_ops object which is simpler.

    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
    ---
    kernel/time/timekeeping.c | 27 ++++++++-------------------
    1 file changed, 8 insertions(+), 19 deletions(-)

    Index: linux-2.6/kernel/time/timekeeping.c
    ===================================================================
    --- linux-2.6.orig/kernel/time/timekeeping.c
    +++ linux-2.6/kernel/time/timekeeping.c
    @@ -14,7 +14,7 @@
    #include <linux/init.h>
    #include <linux/mm.h>
    #include <linux/sched.h>
    -#include <linux/sysdev.h>
    +#include <linux/syscore_ops.h>
    #include <linux/clocksource.h>
    #include <linux/jiffies.h>
    #include <linux/time.h>
    @@ -561,13 +561,12 @@ static struct timespec timekeeping_suspe

    /**
    * timekeeping_resume - Resumes the generic timekeeping subsystem.
    - * @dev: unused
    *
    * This is for the generic clocksource timekeeping.
    * xtime/wall_to_monotonic/jiffies/etc are
    * still managed by arch specific suspend/resume code.
    */
    -static int timekeeping_resume(struct sys_device *dev)
    +static void timekeeping_resume(void)
    {
    unsigned long flags;
    struct timespec ts;
    @@ -596,11 +595,9 @@ static int timekeeping_resume(struct sys

    /* Resume hrtimers */
    hres_timers_resume();
    -
    - return 0;
    }

    -static int timekeeping_suspend(struct sys_device *dev, pm_message_t state)
    +static int timekeeping_suspend(void)
    {
    unsigned long flags;

    @@ -618,26 +615,18 @@ static int timekeeping_suspend(struct sy
    }

    /* sysfs resume/suspend bits for timekeeping */
    -static struct sysdev_class timekeeping_sysclass = {
    - .name = "timekeeping",
    +static struct syscore_ops timekeeping_syscore_ops = {
    .resume = timekeeping_resume,
    .suspend = timekeeping_suspend,
    };

    -static struct sys_device device_timer = {
    - .id = 0,
    - .cls = &timekeeping_sysclass,
    -};
    -
    -static int __init timekeeping_init_device(void)
    +static int __init timekeeping_init_ops(void)
    {
    - int error = sysdev_class_register(&timekeeping_sysclass);
    - if (!error)
    - error = sysdev_register(&device_timer);
    - return error;
    + register_syscore_ops(&timekeeping_syscore_ops);
    + return 0;
    }

    -device_initcall(timekeeping_init_device);
    +device_initcall(timekeeping_init_ops);

    /*
    * If the error is already larger, we look ahead even further


    \
     
     \ /
      Last update: 2011-03-12 22:25    [W:4.551 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site