mirror of git://git.suckless.org/ubase
Add halt(8)
This is a very barebones halt cmd. Please make sure that your system is in a proper state to halt before using this. This is likely only useful for very barebones systems like an emergency shell or similar. Normally this command would be part of an actual init system.
This commit is contained in:
parent
4a8e5b14ab
commit
051ed9a79c
1
Makefile
1
Makefile
|
@ -18,6 +18,7 @@ SRC = \
|
|||
|
||||
ifeq ($(OS),linux)
|
||||
SRC += \
|
||||
halt.c \
|
||||
insmod.c \
|
||||
lsmod.c \
|
||||
mkswap.c \
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
/* See LICENSE file for copyright and license details. */
|
||||
#include <linux/reboot.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include "util.h"
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
eprintf("usage: %s [-p]\n", argv0);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int pflag = 0;
|
||||
int cmd = LINUX_REBOOT_CMD_HALT;
|
||||
|
||||
ARGBEGIN {
|
||||
case 'p':
|
||||
pflag = 1;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
} ARGEND;
|
||||
|
||||
if (argc > 0)
|
||||
usage();
|
||||
|
||||
sync();
|
||||
|
||||
if (pflag)
|
||||
cmd = LINUX_REBOOT_CMD_POWER_OFF;
|
||||
|
||||
if (syscall(__NR_reboot, 0xfee1dead, 672274793,
|
||||
cmd, NULL) < 0)
|
||||
eprintf("reboot:");
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue