Date: Tue, 12 Jan 1999 18:14:45 -0800 From: Tim Kientzle <kientzle@acm.org> To: mobile@FreeBSD.ORG Subject: APM power-off code Message-ID: <369C0195.2DE70CB3@acm.org>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Nate suggested I forward this to "mobile@freebsd.org".
These are some patches I've used with both 2.2.5 and 2.2.8.
They modify the shutdown code to actually turn off
power on a system shutdown. I personally use it
with my desktop machine; I find it quite convenient
to type "shutdown" and walk away knowing that the
machine will, in fact, turn itself off when it's
done cleaning up.
- Tim Kientzle
P.S. This is probably not the best approach. It
might be better to add a "register_poweroff_func()"
function to kern_shutdown, and have the APM code
register a power off function if an APM BIOS was
found.
P.P.S. I don't watch these lists, so email is
best: kientzle@acm.org
================================================
[-- Attachment #2 --]
X-Mozilla-Status2: 00000000
Message-ID: <36990C19.C68084D1@acm.org>
Date: Sun, 10 Jan 1999 12:22:49 -0800
From: Tim Kientzle <kientzle@acm.org>
Reply-To: kientzle@acm.org
X-Mailer: Mozilla 4.5 [en] (X11; I; FreeBSD 2.2.8-RELEASE i386)
X-Accept-Language: en
MIME-Version: 1.0
To: hosokawa@jp.freebsd.org, nate@freebsd.org
Subject: APM power-off code
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Nate/Tatsumi,
Just installed 2.2.8, and had to go back and re-hack
in one local customization. I'd written Nate about
this earlier, but got no response. Oh, well.
The 'feature' is an addition to the APM code so that
APM-equipped machines automatically power down on
shut-down. Quite convenient for those of us that
actually turn our FreeBSD machines off when we're
not using them. I use this with my desktop machine.
Here are the diffs:
/usr/src-2.2.5/sys/i386/apm [12:11pm]# diff apm.c apm.c-original
217,238d216
< /* Turn off power to entire system */
< void
< apm_power_off(void)
< {
< struct apm_softc *sc = &apm_softc;
< u_long eax, ebx, ecx;
<
< if(!sc)
< return;
<
< eax = (APM_BIOS << 8) | APM_SETPWSTATE;
< ebx = PMDV_ALLDEV;
< ecx = PMST_OFF;
<
< if (apm_int(&eax, &ebx, &ecx)) {
< printf("Entire system power off failure: errcode =
%ld\n",
< 0xff & (eax >> 8));
< return;
< }
< return;
< }
<
/usr/src-2.2.5/sys/kern [12:14pm]# diff -c kern_shutdown.c
kern_shutdown.c-original
*** kern_shutdown.c Thu Mar 12 13:12:16 1998
--- kern_shutdown.c-original Thu Mar 12 12:47:42 1998
***************
*** 249,257 ****
}
splhigh();
if (howto & RB_HALT) {
- #ifdef APM_POWER_OFF
- apm_power_off();
- #endif
printf("\n");
printf("The operating system has halted.\n");
printf("Please press any key to reboot.\n\n");
--- 249,254 ----
And, of course, a new config option:
APM_POWER_OFF /* Use APM to turn off power on system shutdown */
I made these against 2.2.5 and am getting ready to test them
against 2.2.8.
- Tim Kientzle (kientzle@acm.org)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?369C0195.2DE70CB3>
