Suspend: RTC wakeup, sleep

Richard A. Smith richard at
Wed Jul 28 18:23:19 EDT 2010

On 07/28/2010 05:34 AM, Hal Murray wrote:

> Can somebody confirm that sleep does what I expect on suspended systems?
> My expectation is that the sleep timer logically ticks when suspended, but
> that the system won't get woken up when the sleep timer expires.

IIRC it does not.  The mechanics of this seem to have changed across the 
kernel over the last 2 years but I believe the overall issue that I 
faced in my scripts is the same.  Many of my scripts that run across 
resume use the the RTC clock value for delay rather than sleep.

When you resume all the kernel timers (save the system clock) are reset 
to zero.

> For example, suppose my program does a sleep(100), and shortly after that the
> system suspends.
> If the next wakeup is 200 seconds after the start of the sleep, my program
> should run then (along with whatever caused the wakeup).

I don't believe so...  Your program will run 100 seconds after the wakeup.

> Or if the system wakes up after 50 seconds and doesn't suspend again, my
> program should run 100 seconds after it started to sleep.
> If not, how does it work?

Since the timers are reset at suspend/resume its a bit unpredictable.

My power logging scripts originally used 'sleep'.  But what I found was 
that if the time-to-suspend was shorter than sleep then the script would 
have cases where it would never run.

BUT, I never did an exhaustive exploration I switched to RTC delays and 
side stepped the entire issue.

Last time I tried it seemed different than the first time but still had 

Some of my other scripts (and runin tests) also use the EC wakeup timer 
rather than the RTC.  But I've recently discovered that wakeups via the 
EC do not seem to be 100% reliable.  Currently they are 1 shot but it 
looks like I'll have to watch and see if the system really wakes up and 
then if not then re-issue the wakeup.

Richard A. Smith  <richard at>
One Laptop per Child

More information about the Devel mailing list