kexec_load(2) - phpMan

KEXEC_LOAD(2)              Linux Programmer's Manual             KEXEC_LOAD(2)

NAME
       kexec_load - load a new kernel for later execution
SYNOPSIS
       #include <linux/kexec.h>
       long kexec_load(unsigned long entry, unsigned long nr_segments,
                       struct kexec_segment *segments, unsigned long flags);
       Note: There is no glibc wrapper for this system call; see NOTES.
DESCRIPTION
       The  kexec_load()  system  call loads a new kernel that can be executed
       later by reboot(2).
       The flags argument is a mask whose high-order bits control  the  opera-
       tion of the call.  The following values can be specified in flags:
       KEXEC_ON_CRASH (since Linux 2.6.13)
              Execute the new kernel automatically on a system crash.
       KEXEC_PRESERVE_CONTEXT (since Linux 2.6.27)
              Preserve  the system hardware and software states before execut-
              ing the new kernel.  This could  be  used  for  system  suspend.
              This  flag  is  available only if the kernel was configured with
              CONFIG_KEXEC_JUMP, and  is  effective  only  if  nr_segments  is
              greater than 0.
       The  low-order bits of flags contain the architecture of the to-be-exe-
       cuted kernel.  Specify (OR) the constant KEXEC_ARCH_DEFAULT to use  the
       current  architecture,  or  one of the following architecture constants
       KEXEC_ARCH_386,  KEXEC_ARCH_X86_64,  KEXEC_ARCH_PPC,  KEXEC_ARCH_PPC64,
       KEXEC_ARCH_IA_64,   KEXEC_ARCH_ARM,   KEXEC_ARCH_S390,   KEXEC_ARCH_SH,
       KEXEC_ARCH_MIPS, and KEXEC_ARCH_MIPS_LE.  The architecture must be exe-
       cutable on the CPU of the system.
       The  entry  argument is the physical entry address in the kernel image.
       The nr_segments argument is the number of segments pointed  to  by  the
       segments  pointer.   The segments argument is an array of kexec_segment
       structures which define the kernel layout:
           struct kexec_segment {
               void   *buf;        /* Buffer in user space */
               size_t  bufsz;      /* Buffer length in user space */
               void   *mem;        /* Physical address of kernel */
               size_t  memsz;      /* Physical address length */
           };
       The kernel image defined by segments is copied from the calling process
       into previously reserved memory.
RETURN VALUE
       On success, kexec_load() returns 0.  On error, -1 is returned and errno
       is set to indicate the error.
ERRORS
       EBUSY  Another crash kernel is already being loaded or a  crash  kernel
              is already in use.
       EINVAL flags is invalid; or nr_segments is too large
       EPERM  The caller does not have the CAP_SYS_BOOT capability.
VERSIONS
       The kexec_load() system call first appeared in Linux 2.6.13.
CONFORMING TO
       This system call is Linux-specific.
NOTES
       Currently,  there  is no glibc support for kexec_load().  Call it using
       syscall(2).
       The  required  constants  are  in  the   Linux   kernel   source   file
       linux/kexec.h,  which  is  not currently exported to glibc.  Therefore,
       these constants must be defined manually.
       This system call is available only if the kernel  was  configured  with
       CONFIG_KEXEC.
SEE ALSO
       reboot(2), syscall(2)
COLOPHON
       This  page  is  part of release 3.53 of the Linux man-pages project.  A
       description of the project, and information about reporting  bugs,  can
       be found at http://www.kernel.org/doc/man-pages/.

Linux                             2012-07-13                     KEXEC_LOAD(2)