diff options
Diffstat (limited to '')
-rw-r--r-- | man2/reboot.2 | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/man2/reboot.2 b/man2/reboot.2 new file mode 100644 index 0000000..681087f --- /dev/null +++ b/man2/reboot.2 @@ -0,0 +1,236 @@ +.\" Copyright (c) 1998 Andries Brouwer (aeb@cwi.nl), 24 September 1998 +.\" +.\" SPDX-License-Identifier: Linux-man-pages-copyleft +.\" +.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com> +.\" Added notes on capability requirements +.\" +.TH reboot 2 2023-03-30 "Linux man-pages 6.05.01" +.SH NAME +reboot \- reboot or enable/disable Ctrl-Alt-Del +.SH LIBRARY +Standard C library +.RI ( libc ", " \-lc ) +.SH SYNOPSIS +.nf +.RB "/* Since Linux 2.1.30 there are symbolic names " LINUX_REBOOT_* + for the constants and a fourth argument to the call: */ +.PP +.BR "#include <linux/reboot.h> " \ +"/* Definition of " LINUX_REBOOT_* " constants */" +.BR "#include <sys/syscall.h> " "/* Definition of " SYS_* " constants */" +.B #include <unistd.h> +.PP +.BI "int syscall(SYS_reboot, int " magic ", int " magic2 ", int " cmd ", void *" arg ); +.PP +/* Under glibc and most alternative libc's (including uclibc, dietlibc, + musl and a few others), some of the constants involved have gotten +.RB " symbolic names " RB_* ", and the library call is a 1-argument" + wrapper around the system call: */ +.PP +.BR "#include <sys/reboot.h> " "/* Definition of " RB_* " constants */" +.B #include <unistd.h> +.PP +.BI "int reboot(int " cmd ); +.fi +.SH DESCRIPTION +The +.BR reboot () +call reboots the system, or enables/disables the reboot keystroke +(abbreviated CAD, since the default is Ctrl-Alt-Delete; +it can be changed using +.BR loadkeys (1)). +.PP +This system call fails (with the error +.BR EINVAL ) +unless +.I magic +equals +.B LINUX_REBOOT_MAGIC1 +(that is, 0xfee1dead) and +.I magic2 +equals +.B LINUX_REBOOT_MAGIC2 +(that is, 0x28121969). +However, since Linux 2.1.17 also +.B LINUX_REBOOT_MAGIC2A +(that is, 0x05121996) +and since Linux 2.1.97 also +.B LINUX_REBOOT_MAGIC2B +(that is, 0x16041998) +and since Linux 2.5.71 also +.B LINUX_REBOOT_MAGIC2C +(that is, 0x20112000) +are permitted as values for +.IR magic2 . +(The hexadecimal values of these constants are meaningful.) +.PP +The +.I cmd +argument can have the following values: +.TP +.B LINUX_REBOOT_CMD_CAD_OFF +.RB ( RB_DISABLE_CAD , +0). +CAD is disabled. +This means that the CAD keystroke will cause a +.B SIGINT +signal to be +sent to init (process 1), whereupon this process may decide upon a +proper action (maybe: kill all processes, sync, reboot). +.TP +.B LINUX_REBOOT_CMD_CAD_ON +.RB ( RB_ENABLE_CAD , +0x89abcdef). +CAD is enabled. +This means that the CAD keystroke will immediately cause +the action associated with +.BR LINUX_REBOOT_CMD_RESTART . +.TP +.B LINUX_REBOOT_CMD_HALT +.RB ( RB_HALT_SYSTEM , +0xcdef0123; since Linux 1.1.76). +The message "System halted." is printed, and the system is halted. +Control is given to the ROM monitor, if there is one. +If not preceded by a +.BR sync (2), +data will be lost. +.TP +.B LINUX_REBOOT_CMD_KEXEC +.RB ( RB_KEXEC , +0x45584543, since Linux 2.6.13). +Execute a kernel that has been loaded earlier with +.BR kexec_load (2). +This option is available only if the kernel was configured with +.BR CONFIG_KEXEC . +.TP +.B LINUX_REBOOT_CMD_POWER_OFF +.RB ( RB_POWER_OFF , +0x4321fedc; since Linux 2.1.30). +The message "Power down." is printed, the system is stopped, +and all power is removed from the system, if possible. +If not preceded by a +.BR sync (2), +data will be lost. +.TP +.B LINUX_REBOOT_CMD_RESTART +.RB ( RB_AUTOBOOT , +0x1234567). +The message "Restarting system." is printed, and a default +restart is performed immediately. +If not preceded by a +.BR sync (2), +data will be lost. +.TP +.B LINUX_REBOOT_CMD_RESTART2 +(0xa1b2c3d4; since Linux 2.1.30). +The message "Restarting system with command \[aq]%s\[aq]" is printed, +and a restart (using the command string given in +.IR arg ) +is performed immediately. +If not preceded by a +.BR sync (2), +data will be lost. +.TP +.B LINUX_REBOOT_CMD_SW_SUSPEND +.RB ( RB_SW_SUSPEND , +0xd000fce1; since Linux 2.5.18). +The system is suspended (hibernated) to disk. +This option is available only if the kernel was configured with +.BR CONFIG_HIBERNATION . +.PP +Only the superuser may call +.BR reboot (). +.PP +The precise effect of the above actions depends on the architecture. +For the i386 architecture, the additional argument does not do +anything at present (2.1.122), but the type of reboot can be +determined by kernel command-line arguments ("reboot=...") to be +either warm or cold, and either hard or through the BIOS. +.\" +.SS Behavior inside PID namespaces +.\" commit cf3f89214ef6a33fad60856bc5ffd7bb2fc4709b +.\" see also commit 923c7538236564c46ee80c253a416705321f13e3 +Since Linux 3.4, +if +.BR reboot () +is called +from a PID namespace other than the initial PID namespace +with one of the +.I cmd +values listed below, +it performs a "reboot" of that namespace: +the "init" process of the PID namespace is immediately terminated, +with the effects described in +.BR pid_namespaces (7). +.PP +The values that can be supplied in +.I cmd +when calling +.BR reboot () +in this case are as follows: +.TP +.BR LINUX_REBOOT_CMD_RESTART ", " LINUX_REBOOT_CMD_RESTART2 +The "init" process is terminated, +and +.BR wait (2) +in the parent process reports that the child was killed with a +.B SIGHUP +signal. +.TP +.BR LINUX_REBOOT_CMD_POWER_OFF ", " LINUX_REBOOT_CMD_HALT +The "init" process is terminated, +and +.BR wait (2) +in the parent process reports that the child was killed with a +.B SIGINT +signal. +.PP +For the other +.I cmd +values, +.BR reboot () +returns \-1 and +.I errno +is set to +.BR EINVAL . +.SH RETURN VALUE +For the values of +.I cmd +that stop or restart the system, +a successful call to +.BR reboot () +does not return. +For the other +.I cmd +values, zero is returned on success. +In all cases, \-1 is returned on failure, and +.I errno +is set to indicate the error. +.SH ERRORS +.TP +.B EFAULT +Problem with getting user-space data under +.BR LINUX_REBOOT_CMD_RESTART2 . +.TP +.B EINVAL +Bad magic numbers or \fIcmd\fP. +.TP +.B EPERM +The calling process has insufficient privilege to call +.BR reboot (); +the caller must have the +.B CAP_SYS_BOOT +inside its user namespace. +.SH STANDARDS +Linux. +.SH SEE ALSO +.BR systemctl (1), +.BR systemd (1), +.BR kexec_load (2), +.BR sync (2), +.BR bootparam (7), +.BR capabilities (7), +.BR ctrlaltdel (8), +.BR halt (8), +.BR shutdown (8) |