This commit is contained in:
cinap_lenrek 2011-05-16 16:30:34 +00:00
commit 7566b246c4
3 changed files with 36 additions and 3 deletions

View file

@ -48,6 +48,7 @@ cp /bin/ns /tmp
cp /bin/rc /tmp
cp /bin/sed /tmp
cp /bin/sleep /tmp
cp /bin/scram /tmp
bind /tmp /rc
bind /tmp /bin
@ -77,6 +78,7 @@ fn x {
echo rebooting...
echo reboot >'#c/reboot'
}
if not scram
}
x

View file

@ -1,6 +1,6 @@
.TH FSHALT 8
.SH NAME
fshalt, reboot \- halt any local file systems and optionally reboot the system
fshalt, scram, reboot \- halt any local file systems and optionally shut down or reboot the system
.SH SYNOPSIS
.B fshalt
[
@ -8,6 +8,8 @@ fshalt, reboot \- halt any local file systems and optionally reboot the system
]
.br
.B reboot
.br
.B scram
.SH DESCRIPTION
.I Fshalt
syncs all local
@ -25,6 +27,9 @@ If given
.BR -r ,
.I fshalt
will then reboot the machine.
Else it will invoke
.I scram
to shut down the machine.
The halting and rebooting is done by copying all necessary
commands into a
.IR ramfs (4)
@ -35,6 +40,9 @@ local file systems.
.PP
.I Reboot
restarts the machine it is invoked on.
.PP
.I Scram
shuts down the machine it is invoked on.
.SH SOURCE
.B /rc/bin/fshalt
.br
@ -43,6 +51,9 @@ restarts the machine it is invoked on.
.IR cons (3),
.IR reboot (8)
.SH BUGS
On standalone machines, it will be impossible to do anything
On standalone machines, it will be impossible to do anything if scram fails
after invoking bare
.LR fshalt .
.IR fshalt .
.I Scram
is limited to the PC and requires APM.

20
sys/src/cmd/scram.c Normal file
View file

@ -0,0 +1,20 @@
#include <u.h>
#include </386/include/ureg.h>
typedef struct Ureg Ureg;
#include <libc.h>
void
main()
{
Ureg ureg;
int fd;
fd = open("/dev/apm", OWRITE);
if(fd < 0) sysfatal("%r");
memset(&ureg, 0, sizeof ureg);
ureg.ax = 0x5307;
ureg.bx = 0x0001;
ureg.cx = 0x0003;
ureg.trap = 0x15;
write(fd, &ureg, sizeof ureg);
}