2005-12-05 11:16:07 +00:00
|
|
|
/*
|
|
|
|
* libvir.h: interface for the libvir library to handle Xen domains
|
|
|
|
* from a process running in domain 0
|
|
|
|
*
|
|
|
|
* Copyright (C) 2005 Red Hat, Inc.
|
|
|
|
*
|
|
|
|
* See COPYING.LIB for the License of this software
|
|
|
|
*
|
|
|
|
* Daniel Veillard <veillard@redhat.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __VIR_VIRLIB_H__
|
|
|
|
#define __VIR_VIRLIB_H__
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* virConnect:
|
|
|
|
*
|
|
|
|
* a virConnect is a private structure representing a connection to
|
|
|
|
* the Xen Hypervisor.
|
|
|
|
*/
|
|
|
|
typedef struct _virConnect virConnect;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* virConnectPtr:
|
|
|
|
*
|
|
|
|
* a virConnectPtr is pointer to a virConnect private structure, this is the
|
|
|
|
* type used to reference a connection to the Xen Hypervisor in the API.
|
|
|
|
*/
|
|
|
|
typedef virConnect *virConnectPtr;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* virDomain:
|
|
|
|
*
|
|
|
|
* a virDomain is a private structure representing a Xen domain.
|
|
|
|
*/
|
|
|
|
typedef struct _virDomain virDomain;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* virDomainPtr:
|
|
|
|
*
|
|
|
|
* a virDomainPtr is pointer to a virDomain private structure, this is the
|
|
|
|
* type used to reference a Xen domain in the API.
|
|
|
|
*/
|
|
|
|
typedef virDomain *virDomainPtr;
|
|
|
|
|
2005-12-05 18:14:37 +00:00
|
|
|
/**
|
|
|
|
* virDomainState:
|
|
|
|
*
|
|
|
|
* A domain may be in different states at a given point in time
|
|
|
|
*/
|
|
|
|
typedef enum {
|
|
|
|
VIR_DOMAIN_NOSTATE = 0, /* no state */
|
|
|
|
VIR_DOMAIN_RUNNING = 1, /* the domain is running */
|
|
|
|
VIR_DOMAIN_BLOCKED = 2, /* the domain is blocked on resource */
|
|
|
|
VIR_DOMAIN_PAUSED = 3, /* the domain is paused by user */
|
|
|
|
VIR_DOMAIN_SHUTDOWN= 4, /* the domain is being shut down */
|
|
|
|
VIR_DOMAIN_SHUTOFF = 5 /* the domain is shut off */
|
|
|
|
} virDomainState;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* virDomainInfoPtr:
|
|
|
|
*
|
|
|
|
* a virDomainInfo is a structure filled by virDomainGetInfo()
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef struct _virDomainInfo virDomainInfo;
|
|
|
|
|
|
|
|
struct _virDomainInfo {
|
2005-12-06 16:12:49 +00:00
|
|
|
unsigned char state; /* the running state, one of virDomainFlags */
|
2005-12-06 16:50:31 +00:00
|
|
|
unsigned long maxMem; /* the maximum memory in KBytes allowed */
|
|
|
|
unsigned long memory; /* the memory in KBytes used by the domain */
|
2005-12-06 16:12:49 +00:00
|
|
|
unsigned short nrVirtCpu; /* the number of virtual CPUs for the domain */
|
2005-12-05 18:14:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Informations below are only available to clients with a connection
|
|
|
|
* with full access to the hypervisor
|
|
|
|
*/
|
2005-12-06 13:47:40 +00:00
|
|
|
unsigned long long cpuTime; /* the CPU time used in nanoseconds */
|
2005-12-05 18:14:37 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* TODO:
|
|
|
|
* - check what can be extracted publicly from xenstore
|
|
|
|
* and what's private limited to the hypervisor call.
|
|
|
|
* - add padding to this structure for ABI long term protection
|
|
|
|
*/
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* virDomainInfoPtr:
|
|
|
|
*
|
|
|
|
* a virDomainInfoPtr is a pointer to a virDomainInfo structure.
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef virDomainInfo *virDomainInfoPtr;
|
|
|
|
|
2005-12-05 11:16:07 +00:00
|
|
|
/**
|
|
|
|
* virDomainFlags:
|
|
|
|
*
|
|
|
|
* Flags OR'ed together to provide specific behaviour when creating a
|
|
|
|
* Domain.
|
|
|
|
*/
|
|
|
|
typedef enum {
|
|
|
|
VIR_DOMAIN_NONE = 0
|
|
|
|
} virDomainFlags;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Connection and disconnections to the Hypervisor
|
|
|
|
*/
|
|
|
|
virConnectPtr virConnectOpen (const char *name);
|
|
|
|
virConnectPtr virConnectOpenReadOnly (const char *name);
|
|
|
|
int virConnectClose (virConnectPtr conn);
|
|
|
|
unsigned long virConnectGetVersion (virConnectPtr conn);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Gather list of running domains
|
|
|
|
*/
|
|
|
|
int virConnectListDomains (virConnectPtr conn,
|
|
|
|
int *ids,
|
|
|
|
int maxids);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Domain creation and destruction
|
|
|
|
*/
|
|
|
|
virDomainPtr virDomainCreateLinux (virConnectPtr conn,
|
|
|
|
const char *kernel_path,
|
|
|
|
const char *initrd_path,
|
|
|
|
const char *cmdline,
|
|
|
|
unsigned long memory,
|
|
|
|
unsigned int flags);
|
|
|
|
virDomainPtr virDomainLookupByName (virConnectPtr conn,
|
|
|
|
const char *name);
|
|
|
|
virDomainPtr virDomainLookupByID (virConnectPtr conn,
|
|
|
|
int id);
|
|
|
|
int virDomainDestroy (virDomainPtr domain);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Domain suspend/resume
|
|
|
|
*/
|
|
|
|
int virDomainSuspend (virDomainPtr domain);
|
|
|
|
int virDomainResume (virDomainPtr domain);
|
|
|
|
|
2005-12-05 18:14:37 +00:00
|
|
|
/*
|
|
|
|
* Domain runtime informations
|
|
|
|
*/
|
|
|
|
int virDomainGetInfo (virDomainPtr domain,
|
|
|
|
virDomainInfoPtr info);
|
|
|
|
|
2005-12-05 11:16:07 +00:00
|
|
|
/*
|
|
|
|
* Dynamic control of domains
|
|
|
|
*/
|
|
|
|
const char * virDomainGetName (virDomainPtr domain);
|
|
|
|
unsigned int virDomainGetID (virDomainPtr domain);
|
|
|
|
unsigned long virDomainGetMaxMemory (virDomainPtr domain);
|
|
|
|
int virDomainSetMaxMemory (virDomainPtr domain,
|
|
|
|
unsigned long memory);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* __VIR_VIRLIB_H__ */
|