Commit Graph

11 Commits

Author SHA1 Message Date
imp
7854550aa7 APM was calling the suspend process from a timeout. This meant that
other timeouts could not happen while suspending, including timeouts
for things like msleep.  This caused the system to hang on suspend
when the cbb was enabled, since its suspend path powered down the
socket which used a timeout to wait for it to be done.

APM now creates a thread when it is enabled, and deletes the thread
when it is disabled.  This thread takes the place of the timeout by
doing its polling every ~.9s.  When the thread is disabled, it will
wakeup early, otherwise it times out and polls the varius things the
old timeout polled (APM events, suspend delays, etc).

This makes my Sony VAIO 505TS suspend/resume correctly when APM is
enabled (ACPI is black listed on my 505TS).

This will likely fix other problems with the suspend path where
drivers would sleep with msleep and/or do other timeouts.  Maybe
there's some special case code that would use DELAY while suspending
and msleep otherwise that can be revisited and removed.

This was also tested by glebius@, who pointed out that in the patch I
sent him, I'd forgotten apm_saver.c

MFC After: 3 weeks
2006-05-25 23:06:38 +00:00
imp
612ebdab4f No need to ifdef this pc98. 2005-04-04 05:28:19 +00:00
mdodd
0081603f45 Catch up with recent events. 2003-03-27 07:37:02 +00:00
mdodd
803a8a66ce Use repo-copied files in sys/i386/bios. 2003-03-24 19:14:46 +00:00
ru
5425aa75fa Added dependency on the apm(4) module. 2003-02-15 21:22:19 +00:00
alfred
1f2f32f840 Remove __P. 2002-03-20 06:48:11 +00:00
nyan
8edb21358a Added necessary include for pc98. 2001-01-25 09:56:04 +00:00
nyan
591d99c108 Added PC-98 apm support.
Submitted by:	MURAMATSU Atsushi <amura@ma3.seikyou.ne.jp>
2001-01-22 11:27:25 +00:00
wollman
70c88bb8da select() DKI is now in <sys/selinfo.h>. 2001-01-09 04:33:49 +00:00
nsayer
8e1865efde Don't needlessly indirect the APM softstate. It does nothing but
obfuscate the code.
2000-10-31 21:00:15 +00:00
nsayer
4f9461c0bd Add the apm_saver syscons screen saver module.
apm_saver uses the apm_display() routine from the apm system to
"suspend" the "display" part of the machine.

This is beneficial for some laptops (or other machines with
non-traditional displays) that choke on the 'green' saver's
effect.

Another way of looking at this is that it's the same as a screen
saver that does an 'apm -d 0' to blank the display and an 'apm -d 1'
to bring it back. One probably ought to use these commands to make
sure the effect will be correct before using it unattended.
1999-10-02 03:56:42 +00:00