mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
Not working yet as we are a bit too keen to kill the qemu-dm process, before we know that the save has been successful. Signed-off-by: Keir Fraser <keir@xensource.com>
154 lines
5.7 KiB
C
154 lines
5.7 KiB
C
/******************************************************************************
|
|
* xenguest.h
|
|
*
|
|
* A library for guest domain management in Xen.
|
|
*
|
|
* Copyright (c) 2003-2004, K A Fraser.
|
|
*/
|
|
|
|
#ifndef XENGUEST_H
|
|
#define XENGUEST_H
|
|
|
|
#define XCFLAGS_LIVE 1
|
|
#define XCFLAGS_DEBUG 2
|
|
#define XCFLAGS_HVM 4
|
|
#define XCFLAGS_STDVGA 8
|
|
|
|
|
|
/**
|
|
* This function will save a running domain.
|
|
*
|
|
* @parm xc_handle a handle to an open hypervisor interface
|
|
* @parm fd the file descriptor to save a domain to
|
|
* @parm dom the id of the domain
|
|
* @return 0 on success, -1 on failure
|
|
*/
|
|
int xc_domain_save(int xc_handle, int io_fd, uint32_t dom, uint32_t max_iters,
|
|
uint32_t max_factor, uint32_t flags /* XCFLAGS_xxx */,
|
|
int (*suspend)(int domid), int hvm,
|
|
void *(*init_qemu_maps)(int, unsigned), /* HVM only */
|
|
void (*qemu_flip_buffer)(int, int)); /* HVM only */
|
|
|
|
|
|
/**
|
|
* This function will restore a saved domain.
|
|
*
|
|
* @parm xc_handle a handle to an open hypervisor interface
|
|
* @parm fd the file descriptor to restore a domain from
|
|
* @parm dom the id of the domain
|
|
* @parm store_evtchn the store event channel for this domain to use
|
|
* @parm store_mfn returned with the mfn of the store page
|
|
* @parm hvm non-zero if this is a HVM restore
|
|
* @parm pae non-zero if this HVM domain has PAE support enabled
|
|
* @return 0 on success, -1 on failure
|
|
*/
|
|
int xc_domain_restore(int xc_handle, int io_fd, uint32_t dom,
|
|
unsigned int store_evtchn, unsigned long *store_mfn,
|
|
unsigned int console_evtchn, unsigned long *console_mfn,
|
|
unsigned int hvm, unsigned int pae);
|
|
|
|
/**
|
|
* This function will create a domain for a paravirtualized Linux
|
|
* using file names pointing to kernel and ramdisk
|
|
*
|
|
* @parm xc_handle a handle to an open hypervisor interface
|
|
* @parm domid the id of the domain
|
|
* @parm mem_mb memory size in megabytes
|
|
* @parm image_name name of the kernel image file
|
|
* @parm ramdisk_name name of the ramdisk image file
|
|
* @parm cmdline command line string
|
|
* @parm flags domain creation flags
|
|
* @parm store_evtchn the store event channel for this domain to use
|
|
* @parm store_mfn returned with the mfn of the store page
|
|
* @parm console_evtchn the console event channel for this domain to use
|
|
* @parm conole_mfn returned with the mfn of the console page
|
|
* @return 0 on success, -1 on failure
|
|
*/
|
|
int xc_linux_build(int xc_handle,
|
|
uint32_t domid,
|
|
unsigned int mem_mb,
|
|
const char *image_name,
|
|
const char *ramdisk_name,
|
|
const char *cmdline,
|
|
const char *features,
|
|
unsigned long flags,
|
|
unsigned int store_evtchn,
|
|
unsigned long *store_mfn,
|
|
unsigned int console_evtchn,
|
|
unsigned long *console_mfn);
|
|
|
|
/** The same interface, but the dom structure is managed by the caller */
|
|
struct xc_dom_image;
|
|
int xc_dom_linux_build(int xc_handle,
|
|
struct xc_dom_image *dom,
|
|
uint32_t domid,
|
|
unsigned int mem_mb,
|
|
const char *image_name,
|
|
const char *ramdisk_name,
|
|
unsigned long flags,
|
|
unsigned int store_evtchn,
|
|
unsigned long *store_mfn,
|
|
unsigned int console_evtchn,
|
|
unsigned long *console_mfn);
|
|
|
|
/**
|
|
* This function will create a domain for a paravirtualized Linux
|
|
* using buffers for kernel and initrd
|
|
*
|
|
* @parm xc_handle a handle to an open hypervisor interface
|
|
* @parm domid the id of the domain
|
|
* @parm mem_mb memory size in megabytes
|
|
* @parm image_buffer buffer containing kernel image
|
|
* @parm image_size size of the kernel image buffer
|
|
* @parm initrd_buffer name of the ramdisk image file
|
|
* @parm initrd_size size of the ramdisk buffer
|
|
* @parm cmdline command line string
|
|
* @parm flags domain creation flags
|
|
* @parm store_evtchn the store event channel for this domain to use
|
|
* @parm store_mfn returned with the mfn of the store page
|
|
* @parm console_evtchn the console event channel for this domain to use
|
|
* @parm conole_mfn returned with the mfn of the console page
|
|
* @return 0 on success, -1 on failure
|
|
*/
|
|
int xc_linux_build_mem(int xc_handle,
|
|
uint32_t domid,
|
|
unsigned int mem_mb,
|
|
const char *image_buffer,
|
|
unsigned long image_size,
|
|
const char *initrd_buffer,
|
|
unsigned long initrd_size,
|
|
const char *cmdline,
|
|
const char *features,
|
|
unsigned long flags,
|
|
unsigned int store_evtchn,
|
|
unsigned long *store_mfn,
|
|
unsigned int console_evtchn,
|
|
unsigned long *console_mfn);
|
|
|
|
int xc_hvm_build(int xc_handle,
|
|
uint32_t domid,
|
|
int memsize,
|
|
const char *image_name);
|
|
|
|
int xc_hvm_build_mem(int xc_handle,
|
|
uint32_t domid,
|
|
int memsize,
|
|
const char *image_buffer,
|
|
unsigned long image_size);
|
|
|
|
/* PowerPC specific. */
|
|
int xc_prose_build(int xc_handle,
|
|
uint32_t domid,
|
|
unsigned int mem_mb,
|
|
const char *image_name,
|
|
const char *ramdisk_name,
|
|
const char *cmdline,
|
|
const char *features,
|
|
unsigned long flags,
|
|
unsigned int store_evtchn,
|
|
unsigned long *store_mfn,
|
|
unsigned int console_evtchn,
|
|
unsigned long *console_mfn);
|
|
|
|
#endif /* XENGUEST_H */
|