diff options
author | Szymon Starzycki <sstar@google.com> | 2013-07-12 13:50:04 -0700 |
---|---|---|
committer | Szymon Starzycki <sstar@google.com> | 2013-07-15 14:09:00 -0700 |
commit | ab1e562661f950bc8b00285b1bcad76db7cec683 (patch) | |
tree | 63e93590048bd0972b9a0430e4480bd223b38e4e /original | |
parent | 7bc26c88634b5dda68d41eb295a0d2639649a83e (diff) | |
download | kernel-headers-ab1e562661f950bc8b00285b1bcad76db7cec683.tar.gz |
Changed kexec header file to 3.10 version
Change-Id: Iac26fcc6e0e25905ab52dba91bec16a4fb479d43
Diffstat (limited to 'original')
-rw-r--r-- | original/linux/kexec.h | 140 | ||||
-rw-r--r-- | original/uapi/linux/kexec.h | 54 |
2 files changed, 54 insertions, 140 deletions
diff --git a/original/linux/kexec.h b/original/linux/kexec.h deleted file mode 100644 index 6427949..0000000 --- a/original/linux/kexec.h +++ /dev/null @@ -1,140 +0,0 @@ -#ifndef LINUX_KEXEC_H -#define LINUX_KEXEC_H - -#ifdef CONFIG_KEXEC -#include <linux/types.h> -#include <linux/list.h> -#include <linux/linkage.h> -#include <linux/compat.h> -#include <linux/ioport.h> -#include <asm/kexec.h> - -/* Verify architecture specific macros are defined */ - -#ifndef KEXEC_SOURCE_MEMORY_LIMIT -#error KEXEC_SOURCE_MEMORY_LIMIT not defined -#endif - -#ifndef KEXEC_DESTINATION_MEMORY_LIMIT -#error KEXEC_DESTINATION_MEMORY_LIMIT not defined -#endif - -#ifndef KEXEC_CONTROL_MEMORY_LIMIT -#error KEXEC_CONTROL_MEMORY_LIMIT not defined -#endif - -#ifndef KEXEC_CONTROL_CODE_SIZE -#error KEXEC_CONTROL_CODE_SIZE not defined -#endif - -#ifndef KEXEC_ARCH -#error KEXEC_ARCH not defined -#endif - -/* - * This structure is used to hold the arguments that are used when loading - * kernel binaries. - */ - -typedef unsigned long kimage_entry_t; -#define IND_DESTINATION 0x1 -#define IND_INDIRECTION 0x2 -#define IND_DONE 0x4 -#define IND_SOURCE 0x8 - -#define KEXEC_SEGMENT_MAX 16 -struct kexec_segment { - void __user *buf; - size_t bufsz; - unsigned long mem; /* User space sees this as a (void *) ... */ - size_t memsz; -}; - -#ifdef CONFIG_COMPAT -struct compat_kexec_segment { - compat_uptr_t buf; - compat_size_t bufsz; - compat_ulong_t mem; /* User space sees this as a (void *) ... */ - compat_size_t memsz; -}; -#endif - -struct kimage { - kimage_entry_t head; - kimage_entry_t *entry; - kimage_entry_t *last_entry; - - unsigned long destination; - - unsigned long start; - struct page *control_code_page; - - unsigned long nr_segments; - struct kexec_segment segment[KEXEC_SEGMENT_MAX]; - - struct list_head control_pages; - struct list_head dest_pages; - struct list_head unuseable_pages; - - /* Address of next control page to allocate for crash kernels. */ - unsigned long control_page; - - /* Flags to indicate special processing */ - unsigned int type : 1; -#define KEXEC_TYPE_DEFAULT 0 -#define KEXEC_TYPE_CRASH 1 -}; - - - -/* kexec interface functions */ -extern NORET_TYPE void machine_kexec(struct kimage *image) ATTRIB_NORET; -extern int machine_kexec_prepare(struct kimage *image); -extern void machine_kexec_cleanup(struct kimage *image); -extern asmlinkage long sys_kexec_load(unsigned long entry, - unsigned long nr_segments, - struct kexec_segment __user *segments, - unsigned long flags); -#ifdef CONFIG_COMPAT -extern asmlinkage long compat_sys_kexec_load(unsigned long entry, - unsigned long nr_segments, - struct compat_kexec_segment __user *segments, - unsigned long flags); -#endif -extern struct page *kimage_alloc_control_pages(struct kimage *image, - unsigned int order); -extern void crash_kexec(struct pt_regs *); -int kexec_should_crash(struct task_struct *); -extern struct kimage *kexec_image; -extern struct kimage *kexec_crash_image; - -#define KEXEC_ON_CRASH 0x00000001 -#define KEXEC_ARCH_MASK 0xffff0000 - -/* These values match the ELF architecture values. - * Unless there is a good reason that should continue to be the case. - */ -#define KEXEC_ARCH_DEFAULT ( 0 << 16) -#define KEXEC_ARCH_386 ( 3 << 16) -#define KEXEC_ARCH_X86_64 (62 << 16) -#define KEXEC_ARCH_PPC (20 << 16) -#define KEXEC_ARCH_PPC64 (21 << 16) -#define KEXEC_ARCH_IA_64 (50 << 16) -#define KEXEC_ARCH_S390 (22 << 16) -#define KEXEC_ARCH_SH (42 << 16) - -#define KEXEC_FLAGS (KEXEC_ON_CRASH) /* List of defined/legal kexec flags */ - -/* Location of a reserved region to hold the crash kernel. - */ -extern struct resource crashk_res; -typedef u32 note_buf_t[MAX_NOTE_BYTES/4]; -extern note_buf_t *crash_notes; - -#else /* !CONFIG_KEXEC */ -struct pt_regs; -struct task_struct; -static inline void crash_kexec(struct pt_regs *regs) { } -static inline int kexec_should_crash(struct task_struct *p) { return 0; } -#endif /* CONFIG_KEXEC */ -#endif /* LINUX_KEXEC_H */ diff --git a/original/uapi/linux/kexec.h b/original/uapi/linux/kexec.h new file mode 100644 index 0000000..ec09640 --- /dev/null +++ b/original/uapi/linux/kexec.h @@ -0,0 +1,54 @@ +#ifndef _UAPILINUX_KEXEC_H +#define _UAPILINUX_KEXEC_H + +/* kexec system call - It loads the new kernel to boot into. + * kexec does not sync, or unmount filesystems so if you need + * that to happen you need to do that yourself. + */ + +#include <linux/types.h> + +/* kexec flags for different usage scenarios */ +#define KEXEC_ON_CRASH 0x00000001 +#define KEXEC_PRESERVE_CONTEXT 0x00000002 +#define KEXEC_ARCH_MASK 0xffff0000 + +/* These values match the ELF architecture values. + * Unless there is a good reason that should continue to be the case. + */ +#define KEXEC_ARCH_DEFAULT ( 0 << 16) +#define KEXEC_ARCH_386 ( 3 << 16) +#define KEXEC_ARCH_X86_64 (62 << 16) +#define KEXEC_ARCH_PPC (20 << 16) +#define KEXEC_ARCH_PPC64 (21 << 16) +#define KEXEC_ARCH_IA_64 (50 << 16) +#define KEXEC_ARCH_ARM (40 << 16) +#define KEXEC_ARCH_S390 (22 << 16) +#define KEXEC_ARCH_SH (42 << 16) +#define KEXEC_ARCH_MIPS_LE (10 << 16) +#define KEXEC_ARCH_MIPS ( 8 << 16) + +/* The artificial cap on the number of segments passed to kexec_load. */ +#define KEXEC_SEGMENT_MAX 16 + +#ifndef __KERNEL__ +/* + * This structure is used to hold the arguments that are used when + * loading kernel binaries. + */ +struct kexec_segment { + const void *buf; + size_t bufsz; + const void *mem; + size_t memsz; +}; + +/* Load a new kernel image as described by the kexec_segment array + * consisting of passed number of segments at the entry-point address. + * The flags allow different useage types. + */ +extern int kexec_load(void *, size_t, struct kexec_segment *, + unsigned long int); +#endif /* __KERNEL__ */ + +#endif /* _UAPILINUX_KEXEC_H */ |