diff options
Diffstat (limited to 'reboot.c')
-rw-r--r-- | reboot.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/reboot.c b/reboot.c new file mode 100644 index 0000000..f8c3de7 --- /dev/null +++ b/reboot.c @@ -0,0 +1,45 @@ +#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; +} |