2006-03-20 17:49:28 +00:00
|
|
|
/*
|
|
|
|
* driver.h: description of the set of interfaces provided by a
|
|
|
|
* entry point to the virtualization engine
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __VIR_DRIVER_H__
|
|
|
|
#define __VIR_DRIVER_H__
|
|
|
|
|
2006-06-26 15:02:18 +00:00
|
|
|
#include "libvirt/libvirt.h"
|
|
|
|
#include "libvirt/virterror.h"
|
2006-03-20 17:49:28 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2006-06-21 12:56:19 +00:00
|
|
|
/*
|
|
|
|
* List of registered drivers numbers
|
|
|
|
*/
|
|
|
|
typedef enum {
|
|
|
|
VIR_DRV_XEN_HYPERVISOR = 1,
|
|
|
|
VIR_DRV_XEN_STORE = 2,
|
|
|
|
VIR_DRV_XEN_DAEMON = 3,
|
2006-06-29 22:12:47 +00:00
|
|
|
VIR_DRV_TEST = 4,
|
2006-11-16 19:06:13 +00:00
|
|
|
VIR_DRV_XEN_PROXY = 5,
|
2007-02-14 01:40:09 +00:00
|
|
|
VIR_DRV_XEN_XM = 6,
|
|
|
|
VIR_DRV_QEMU = 7
|
2006-06-21 12:56:19 +00:00
|
|
|
} virDrvNo;
|
|
|
|
|
|
|
|
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef enum {
|
|
|
|
VIR_DRV_OPEN_QUIET = 1,
|
|
|
|
VIR_DRV_OPEN_RO = 2
|
|
|
|
} virDrvOpenFlag;
|
|
|
|
|
|
|
|
typedef int
|
|
|
|
(*virDrvInit) (void);
|
|
|
|
typedef int
|
|
|
|
(*virDrvOpen) (virConnectPtr conn,
|
|
|
|
const char *name,
|
|
|
|
int flags);
|
|
|
|
typedef int
|
|
|
|
(*virDrvClose) (virConnectPtr conn);
|
|
|
|
typedef const char *
|
|
|
|
(*virDrvGetType) (virConnectPtr conn);
|
|
|
|
typedef int
|
2006-03-20 23:42:12 +00:00
|
|
|
(*virDrvGetVersion) (virConnectPtr conn,
|
2006-03-20 17:49:28 +00:00
|
|
|
unsigned long *hvVer);
|
2006-03-29 12:46:03 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvNodeGetInfo) (virConnectPtr conn,
|
|
|
|
virNodeInfoPtr info);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvListDomains) (virConnectPtr conn,
|
|
|
|
int *ids,
|
|
|
|
int maxids);
|
|
|
|
typedef int
|
|
|
|
(*virDrvNumOfDomains) (virConnectPtr conn);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainCreateLinux) (virConnectPtr conn,
|
|
|
|
const char *xmlDesc,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainLookupByID) (virConnectPtr conn,
|
|
|
|
int id);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainLookupByUUID) (virConnectPtr conn,
|
|
|
|
const unsigned char *uuid);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainLookupByName) (virConnectPtr conn,
|
|
|
|
const char *name);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSuspend) (virDomainPtr domain);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainResume) (virDomainPtr domain);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainShutdown) (virDomainPtr domain);
|
2006-04-03 13:46:43 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainReboot) (virDomainPtr domain,
|
|
|
|
unsigned int flags);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainDestroy) (virDomainPtr domain);
|
|
|
|
typedef char *
|
|
|
|
(*virDrvDomainGetOSType) (virDomainPtr domain);
|
|
|
|
typedef unsigned long
|
|
|
|
(*virDrvDomainGetMaxMemory) (virDomainPtr domain);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSetMaxMemory) (virDomainPtr domain,
|
|
|
|
unsigned long memory);
|
2006-04-13 17:18:49 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSetMemory) (virDomainPtr domain,
|
|
|
|
unsigned long memory);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainGetInfo) (virDomainPtr domain,
|
|
|
|
virDomainInfoPtr info);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSave) (virDomainPtr domain,
|
|
|
|
const char *to);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainRestore) (virConnectPtr conn,
|
|
|
|
const char *from);
|
2006-11-22 17:48:29 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainCoreDump) (virDomainPtr domain,
|
|
|
|
const char *to,
|
|
|
|
int flags);
|
2006-08-09 15:21:16 +00:00
|
|
|
typedef char *
|
|
|
|
(*virDrvDomainDumpXML) (virDomainPtr dom,
|
|
|
|
int flags);
|
2006-08-30 14:21:03 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvListDefinedDomains) (virConnectPtr conn,
|
|
|
|
const char **names,
|
|
|
|
int maxnames);
|
|
|
|
typedef int
|
|
|
|
(*virDrvNumOfDefinedDomains) (virConnectPtr conn);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainCreate) (virDomainPtr dom);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainDefineXML)(virConnectPtr conn, const char *xml);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainUndefine) (virDomainPtr dom);
|
2006-08-08 22:22:55 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSetVcpus) (virDomainPtr domain,
|
|
|
|
unsigned int nvcpus);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainPinVcpu) (virDomainPtr domain,
|
|
|
|
unsigned int vcpu,
|
|
|
|
unsigned char *cpumap,
|
|
|
|
int maplen);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainGetVcpus) (virDomainPtr domain,
|
|
|
|
virVcpuInfoPtr info,
|
|
|
|
int maxinfo,
|
|
|
|
unsigned char *cpumaps,
|
|
|
|
int maplen);
|
2006-11-16 18:11:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainAttachDevice) (virDomainPtr domain,
|
|
|
|
char *xml);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainDetachDevice) (virDomainPtr domain,
|
|
|
|
char *xml);
|
2006-08-08 22:22:55 +00:00
|
|
|
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef struct _virDriver virDriver;
|
|
|
|
typedef virDriver *virDriverPtr;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* _virDriver:
|
|
|
|
*
|
|
|
|
* Structure associated to a virtualization driver, defining the various
|
|
|
|
* entry points for it.
|
|
|
|
*/
|
|
|
|
struct _virDriver {
|
2006-06-21 12:56:19 +00:00
|
|
|
int no; /* the number virDrvNo */
|
|
|
|
const char * name; /* the name of the driver */
|
|
|
|
unsigned long ver; /* the version of the backend */
|
2006-03-20 17:49:28 +00:00
|
|
|
virDrvInit init;
|
|
|
|
virDrvOpen open;
|
|
|
|
virDrvClose close;
|
|
|
|
virDrvGetType type;
|
|
|
|
virDrvGetVersion version;
|
2006-03-29 12:46:03 +00:00
|
|
|
virDrvNodeGetInfo nodeGetInfo;
|
2006-03-20 17:49:28 +00:00
|
|
|
virDrvListDomains listDomains;
|
|
|
|
virDrvNumOfDomains numOfDomains;
|
|
|
|
virDrvDomainCreateLinux domainCreateLinux;
|
|
|
|
virDrvDomainLookupByID domainLookupByID;
|
|
|
|
virDrvDomainLookupByUUID domainLookupByUUID;
|
|
|
|
virDrvDomainLookupByName domainLookupByName;
|
|
|
|
virDrvDomainSuspend domainSuspend;
|
|
|
|
virDrvDomainResume domainResume;
|
|
|
|
virDrvDomainShutdown domainShutdown;
|
2006-04-03 13:46:43 +00:00
|
|
|
virDrvDomainReboot domainReboot;
|
2006-03-20 17:49:28 +00:00
|
|
|
virDrvDomainDestroy domainDestroy;
|
|
|
|
virDrvDomainGetOSType domainGetOSType;
|
|
|
|
virDrvDomainGetMaxMemory domainGetMaxMemory;
|
|
|
|
virDrvDomainSetMaxMemory domainSetMaxMemory;
|
2006-04-13 17:18:49 +00:00
|
|
|
virDrvDomainSetMemory domainSetMemory;
|
2006-03-20 17:49:28 +00:00
|
|
|
virDrvDomainGetInfo domainGetInfo;
|
|
|
|
virDrvDomainSave domainSave;
|
|
|
|
virDrvDomainRestore domainRestore;
|
2006-11-22 17:48:29 +00:00
|
|
|
virDrvDomainCoreDump domainCoreDump;
|
2006-08-08 22:22:55 +00:00
|
|
|
virDrvDomainSetVcpus domainSetVcpus;
|
|
|
|
virDrvDomainPinVcpu domainPinVcpu;
|
|
|
|
virDrvDomainGetVcpus domainGetVcpus;
|
2006-08-09 15:21:16 +00:00
|
|
|
virDrvDomainDumpXML domainDumpXML;
|
2006-08-30 14:21:03 +00:00
|
|
|
virDrvListDefinedDomains listDefinedDomains;
|
|
|
|
virDrvNumOfDefinedDomains numOfDefinedDomains;
|
|
|
|
virDrvDomainCreate domainCreate;
|
|
|
|
virDrvDomainDefineXML domainDefineXML;
|
|
|
|
virDrvDomainUndefine domainUndefine;
|
2006-11-16 18:11:28 +00:00
|
|
|
virDrvDomainAttachDevice domainAttachDevice;
|
|
|
|
virDrvDomainDetachDevice domainDetachDevice;
|
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);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* __VIR_DRIVER_H__ */
|