Remove linux/kexec.h

* linux/kexec.h: Remove.
* Makefile.am (EXTRA_DIST): Remove it.
* kexec.c: Do not include <linux/kexec.h>.
* xlat/kexec_arch_values.in: Add default values.
* xlat/kexec_flags.in: Rename to kexec_load_flags.in, add default
values.
This commit is contained in:
Дмитрий Левин 2015-02-19 21:16:45 +00:00
parent 3a232997d8
commit ff6a55dee9
6 changed files with 29 additions and 68 deletions

View File

@ -219,7 +219,6 @@ EXTRA_DIST = \
linux/ia64/syscallent.h \
linux/ia64/userent.h \
linux/inet_diag.h \
linux/kexec.h \
linux/keyctl.h \
linux/m68k/ioctls_arch0.h \
linux/m68k/ioctls_inc0.h \

19
kexec.c
View File

@ -1,8 +1,14 @@
#include "defs.h"
#include <linux/kexec.h>
#include "xlat/kexec_load_flags.h"
#include "xlat/kexec_arch_values.h"
#include "xlat/kexec_flags.h"
#ifndef KEXEC_ARCH_MASK
# define KEXEC_ARCH_MASK 0xffff0000
#endif
#ifndef KEXEC_SEGMENT_MAX
# define KEXEC_SEGMENT_MAX 16
#endif
static void
print_kexec_segments(struct tcb *tcp, unsigned long addr, unsigned long len)
@ -23,7 +29,12 @@ print_kexec_segments(struct tcb *tcp, unsigned long addr, unsigned long len)
# define seg_memsz \
(current_wordsize == 4 ? (uint64_t) seg.seg32.memsz : seg.seg64.memsz)
#else
struct kexec_segment seg;
struct {
void *buf;
size_t bufsz;
void *mem;
size_t memsz;
} seg;
# define sizeof_seg sizeof(seg)
# define seg_buf seg.buf
# define seg_bufsz seg.bufsz
@ -83,7 +94,7 @@ sys_kexec_load(struct tcb *tcp)
n &= ~KEXEC_ARCH_MASK;
if (n) {
tprints("|");
printflags(kexec_flags, n, "KEXEC_???");
printflags(kexec_load_flags, n, "KEXEC_???");
}
return 0;

View File

@ -1,50 +0,0 @@
#ifndef LINUX_KEXEC_H
#define LINUX_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.
*/
/* 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
/*
* 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 /* LINUX_KEXEC_H */

View File

@ -1,11 +1,12 @@
KEXEC_ARCH_DEFAULT
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_LE
KEXEC_ARCH_MIPS
KEXEC_ARCH_DEFAULT ( 0 << 16)
KEXEC_ARCH_386 ( 3 << 16)
KEXEC_ARCH_68K ( 4 << 16)
KEXEC_ARCH_X86_64 (62 << 16)
KEXEC_ARCH_PPC (20 << 16)
KEXEC_ARCH_PPC64 (21 << 16)
KEXEC_ARCH_IA_64 (50 << 16)
KEXEC_ARCH_ARM (40 << 16)
KEXEC_ARCH_S390 (22 << 16)
KEXEC_ARCH_SH (42 << 16)
KEXEC_ARCH_MIPS_LE (10 << 16)
KEXEC_ARCH_MIPS ( 8 << 16)

View File

@ -1,2 +0,0 @@
KEXEC_ON_CRASH
KEXEC_PRESERVE_CONTEXT

2
xlat/kexec_load_flags.in Normal file
View File

@ -0,0 +1,2 @@
KEXEC_ON_CRASH 0x00000001
KEXEC_PRESERVE_CONTEXT 0x00000002