46 lines
1.0 KiB
C
46 lines
1.0 KiB
C
|
#include "defs.h"
|
||
|
#include <linux/reboot.h>
|
||
|
|
||
|
static const struct xlat bootflags1[] = {
|
||
|
XLAT(LINUX_REBOOT_MAGIC1),
|
||
|
XLAT_END
|
||
|
};
|
||
|
|
||
|
static const struct xlat bootflags2[] = {
|
||
|
XLAT(LINUX_REBOOT_MAGIC2),
|
||
|
XLAT(LINUX_REBOOT_MAGIC2A),
|
||
|
XLAT(LINUX_REBOOT_MAGIC2B),
|
||
|
XLAT(LINUX_REBOOT_MAGIC2C),
|
||
|
XLAT_END
|
||
|
};
|
||
|
|
||
|
static const struct xlat bootflags3[] = {
|
||
|
XLAT(LINUX_REBOOT_CMD_RESTART),
|
||
|
XLAT(LINUX_REBOOT_CMD_HALT),
|
||
|
XLAT(LINUX_REBOOT_CMD_CAD_ON),
|
||
|
XLAT(LINUX_REBOOT_CMD_CAD_OFF),
|
||
|
XLAT(LINUX_REBOOT_CMD_POWER_OFF),
|
||
|
XLAT(LINUX_REBOOT_CMD_RESTART2),
|
||
|
XLAT(LINUX_REBOOT_CMD_SW_SUSPEND),
|
||
|
XLAT(LINUX_REBOOT_CMD_KEXEC),
|
||
|
XLAT_END
|
||
|
};
|
||
|
|
||
|
int
|
||
|
sys_reboot(struct tcb *tcp)
|
||
|
{
|
||
|
if (exiting(tcp))
|
||
|
return 0;
|
||
|
|
||
|
printflags(bootflags1, tcp->u_arg[0], "LINUX_REBOOT_MAGIC_???");
|
||
|
tprints(", ");
|
||
|
printflags(bootflags2, tcp->u_arg[1], "LINUX_REBOOT_MAGIC_???");
|
||
|
tprints(", ");
|
||
|
printflags(bootflags3, tcp->u_arg[2], "LINUX_REBOOT_CMD_???");
|
||
|
if (tcp->u_arg[2] == LINUX_REBOOT_CMD_RESTART2) {
|
||
|
tprints(", ");
|
||
|
printstr(tcp, tcp->u_arg[3], -1);
|
||
|
}
|
||
|
return 0;
|
||
|
}
|