linux/include/uapi/linux/kexec.h
<<
>>
Prefs
   1#ifndef _UAPILINUX_KEXEC_H
   2#define _UAPILINUX_KEXEC_H
   3
   4/* kexec system call -  It loads the new kernel to boot into.
   5 * kexec does not sync, or unmount filesystems so if you need
   6 * that to happen you need to do that yourself.
   7 */
   8
   9#include <linux/types.h>
  10
  11/* kexec flags for different usage scenarios */
  12#define KEXEC_ON_CRASH          0x00000001
  13#define KEXEC_PRESERVE_CONTEXT  0x00000002
  14#define KEXEC_ARCH_MASK         0xffff0000
  15
  16/* These values match the ELF architecture values.
  17 * Unless there is a good reason that should continue to be the case.
  18 */
  19#define KEXEC_ARCH_DEFAULT ( 0 << 16)
  20#define KEXEC_ARCH_386     ( 3 << 16)
  21#define KEXEC_ARCH_68K     ( 4 << 16)
  22#define KEXEC_ARCH_X86_64  (62 << 16)
  23#define KEXEC_ARCH_PPC     (20 << 16)
  24#define KEXEC_ARCH_PPC64   (21 << 16)
  25#define KEXEC_ARCH_IA_64   (50 << 16)
  26#define KEXEC_ARCH_ARM     (40 << 16)
  27#define KEXEC_ARCH_S390    (22 << 16)
  28#define KEXEC_ARCH_SH      (42 << 16)
  29#define KEXEC_ARCH_MIPS_LE (10 << 16)
  30#define KEXEC_ARCH_MIPS    ( 8 << 16)
  31
  32/* The artificial cap on the number of segments passed to kexec_load. */
  33#define KEXEC_SEGMENT_MAX 16
  34
  35#ifndef __KERNEL__
  36/*
  37 * This structure is used to hold the arguments that are used when
  38 * loading  kernel binaries.
  39 */
  40struct kexec_segment {
  41        const void *buf;
  42        size_t bufsz;
  43        const void *mem;
  44        size_t memsz;
  45};
  46
  47/* Load a new kernel image as described by the kexec_segment array
  48 * consisting of passed number of segments at the entry-point address.
  49 * The flags allow different useage types.
  50 */
  51extern int kexec_load(void *, size_t, struct kexec_segment *,
  52                unsigned long int);
  53#endif /* __KERNEL__ */
  54
  55#endif /* _UAPILINUX_KEXEC_H */
  56