2006-03-20 17:49:28 +00:00
|
|
|
/*
|
2008-02-05 19:27:37 +00:00
|
|
|
* driver.h: description of the set of interfaces provided by a
|
2006-03-20 17:49:28 +00:00
|
|
|
* entry point to the virtualization engine
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __VIR_DRIVER_H__
|
|
|
|
#define __VIR_DRIVER_H__
|
|
|
|
|
2007-11-14 11:40:57 +00:00
|
|
|
#include <libxml/uri.h>
|
|
|
|
|
2006-06-21 12:56:19 +00:00
|
|
|
/*
|
|
|
|
* List of registered drivers numbers
|
|
|
|
*/
|
|
|
|
typedef enum {
|
2007-04-04 14:19:49 +00:00
|
|
|
VIR_DRV_XEN_UNIFIED = 1,
|
|
|
|
VIR_DRV_TEST = 2,
|
|
|
|
VIR_DRV_QEMU = 3,
|
2007-06-11 11:43:41 +00:00
|
|
|
VIR_DRV_REMOTE = 4,
|
2007-07-17 13:27:26 +00:00
|
|
|
VIR_DRV_OPENVZ = 5,
|
2008-03-21 15:03:37 +00:00
|
|
|
VIR_DRV_LXC = 6
|
2006-06-21 12:56:19 +00:00
|
|
|
} virDrvNo;
|
|
|
|
|
|
|
|
|
2007-04-04 14:19:49 +00:00
|
|
|
/* Status codes returned from driver open call. */
|
|
|
|
typedef enum {
|
|
|
|
/* Opened successfully. */
|
|
|
|
VIR_DRV_OPEN_SUCCESS = 0,
|
|
|
|
|
|
|
|
/* 'name' is not for us. */
|
|
|
|
VIR_DRV_OPEN_DECLINED = -1,
|
|
|
|
|
|
|
|
/* 'name' is for us, but there was some error. virConnectOpen will
|
|
|
|
* return an error rather than continue probing the other drivers.
|
|
|
|
*/
|
|
|
|
VIR_DRV_OPEN_ERROR = -2,
|
|
|
|
} virDrvOpenStatus;
|
|
|
|
|
2007-08-21 09:03:55 +00:00
|
|
|
/* Feature detection. This is a libvirt-private interface for determining
|
|
|
|
* what features are supported by the driver.
|
|
|
|
*
|
|
|
|
* The remote driver passes features through to the real driver at the
|
|
|
|
* remote end unmodified, except if you query a VIR_DRV_FEATURE_REMOTE*
|
|
|
|
* feature.
|
|
|
|
*/
|
|
|
|
/* Driver supports V1-style virDomainMigrate, ie. domainMigratePrepare/
|
|
|
|
* domainMigratePerform/domainMigrateFinish.
|
|
|
|
*/
|
|
|
|
#define VIR_DRV_FEATURE_MIGRATION_V1 1
|
|
|
|
|
|
|
|
/* Driver is not local. */
|
|
|
|
#define VIR_DRV_FEATURE_REMOTE 2
|
|
|
|
|
2008-11-14 08:42:47 +00:00
|
|
|
/* Driver supports V2-style virDomainMigrate, ie. domainMigratePrepare2/
|
|
|
|
* domainMigratePerform/domainMigrateFinish2.
|
|
|
|
*/
|
|
|
|
#define VIR_DRV_FEATURE_MIGRATION_V2 3
|
|
|
|
|
2007-08-21 09:03:55 +00:00
|
|
|
/* Internal feature-detection macro. Don't call drv->supports_feature
|
|
|
|
* directly, because it may be NULL, use this macro instead.
|
|
|
|
*
|
|
|
|
* Note that you must check for errors.
|
|
|
|
*
|
|
|
|
* Returns:
|
|
|
|
* >= 1 Feature is supported.
|
|
|
|
* 0 Feature is not supported.
|
|
|
|
* -1 Error.
|
|
|
|
*/
|
|
|
|
#define VIR_DRV_SUPPORTS_FEATURE(drv,conn,feature) \
|
|
|
|
((drv)->supports_feature ? (drv)->supports_feature((conn),(feature)) : 0)
|
|
|
|
|
2007-04-04 14:19:49 +00:00
|
|
|
typedef virDrvOpenStatus
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvOpen) (virConnectPtr conn,
|
2007-12-05 18:28:05 +00:00
|
|
|
virConnectAuthPtr auth,
|
|
|
|
int flags);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvClose) (virConnectPtr conn);
|
2007-08-21 09:03:55 +00:00
|
|
|
typedef int
|
2008-11-17 11:03:25 +00:00
|
|
|
(*virDrvDrvSupportsFeature) (virConnectPtr conn, int feature);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef const char *
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvGetType) (virConnectPtr conn);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvGetVersion) (virConnectPtr conn,
|
|
|
|
unsigned long *hvVer);
|
2007-06-26 11:42:46 +00:00
|
|
|
typedef char *
|
|
|
|
(*virDrvGetHostname) (virConnectPtr conn);
|
|
|
|
typedef char *
|
|
|
|
(*virDrvGetURI) (virConnectPtr conn);
|
2007-03-08 08:31:07 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvGetMaxVcpus) (virConnectPtr conn,
|
|
|
|
const char *type);
|
2006-03-29 12:46:03 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNodeGetInfo) (virConnectPtr conn,
|
|
|
|
virNodeInfoPtr info);
|
2007-03-15 17:24:56 +00:00
|
|
|
typedef char *
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvGetCapabilities) (virConnectPtr conn);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvListDomains) (virConnectPtr conn,
|
|
|
|
int *ids,
|
|
|
|
int maxids);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNumOfDomains) (virConnectPtr conn);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef virDomainPtr
|
2008-10-10 09:32:27 +00:00
|
|
|
(*virDrvDomainCreateXML) (virConnectPtr conn,
|
2008-04-10 16:54:54 +00:00
|
|
|
const char *xmlDesc,
|
|
|
|
unsigned int flags);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef virDomainPtr
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainLookupByID) (virConnectPtr conn,
|
|
|
|
int id);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef virDomainPtr
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainLookupByUUID) (virConnectPtr conn,
|
|
|
|
const unsigned char *uuid);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef virDomainPtr
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainLookupByName) (virConnectPtr conn,
|
|
|
|
const char *name);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainSuspend) (virDomainPtr domain);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainResume) (virDomainPtr domain);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainShutdown) (virDomainPtr domain);
|
2006-04-03 13:46:43 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainReboot) (virDomainPtr domain,
|
|
|
|
unsigned int flags);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainDestroy) (virDomainPtr domain);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef char *
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainGetOSType) (virDomainPtr domain);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef unsigned long
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainGetMaxMemory) (virDomainPtr domain);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainSetMaxMemory) (virDomainPtr domain,
|
|
|
|
unsigned long memory);
|
2006-04-13 17:18:49 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainSetMemory) (virDomainPtr domain,
|
|
|
|
unsigned long memory);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainGetInfo) (virDomainPtr domain,
|
|
|
|
virDomainInfoPtr info);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainSave) (virDomainPtr domain,
|
|
|
|
const char *to);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainRestore) (virConnectPtr conn,
|
|
|
|
const char *from);
|
2006-11-22 17:48:29 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainCoreDump) (virDomainPtr domain,
|
|
|
|
const char *to,
|
|
|
|
int flags);
|
2006-08-09 15:21:16 +00:00
|
|
|
typedef char *
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainDumpXML) (virDomainPtr dom,
|
|
|
|
int flags);
|
2006-08-30 14:21:03 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvListDefinedDomains) (virConnectPtr conn,
|
|
|
|
char **const names,
|
|
|
|
int maxnames);
|
2006-08-30 14:21:03 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNumOfDefinedDomains) (virConnectPtr conn);
|
2006-08-30 14:21:03 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainCreate) (virDomainPtr dom);
|
2006-08-30 14:21:03 +00:00
|
|
|
typedef virDomainPtr
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainDefineXML) (virConnectPtr conn,
|
|
|
|
const char *xml);
|
2006-08-30 14:21:03 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainUndefine) (virDomainPtr dom);
|
2006-08-08 22:22:55 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainSetVcpus) (virDomainPtr domain,
|
|
|
|
unsigned int nvcpus);
|
2006-08-08 22:22:55 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainPinVcpu) (virDomainPtr domain,
|
|
|
|
unsigned int vcpu,
|
|
|
|
unsigned char *cpumap,
|
|
|
|
int maplen);
|
2006-08-08 22:22:55 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainGetVcpus) (virDomainPtr domain,
|
|
|
|
virVcpuInfoPtr info,
|
|
|
|
int maxinfo,
|
|
|
|
unsigned char *cpumaps,
|
|
|
|
int maplen);
|
2007-03-08 08:31:07 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainGetMaxVcpus) (virDomainPtr domain);
|
2006-11-16 18:11:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainAttachDevice) (virDomainPtr domain,
|
|
|
|
const char *xml);
|
2006-11-16 18:11:28 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainDetachDevice) (virDomainPtr domain,
|
|
|
|
const char *xml);
|
2007-02-23 08:51:30 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainGetAutostart) (virDomainPtr domain,
|
|
|
|
int *autostart);
|
2007-02-23 08:51:30 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainSetAutostart) (virDomainPtr domain,
|
|
|
|
int autostart);
|
2006-08-08 22:22:55 +00:00
|
|
|
|
2007-06-05 12:06:08 +00:00
|
|
|
typedef char *
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainGetSchedulerType) (virDomainPtr domain,
|
|
|
|
int *nparams);
|
2007-06-05 12:06:08 +00:00
|
|
|
|
2008-02-05 19:27:37 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainGetSchedulerParameters)
|
|
|
|
(virDomainPtr domain,
|
|
|
|
virSchedParameterPtr params,
|
|
|
|
int *nparams);
|
2007-06-05 12:06:08 +00:00
|
|
|
|
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvDomainSetSchedulerParameters)
|
|
|
|
(virDomainPtr domain,
|
|
|
|
virSchedParameterPtr params,
|
|
|
|
int nparams);
|
2007-06-05 12:06:08 +00:00
|
|
|
|
2007-08-21 10:08:12 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainBlockStats)
|
|
|
|
(virDomainPtr domain,
|
|
|
|
const char *path,
|
|
|
|
struct _virDomainBlockStats *stats);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainInterfaceStats)
|
|
|
|
(virDomainPtr domain,
|
|
|
|
const char *path,
|
|
|
|
struct _virDomainInterfaceStats *stats);
|
|
|
|
|
virDomainBlockPeek call
* configure.in: Document AC_SYS_LARGEFILE.
* docs/hvsupport.html.in: Document HV support for virDomainBlockPeek.
* include/libvirt/libvirt.h.in, src/driver.h, src/libvirt.c,
src/libvirt_sym.version: Add virDomainBlockPeek infrastructure.
* src/qemu_driver.c, src/test.c: Null versions of this call.
* src/xen_unified.c, src/xend_internal.c, src/xend_internal.h,
src/xm_internal.c, src/xm_internal.h: Xen implementation.
* tests/sexpr2xmldata/sexpr2xml-curmem.xml,
tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml: XML output
has been reordered slightly in the Xen driver, but should be
functionally the same.
2008-06-05 13:17:45 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainBlockPeek)
|
|
|
|
(virDomainPtr domain,
|
|
|
|
const char *path,
|
|
|
|
unsigned long long offset, size_t size,
|
2008-06-05 21:12:26 +00:00
|
|
|
void *buffer,
|
|
|
|
unsigned int flags);
|
virDomainBlockPeek call
* configure.in: Document AC_SYS_LARGEFILE.
* docs/hvsupport.html.in: Document HV support for virDomainBlockPeek.
* include/libvirt/libvirt.h.in, src/driver.h, src/libvirt.c,
src/libvirt_sym.version: Add virDomainBlockPeek infrastructure.
* src/qemu_driver.c, src/test.c: Null versions of this call.
* src/xen_unified.c, src/xend_internal.c, src/xend_internal.h,
src/xm_internal.c, src/xm_internal.h: Xen implementation.
* tests/sexpr2xmldata/sexpr2xml-curmem.xml,
tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml: XML output
has been reordered slightly in the Xen driver, but should be
functionally the same.
2008-06-05 13:17:45 +00:00
|
|
|
|
2008-06-10 10:43:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainMemoryPeek)
|
|
|
|
(virDomainPtr domain,
|
|
|
|
unsigned long long start, size_t size,
|
|
|
|
void *buffer,
|
|
|
|
unsigned int flags);
|
|
|
|
|
2007-08-21 09:31:12 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainMigratePrepare)
|
|
|
|
(virConnectPtr dconn,
|
|
|
|
char **cookie,
|
|
|
|
int *cookielen,
|
|
|
|
const char *uri_in,
|
|
|
|
char **uri_out,
|
|
|
|
unsigned long flags,
|
|
|
|
const char *dname,
|
|
|
|
unsigned long resource);
|
|
|
|
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainMigratePerform)
|
|
|
|
(virDomainPtr domain,
|
|
|
|
const char *cookie,
|
|
|
|
int cookielen,
|
|
|
|
const char *uri,
|
|
|
|
unsigned long flags,
|
|
|
|
const char *dname,
|
|
|
|
unsigned long resource);
|
|
|
|
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainMigrateFinish)
|
|
|
|
(virConnectPtr dconn,
|
|
|
|
const char *dname,
|
|
|
|
const char *cookie,
|
|
|
|
int cookielen,
|
|
|
|
const char *uri,
|
|
|
|
unsigned long flags);
|
|
|
|
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef struct _virDriver virDriver;
|
|
|
|
typedef virDriver *virDriverPtr;
|
|
|
|
|
2007-09-28 14:28:12 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvNodeGetCellsFreeMemory)
|
|
|
|
(virConnectPtr conn,
|
|
|
|
unsigned long long *freeMems,
|
|
|
|
int startCell,
|
|
|
|
int maxCells);
|
|
|
|
|
2007-09-30 13:09:07 +00:00
|
|
|
typedef unsigned long long
|
|
|
|
(*virDrvNodeGetFreeMemory)
|
2008-04-10 16:54:54 +00:00
|
|
|
(virConnectPtr conn);
|
2007-09-30 13:09:07 +00:00
|
|
|
|
2008-10-23 13:18:18 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainEventRegister)
|
|
|
|
(virConnectPtr conn,
|
|
|
|
void *callback,
|
2008-11-19 15:25:24 +00:00
|
|
|
void *opaque,
|
|
|
|
virFreeCallback freecb);
|
2008-10-23 13:18:18 +00:00
|
|
|
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainEventDeregister)
|
|
|
|
(virConnectPtr conn,
|
|
|
|
void *callback);
|
|
|
|
|
2008-11-14 08:42:47 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainMigratePrepare2)
|
|
|
|
(virConnectPtr dconn,
|
|
|
|
char **cookie,
|
|
|
|
int *cookielen,
|
|
|
|
const char *uri_in,
|
|
|
|
char **uri_out,
|
|
|
|
unsigned long flags,
|
|
|
|
const char *dname,
|
|
|
|
unsigned long resource,
|
|
|
|
const char *dom_xml);
|
|
|
|
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainMigrateFinish2)
|
|
|
|
(virConnectPtr dconn,
|
|
|
|
const char *dname,
|
|
|
|
const char *cookie,
|
|
|
|
int cookielen,
|
|
|
|
const char *uri,
|
|
|
|
unsigned long flags,
|
|
|
|
int retcode);
|
|
|
|
|
2006-03-20 17:49:28 +00:00
|
|
|
/**
|
|
|
|
* _virDriver:
|
|
|
|
*
|
|
|
|
* Structure associated to a virtualization driver, defining the various
|
|
|
|
* entry points for it.
|
2007-04-04 14:19:49 +00:00
|
|
|
*
|
|
|
|
* All drivers must support the following fields/methods:
|
|
|
|
* - no
|
|
|
|
* - name
|
|
|
|
* - open
|
|
|
|
* - close
|
2006-03-20 17:49:28 +00:00
|
|
|
*/
|
|
|
|
struct _virDriver {
|
2008-02-26 07:05:18 +00:00
|
|
|
int no; /* the number virDrvNo */
|
|
|
|
const char * name; /* the name of the driver */
|
|
|
|
unsigned long ver; /* the version of the backend */
|
|
|
|
virDrvOpen open;
|
|
|
|
virDrvClose close;
|
2008-11-17 11:03:25 +00:00
|
|
|
virDrvDrvSupportsFeature supports_feature;
|
2008-02-26 07:05:18 +00:00
|
|
|
virDrvGetType type;
|
|
|
|
virDrvGetVersion version;
|
2007-06-26 11:42:46 +00:00
|
|
|
virDrvGetHostname getHostname;
|
|
|
|
virDrvGetURI getURI;
|
2008-02-26 07:05:18 +00:00
|
|
|
virDrvGetMaxVcpus getMaxVcpus;
|
|
|
|
virDrvNodeGetInfo nodeGetInfo;
|
|
|
|
virDrvGetCapabilities getCapabilities;
|
|
|
|
virDrvListDomains listDomains;
|
|
|
|
virDrvNumOfDomains numOfDomains;
|
2008-10-10 09:32:27 +00:00
|
|
|
virDrvDomainCreateXML domainCreateXML;
|
2008-02-26 07:05:18 +00:00
|
|
|
virDrvDomainLookupByID domainLookupByID;
|
|
|
|
virDrvDomainLookupByUUID domainLookupByUUID;
|
|
|
|
virDrvDomainLookupByName domainLookupByName;
|
|
|
|
virDrvDomainSuspend domainSuspend;
|
|
|
|
virDrvDomainResume domainResume;
|
|
|
|
virDrvDomainShutdown domainShutdown;
|
|
|
|
virDrvDomainReboot domainReboot;
|
|
|
|
virDrvDomainDestroy domainDestroy;
|
|
|
|
virDrvDomainGetOSType domainGetOSType;
|
|
|
|
virDrvDomainGetMaxMemory domainGetMaxMemory;
|
|
|
|
virDrvDomainSetMaxMemory domainSetMaxMemory;
|
|
|
|
virDrvDomainSetMemory domainSetMemory;
|
|
|
|
virDrvDomainGetInfo domainGetInfo;
|
|
|
|
virDrvDomainSave domainSave;
|
|
|
|
virDrvDomainRestore domainRestore;
|
|
|
|
virDrvDomainCoreDump domainCoreDump;
|
|
|
|
virDrvDomainSetVcpus domainSetVcpus;
|
|
|
|
virDrvDomainPinVcpu domainPinVcpu;
|
|
|
|
virDrvDomainGetVcpus domainGetVcpus;
|
|
|
|
virDrvDomainGetMaxVcpus domainGetMaxVcpus;
|
|
|
|
virDrvDomainDumpXML domainDumpXML;
|
|
|
|
virDrvListDefinedDomains listDefinedDomains;
|
|
|
|
virDrvNumOfDefinedDomains numOfDefinedDomains;
|
|
|
|
virDrvDomainCreate domainCreate;
|
|
|
|
virDrvDomainDefineXML domainDefineXML;
|
|
|
|
virDrvDomainUndefine domainUndefine;
|
|
|
|
virDrvDomainAttachDevice domainAttachDevice;
|
|
|
|
virDrvDomainDetachDevice domainDetachDevice;
|
|
|
|
virDrvDomainGetAutostart domainGetAutostart;
|
|
|
|
virDrvDomainSetAutostart domainSetAutostart;
|
|
|
|
virDrvDomainGetSchedulerType domainGetSchedulerType;
|
|
|
|
virDrvDomainGetSchedulerParameters domainGetSchedulerParameters;
|
|
|
|
virDrvDomainSetSchedulerParameters domainSetSchedulerParameters;
|
2007-08-21 09:31:12 +00:00
|
|
|
virDrvDomainMigratePrepare domainMigratePrepare;
|
|
|
|
virDrvDomainMigratePerform domainMigratePerform;
|
|
|
|
virDrvDomainMigrateFinish domainMigrateFinish;
|
2007-08-21 10:08:12 +00:00
|
|
|
virDrvDomainBlockStats domainBlockStats;
|
|
|
|
virDrvDomainInterfaceStats domainInterfaceStats;
|
virDomainBlockPeek call
* configure.in: Document AC_SYS_LARGEFILE.
* docs/hvsupport.html.in: Document HV support for virDomainBlockPeek.
* include/libvirt/libvirt.h.in, src/driver.h, src/libvirt.c,
src/libvirt_sym.version: Add virDomainBlockPeek infrastructure.
* src/qemu_driver.c, src/test.c: Null versions of this call.
* src/xen_unified.c, src/xend_internal.c, src/xend_internal.h,
src/xm_internal.c, src/xm_internal.h: Xen implementation.
* tests/sexpr2xmldata/sexpr2xml-curmem.xml,
tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml: XML output
has been reordered slightly in the Xen driver, but should be
functionally the same.
2008-06-05 13:17:45 +00:00
|
|
|
virDrvDomainBlockPeek domainBlockPeek;
|
2008-06-10 10:43:28 +00:00
|
|
|
virDrvDomainMemoryPeek domainMemoryPeek;
|
2008-02-26 07:05:18 +00:00
|
|
|
virDrvNodeGetCellsFreeMemory nodeGetCellsFreeMemory;
|
|
|
|
virDrvNodeGetFreeMemory getFreeMemory;
|
2008-10-23 13:18:18 +00:00
|
|
|
virDrvDomainEventRegister domainEventRegister;
|
|
|
|
virDrvDomainEventDeregister domainEventDeregister;
|
2008-11-14 08:42:47 +00:00
|
|
|
virDrvDomainMigratePrepare2 domainMigratePrepare2;
|
|
|
|
virDrvDomainMigrateFinish2 domainMigrateFinish2;
|
2006-03-20 17:49:28 +00:00
|
|
|
};
|
|
|
|
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNumOfNetworks) (virConnectPtr conn);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvListNetworks) (virConnectPtr conn,
|
|
|
|
char **const names,
|
|
|
|
int maxnames);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNumOfDefinedNetworks) (virConnectPtr conn);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvListDefinedNetworks) (virConnectPtr conn,
|
|
|
|
char **const names,
|
|
|
|
int maxnames);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef virNetworkPtr
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkLookupByUUID) (virConnectPtr conn,
|
|
|
|
const unsigned char *uuid);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef virNetworkPtr
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkLookupByName) (virConnectPtr conn,
|
|
|
|
const char *name);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef virNetworkPtr
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkCreateXML) (virConnectPtr conn,
|
|
|
|
const char *xmlDesc);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef virNetworkPtr
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkDefineXML) (virConnectPtr conn,
|
|
|
|
const char *xml);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkUndefine) (virNetworkPtr network);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkCreate) (virNetworkPtr network);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkDestroy) (virNetworkPtr network);
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef char *
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkDumpXML) (virNetworkPtr network,
|
|
|
|
int flags);
|
2007-02-14 16:20:38 +00:00
|
|
|
typedef char *
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkGetBridgeName) (virNetworkPtr network);
|
2007-02-23 08:51:30 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkGetAutostart) (virNetworkPtr network,
|
|
|
|
int *autostart);
|
2007-02-23 08:51:30 +00:00
|
|
|
typedef int
|
2008-04-10 16:54:54 +00:00
|
|
|
(*virDrvNetworkSetAutostart) (virNetworkPtr network,
|
|
|
|
int autostart);
|
2007-02-23 08:51:30 +00:00
|
|
|
|
2007-02-14 15:37:18 +00:00
|
|
|
|
|
|
|
typedef struct _virNetworkDriver virNetworkDriver;
|
|
|
|
typedef virNetworkDriver *virNetworkDriverPtr;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* _virNetworkDriver:
|
|
|
|
*
|
|
|
|
* Structure associated to a network virtualization driver, defining the various
|
|
|
|
* entry points for it.
|
2007-04-04 14:19:49 +00:00
|
|
|
*
|
|
|
|
* All drivers must support the following fields/methods:
|
|
|
|
* - open
|
|
|
|
* - close
|
2007-02-14 15:37:18 +00:00
|
|
|
*/
|
|
|
|
struct _virNetworkDriver {
|
2008-04-10 16:54:54 +00:00
|
|
|
const char * name; /* the name of the driver */
|
|
|
|
virDrvOpen open;
|
|
|
|
virDrvClose close;
|
|
|
|
virDrvNumOfNetworks numOfNetworks;
|
|
|
|
virDrvListNetworks listNetworks;
|
|
|
|
virDrvNumOfDefinedNetworks numOfDefinedNetworks;
|
|
|
|
virDrvListDefinedNetworks listDefinedNetworks;
|
|
|
|
virDrvNetworkLookupByUUID networkLookupByUUID;
|
|
|
|
virDrvNetworkLookupByName networkLookupByName;
|
|
|
|
virDrvNetworkCreateXML networkCreateXML;
|
|
|
|
virDrvNetworkDefineXML networkDefineXML;
|
|
|
|
virDrvNetworkUndefine networkUndefine;
|
|
|
|
virDrvNetworkCreate networkCreate;
|
|
|
|
virDrvNetworkDestroy networkDestroy;
|
|
|
|
virDrvNetworkDumpXML networkDumpXML;
|
|
|
|
virDrvNetworkGetBridgeName networkGetBridgeName;
|
|
|
|
virDrvNetworkGetAutostart networkGetAutostart;
|
|
|
|
virDrvNetworkSetAutostart networkSetAutostart;
|
2007-02-14 15:37:18 +00:00
|
|
|
};
|
|
|
|
|
2008-02-20 15:06:53 +00:00
|
|
|
|
|
|
|
typedef int
|
|
|
|
(*virDrvConnectNumOfStoragePools) (virConnectPtr conn);
|
|
|
|
typedef int
|
|
|
|
(*virDrvConnectListStoragePools) (virConnectPtr conn,
|
|
|
|
char **const names,
|
|
|
|
int maxnames);
|
|
|
|
typedef int
|
|
|
|
(*virDrvConnectNumOfDefinedStoragePools) (virConnectPtr conn);
|
|
|
|
typedef int
|
|
|
|
(*virDrvConnectListDefinedStoragePools) (virConnectPtr conn,
|
|
|
|
char **const names,
|
|
|
|
int maxnames);
|
2008-08-27 20:05:58 +00:00
|
|
|
typedef char *
|
|
|
|
(*virDrvConnectFindStoragePoolSources) (virConnectPtr conn,
|
|
|
|
const char *type,
|
|
|
|
const char *srcSpec,
|
|
|
|
unsigned int flags);
|
2008-02-20 15:06:53 +00:00
|
|
|
typedef virStoragePoolPtr
|
|
|
|
(*virDrvStoragePoolLookupByName) (virConnectPtr conn,
|
|
|
|
const char *name);
|
|
|
|
typedef virStoragePoolPtr
|
|
|
|
(*virDrvStoragePoolLookupByUUID) (virConnectPtr conn,
|
|
|
|
const unsigned char *uuid);
|
|
|
|
typedef virStoragePoolPtr
|
|
|
|
(*virDrvStoragePoolLookupByVolume) (virStorageVolPtr vol);
|
|
|
|
typedef virStoragePoolPtr
|
|
|
|
(*virDrvStoragePoolCreateXML) (virConnectPtr conn,
|
|
|
|
const char *xmlDesc,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef virStoragePoolPtr
|
|
|
|
(*virDrvStoragePoolDefineXML) (virConnectPtr conn,
|
|
|
|
const char *xmlDesc,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolUndefine) (virStoragePoolPtr pool);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolBuild) (virStoragePoolPtr pool,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolCreate) (virStoragePoolPtr pool,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolDestroy) (virStoragePoolPtr pool);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolDelete) (virStoragePoolPtr pool,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolRefresh) (virStoragePoolPtr pool,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolGetInfo) (virStoragePoolPtr vol,
|
|
|
|
virStoragePoolInfoPtr info);
|
|
|
|
typedef char *
|
|
|
|
(*virDrvStoragePoolGetXMLDesc) (virStoragePoolPtr pool,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolGetAutostart) (virStoragePoolPtr pool,
|
|
|
|
int *autostart);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolSetAutostart) (virStoragePoolPtr pool,
|
|
|
|
int autostart);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolNumOfVolumes) (virStoragePoolPtr pool);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStoragePoolListVolumes) (virStoragePoolPtr pool,
|
|
|
|
char **const names,
|
|
|
|
int maxnames);
|
|
|
|
|
|
|
|
|
|
|
|
typedef virStorageVolPtr
|
|
|
|
(*virDrvStorageVolLookupByName) (virStoragePoolPtr pool,
|
|
|
|
const char *name);
|
|
|
|
typedef virStorageVolPtr
|
|
|
|
(*virDrvStorageVolLookupByKey) (virConnectPtr pool,
|
|
|
|
const char *key);
|
|
|
|
typedef virStorageVolPtr
|
|
|
|
(*virDrvStorageVolLookupByPath) (virConnectPtr pool,
|
|
|
|
const char *path);
|
|
|
|
|
|
|
|
|
|
|
|
typedef virStorageVolPtr
|
|
|
|
(*virDrvStorageVolCreateXML) (virStoragePoolPtr pool,
|
|
|
|
const char *xmldesc,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef int
|
|
|
|
(*virDrvStorageVolDelete) (virStorageVolPtr vol,
|
|
|
|
unsigned int flags);
|
|
|
|
|
|
|
|
typedef int
|
|
|
|
(*virDrvStorageVolGetInfo) (virStorageVolPtr vol,
|
|
|
|
virStorageVolInfoPtr info);
|
|
|
|
typedef char *
|
|
|
|
(*virDrvStorageVolGetXMLDesc) (virStorageVolPtr pool,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef char *
|
|
|
|
(*virDrvStorageVolGetPath) (virStorageVolPtr vol);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct _virStorageDriver virStorageDriver;
|
|
|
|
typedef virStorageDriver *virStorageDriverPtr;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* _virStorageDriver:
|
|
|
|
*
|
|
|
|
* Structure associated to a network virtualization driver, defining the various
|
|
|
|
* entry points for it.
|
|
|
|
*
|
|
|
|
* All drivers must support the following fields/methods:
|
|
|
|
* - open
|
|
|
|
* - close
|
|
|
|
*/
|
|
|
|
struct _virStorageDriver {
|
|
|
|
const char * name; /* the name of the driver */
|
|
|
|
virDrvOpen open;
|
|
|
|
virDrvClose close;
|
|
|
|
|
|
|
|
virDrvConnectNumOfStoragePools numOfPools;
|
|
|
|
virDrvConnectListStoragePools listPools;
|
|
|
|
virDrvConnectNumOfDefinedStoragePools numOfDefinedPools;
|
|
|
|
virDrvConnectListDefinedStoragePools listDefinedPools;
|
2008-08-27 20:05:58 +00:00
|
|
|
virDrvConnectFindStoragePoolSources findPoolSources;
|
2008-02-20 15:06:53 +00:00
|
|
|
virDrvStoragePoolLookupByName poolLookupByName;
|
|
|
|
virDrvStoragePoolLookupByUUID poolLookupByUUID;
|
|
|
|
virDrvStoragePoolLookupByVolume poolLookupByVolume;
|
|
|
|
virDrvStoragePoolCreateXML poolCreateXML;
|
|
|
|
virDrvStoragePoolDefineXML poolDefineXML;
|
|
|
|
virDrvStoragePoolBuild poolBuild;
|
|
|
|
virDrvStoragePoolUndefine poolUndefine;
|
|
|
|
virDrvStoragePoolCreate poolCreate;
|
|
|
|
virDrvStoragePoolDestroy poolDestroy;
|
|
|
|
virDrvStoragePoolDelete poolDelete;
|
|
|
|
virDrvStoragePoolRefresh poolRefresh;
|
|
|
|
virDrvStoragePoolGetInfo poolGetInfo;
|
|
|
|
virDrvStoragePoolGetXMLDesc poolGetXMLDesc;
|
|
|
|
virDrvStoragePoolGetAutostart poolGetAutostart;
|
|
|
|
virDrvStoragePoolSetAutostart poolSetAutostart;
|
|
|
|
virDrvStoragePoolNumOfVolumes poolNumOfVolumes;
|
|
|
|
virDrvStoragePoolListVolumes poolListVolumes;
|
|
|
|
|
|
|
|
virDrvStorageVolLookupByName volLookupByName;
|
|
|
|
virDrvStorageVolLookupByKey volLookupByKey;
|
|
|
|
virDrvStorageVolLookupByPath volLookupByPath;
|
|
|
|
virDrvStorageVolCreateXML volCreateXML;
|
|
|
|
virDrvStorageVolDelete volDelete;
|
|
|
|
virDrvStorageVolGetInfo volGetInfo;
|
|
|
|
virDrvStorageVolGetXMLDesc volGetXMLDesc;
|
|
|
|
virDrvStorageVolGetPath volGetPath;
|
|
|
|
};
|
|
|
|
|
2008-11-04 22:55:51 +00:00
|
|
|
#ifdef WITH_LIBVIRTD
|
2007-06-26 22:56:14 +00:00
|
|
|
typedef int (*virDrvStateInitialize) (void);
|
|
|
|
typedef int (*virDrvStateCleanup) (void);
|
|
|
|
typedef int (*virDrvStateReload) (void);
|
|
|
|
typedef int (*virDrvStateActive) (void);
|
|
|
|
|
|
|
|
typedef struct _virStateDriver virStateDriver;
|
|
|
|
typedef virStateDriver *virStateDriverPtr;
|
|
|
|
|
|
|
|
struct _virStateDriver {
|
|
|
|
virDrvStateInitialize initialize;
|
|
|
|
virDrvStateCleanup cleanup;
|
|
|
|
virDrvStateReload reload;
|
|
|
|
virDrvStateActive active;
|
|
|
|
};
|
2008-06-26 09:37:51 +00:00
|
|
|
#endif
|
2006-03-20 17:49:28 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Registration
|
|
|
|
* TODO: also need ways to (des)activate a given driver
|
|
|
|
* lookup based on the URI given in a virConnectOpen(ReadOnly)
|
|
|
|
*/
|
|
|
|
int virRegisterDriver(virDriverPtr);
|
2007-02-14 15:37:18 +00:00
|
|
|
int virRegisterNetworkDriver(virNetworkDriverPtr);
|
2008-02-20 15:06:53 +00:00
|
|
|
int virRegisterStorageDriver(virStorageDriverPtr);
|
2008-06-26 09:37:51 +00:00
|
|
|
#ifdef WITH_LIBVIRTD
|
2007-06-26 22:56:14 +00:00
|
|
|
int virRegisterStateDriver(virStateDriverPtr);
|
2008-06-26 09:37:51 +00:00
|
|
|
#endif
|
2006-03-20 17:49:28 +00:00
|
|
|
|
|
|
|
#endif /* __VIR_DRIVER_H__ */
|