summaryrefslogtreecommitdiffstats
path: root/man2/reboot.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/reboot.2')
-rw-r--r--man2/reboot.2236
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)