Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
KEXEC_LOAD(2)		      System Calls Manual		 KEXEC_LOAD(2)

NAME
       kexec_load -- prepare new kernel	to reboot into

SYNOPSIS
       Standard	C Library (libc, -lc) #include <sys/kexec.h>

       int
       kexec_load(uint64_t	 entry,	      unsigned	     long	count,
	   struct kexec_segment	*segments, unsigned long flags);

DESCRIPTION
       The kexec_load()	system call loads a new	kernel that  can  be  executed
       later  by  reboot(2).   Subsequent calls	will replace previously	loaded
       images.

       The flags argument is a bitmask of flags	that control the operation  of
       the  call.   This argument is present for compatibility with Linux, al-
       though it is currently unused and must be 0.

       The entry argument is the physical address of the entry	point  of  the
       new kernel image.

       The  count  argument  is	the number of segments in the image, currently
       limited to 16.  A value of 0 will unload	the currently staged image, if
       one exists, without staging a new image.

       The segments argument is	an array of count  members  of	the  following
       structure:

	     struct  kexec_segment {
		 void *buf;
		 size_t	bufsz;
		 vm_paddr_t mem;
		 vm_size_t memsz;
	     };

       The  buf	 and bufsz members specify a memory region in the caller's ad-
       dress space containing the source of the	segment.  The  mem  and	 memsz
       members	specify	the target physical region of the segment.  bufsz must
       be less than or equal to	memsz, and mem and memsz must be page aligned.
       The region  covered  by	mem  must  be  in  the	list  covered  by  the
       vm.phys_segs sysctl.

       The  kexec_load()  system  call	stages the kernel image	in safe	memory
       along with all machine-dependent	image data until reboot(2)  is	called
       with the	RB_KEXEC flag to load the image	and execute the	new kernel.

RETURN VALUES
       The  kexec_load()  system call returns 0	on success.  On	failure, -1 is
       returned, and errno is set to indicate the error.  On success any  pre-
       viously	loaded	image is unloaded and replaced with the	new image.  On
       failure,	the previously loaded image is unchanged.

ERRORS
       The following errors may	be returned:

       [EINVAL]		  Too many segments in image.

       [EINVAL]		  The value of bufsz is	larger than memsz  in  one  or
			  more segments.

       [EINVAL]		  Machine-dependent load error.

       [EBUSY]		  Another kexec_load() call is in progress.

HISTORY
       The kexec_load system call appeared in FreeBSD 16.0.

FreeBSD	16.0 CURRENT	       October 29, 2025			 KEXEC_LOAD(2)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=kexec_load&sektion=2&manpath=FreeBSD+16.0-CURRENT>

home | help