Re: [pm] fix time after suspend-to-*

From: George Anzinger
Date: Tue Oct 28 2003 - 16:31:01 EST


Felipe Alfaro Solana wrote:
On Tue, 2003-10-28 at 18:28, Pavel Machek wrote:


You are not asking userspace whether to reboot or not, and you should
not ask them about suspend, either.


OK, so how should the system behave when a real-time-like process is
running? I talked about the CD burning example. Should the kernel simply
ignore the process and suspend?


1. Network connections must be reestablished. A userspace program can't
try to automatically reestablish a broken TCP connection for no apparent
reason. A broken TCP connection could be the cause of an overloaded or
broken server/service. If we do not inform userspace processes that the
system is going to sleep (or that the system has been brought up from
standby), they will blindly try to restore TCP connections back, even
when the remote server is broken, generating a lot of unnecesary
traffic.

gettimeofday(), if I slept for too long, oops, something strange
happened (maybe there was heavy io load and I was swapped out? or
suspend? Did machine sleep for 20 minutes in cli?) try to reconnect.


Does "gettimeofday()" have into account the effect of adjusting the time
twice a year, once to make time roll forward one hour and another one to
roll it back?

Actually gettimeofday() does NOT do that. It always returns GMT since 1970. The daylight savings thing is really a timezone shift, not a time shift.

My suggestion, which I admit may rely on a particular distro, is to define two new run levels. One for going to sleep and one to wake up. This is how the system boots and powers down already. The new levels would allow applications which have special needs to put the proper notifier stuff in the runlevel directory, just as is done for boot/ shutdown. It is this code which should tell the system to sleep, just as the shutdown run level shuts off the machine.



--
George Anzinger george@xxxxxxxxxx
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml

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