linux-man.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andi Kleen <andi-Vw/NltI1exuRpAAqCnN02g@public.gmane.org>
To: ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org,
	mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCH] kexec_load manpage
Date: Sat, 19 Jun 2010 15:26:33 +0200	[thread overview]
Message-ID: <20100619132633.GA24277@basil.fritz.box> (raw)

Here are the beginnings of a kexec_load manpage.

Probably needs some more review from Eric and may need some additional
information.

The syscall is actually only usable with a kernel patch to export
the header I just sent separately.

Also added the kexec subcall to reboot(2)

-Andi

diff --git a/man2/kexec_load.2 b/man2/kexec_load.2
new file mode 100644
index 0000000..f486641
--- /dev/null
+++ b/man2/kexec_load.2
@@ -0,0 +1,94 @@
+.TH KEXEC_LOAD 2 2010-06-16 "Linux" "Linux Programmer's Manual"
+.SH NAME
+kexec_load \- Load a new kernel for later execution.
+.SH SYNOPSIS
+.b #include <linux/kexec.h>
+.br
+.BI "long kexec_load(unsigned long " entry ", unsigned long " nr_segments ","
+.br
+.BI       "struct kexec_segment *" segments ", unsigned long " flags ");"
+.SH DESCRIPTION
+.BR kexec_load 
+loads a new kernel that can be executed later
+by 
+.I reboot(2).
+An alternative approach is to specify
+.B KEXEC_ON_CRASH
+in the 
+.I flags
+argument and then the new kernel will be automatically executed on a 
+system crash. 
+.\" XXX figure out how this is really used 
+With 
+.B KEXEC_PRESERVE_CONTEXT 
+specified in 
+.I flags
+kexec will preserve the system hard and 
+software state before executing the kexec kernel. This 
+could be used for system suspend.
+
+.I flags
+also contains the architecture of the executed kernel or
+be 
+.I KEXEC_ARCH_DEFAULT
+for the current architecture.
+Valid architectures are 
+.I KEXEC_ARCH_I386,
+.I KEXEC_ARCH_X86_64,
+.I KEXEC_ARCH_PPC,
+.I KEXEC_ARCH_PPC64,
+.I KEXEC_ARCH_IA_64,
+.I KEXEC_ARCH_ARM,
+.I KEXEC_ARCH_S390,
+.I KEXEC_ARCH_SH,
+.I KEXEC_ARCH_MIPS,
+.I KEXEC_ARCH_MIPS_LE.
+The architecture must be executable on the CPU of the system.
+
+.I entry 
+is the virtual entry address in the kernel image.
+.I nr_segments
+is the number of segments pointed to by the 
+.I segments
+pointer. 
+.I segments 
+is an array of 
+.I struct kexec_segment
+structures which define the kernel layout:
+.in +4n
+.nf
+
+struct kexec_segment {
+	void   *buf;	/* Buffer in user space */
+	size_t  bufsz;	/* Buffer length in user space */
+	void   *mem;	/* Virtual address of kernel */
+	size_t  memsz;	/* Virtual address length */
+};
+.fi
+.in
+.PP
+.\" XXX elaborate on this
+The kernel image defined by
+.I segments
+is copied from the calling process into previously reserved memory.
+.SH CONFORMING TO
+This system call is Linux-specific.
+.SH NOTES
+kexec_load is currently not defined in glibc. To call it use:
+.in +4n
+.nf
+#define _GNU_SOURCE
+#include <syscall.h>
+#include <asm/unistd.h>
+#include <linux/kexec.h>
+
+ret = syscall(__NR_kexec_load, entry, nr_segments, segments, flags);
+.fi
+.in
+.PP
+.I linux/kexec.h as a exported header is only available in 2.6.38
+and later kernels, in earlier kernels the constants need to be copied
+out of the kernel source.
+.SH SEE ALSO
+.BR syscall (2),
+.BR reboot (2)
diff --git a/man2/reboot.2 b/man2/reboot.2
index 253bd34..87204b1 100644
--- a/man2/reboot.2
+++ b/man2/reboot.2
@@ -139,6 +139,11 @@ 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.
+.TP
+.B LINUX_REBOOT_KEXEC
+executes a kernel that has been loaded earlier
+with 
+.I kexec_load(2).
 .SH "RETURN VALUE"
 For the values of
 .I cmd
@@ -177,4 +182,5 @@ and should not be used in programs intended to be portable.
 .BR capabilities (7),
 .BR ctrlaltdel (8),
 .BR halt (8),
-.BR reboot (8)
+.BR reboot (8),
+.BR kexec_load (2)
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

             reply	other threads:[~2010-06-19 13:26 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-19 13:26 Andi Kleen [this message]
     [not found] ` <20100619132633.GA24277-u0/ZJuX+froe6aEkudXLsA@public.gmane.org>
2010-06-19 19:18   ` [PATCH] kexec_load manpage Eric W. Biederman
     [not found]     ` <m1mxuqu8yr.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2010-06-19 19:45       ` Andi Kleen
     [not found]         ` <20100619194532.GQ18946-u0/ZJuX+froe6aEkudXLsA@public.gmane.org>
2010-10-31  6:19           ` Michael Kerrisk
     [not found]             ` <AANLkTi=eT_6UjgLsrOtQt833xeTOkjDvHXvd=xbEZ34c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-10-31  6:58               ` Simon Horman
2010-06-26 13:23       ` Michael Kerrisk
     [not found]         ` <AANLkTillNx5owgU4O71izNz9FEL06MiI-FquTZ3ofktP-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-09-11  4:46           ` Michael Kerrisk
     [not found]             ` <AANLkTi=HKMce2UojSRmqVdoLO3H4v+6Xtp-bgFuHwH+D-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-10-24 14:56               ` Michael Kerrisk
2010-10-24 21:38                 ` Andi Kleen
     [not found]                   ` <20101024213802.GB9922-u0/ZJuX+froe6aEkudXLsA@public.gmane.org>
2010-10-28 12:14                     ` Simon Horman
     [not found]                       ` <20101028121417.GD16206-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
2010-10-28 12:25                         ` Andi Kleen
     [not found]                           ` <20101028122540.GA29759-u0/ZJuX+froe6aEkudXLsA@public.gmane.org>
2010-10-30  2:36                             ` Simon Horman
2010-10-31  6:40                             ` Michael Kerrisk
2010-10-31  6:19       ` Michael Kerrisk
2010-10-31  6:14   ` Michael Kerrisk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100619132633.GA24277@basil.fritz.box \
    --to=andi-vw/nlti1exurpaaqcnn02g@public.gmane.org \
    --cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
    --cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).