mirror of
git://git.suckless.org/ubase
synced 2024-12-22 14:42:41 +00:00
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 \
|
||||
|
40
halt.c
Normal file
40
halt.c
Normal file
@ -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
Block a user