 607ca46e97
			
		
	
	
	607ca46e97
	
	
	
		
			
			Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Michael Kerrisk <mtk.manpages@gmail.com> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Dave Jones <davej@redhat.com>
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #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 */
 |