virDomainDef 结构体
/*
* Guest VM main configuration
*
* NB: if adding to this struct, virDomainDefCheckABIStability
* may well need an update
*/
typedef struct _virDomainDef virDomainDef;
typedef virDomainDef *virDomainDefPtr;
struct _virDomainDef {
virDomainVirtType virtType; 虚拟化类型 NONE QEMU KQEMU KVM XEN LXC VMWARE 这些枚举类型
int id; 虚拟机id,如果没有开机就是-1
unsigned char uuid[VIR_UUID_BUFLEN]; uuid
char *name; 虚拟机名字
char *title; title好像暂时没用
char *description; description好像暂时没用
virDomainBlkiotune blkio; 块设置信息,以前相关io限速和权重在这里
virDomainMemtune mem;
virDomainVcpuInfoPtr vcpus; 这个vcpus是竟然还有cpu调度结构体FIFO RR,直接内核态的调度,没试过,以后有机会可以试下这个参数,vcpus里还有个online的字段,判断这个cpu是否可用。
size_t maxvcpus;
int placement_mode;
virBitmapPtr cpumask;
unsigned int iothreads;
size_t niothreadids;
virDomainIOThreadIDDefPtr *iothreadids;
virDomainCputune cputune;
virDomainNumaPtr numa;
virDomainResourceDefPtr resource;
virDomainIdMapDef idmap;
/* These 3 are based on virDomainLifeCycleAction enum flags */
int onReboot;
int onPoweroff;
int onCrash;
int onLockFailure; /* enum virDomainLockFailureAction */
virDomainPowerManagement pm;
virDomainPerfDef perf;
virDomainOSDef os;
char *emulator;
/* These three options are of type virTristateSwitch,
* except VIR_DOMAIN_FEATURE_CAPABILITIES that is of type
* virDomainCapabilitiesPolicy */
int features[VIR_DOMAIN_FEATURE_LAST];
int apic_eoi;
int hyperv_features[VIR_DOMAIN_HYPERV_LAST];
int kvm_features[VIR_DOMAIN_KVM_LAST];
unsigned int hyperv_spinlocks;
virGICVersion gic_version;
char *hyperv_vendor_id;
/* These options are of type virTristateSwitch: ON = keep, OFF = drop */
int caps_features[VIR_DOMAIN_CAPS_FEATURE_LAST];
virDomainClockDef clock;
size_t ngraphics;
virDomainGraphicsDefPtr *graphics;
size_t ndisks;
virDomainDiskDefPtr *disks;
size_t ncontrollers;
virDomainControllerDefPtr *controllers;
size_t nfss;
virDomainFSDefPtr *fss;
size_t nnets;
virDomainNetDefPtr *nets;
size_t ninputs;
virDomainInputDefPtr *inputs;
size_t nsounds;
virDomainSoundDefPtr *sounds;
size_t nvideos;
virDomainVideoDefPtr *videos;
size_t nhostdevs;
virDomainHostdevDefPtr *hostdevs;
size_t nredirdevs;
virDomainRedirdevDefPtr *redirdevs;
size_t nsmartcards;
virDomainSmartcardDefPtr *smartcards;
size_t nserials;
virDomainChrDefPtr *serials;
size_t nparallels;
virDomainChrDefPtr *parallels;
size_t nchannels;
virDomainChrDefPtr *channels;
size_t nconsoles;
virDomainChrDefPtr *consoles;
size_t nleases;
virDomainLeaseDefPtr *leases;
size_t nhubs;
virDomainHubDefPtr *hubs;
size_t nseclabels;
virSecurityLabelDefPtr *seclabels;
size_t nrngs;
virDomainRNGDefPtr *rngs;
size_t nshmems;
virDomainShmemDefPtr *shmems;
size_t nmems;
virDomainMemoryDefPtr *mems;
size_t npanics;
virDomainPanicDefPtr *panics;
/* Only 1 */
virDomainWatchdogDefPtr watchdog;
virDomainMemballoonDefPtr memballoon;
virDomainNVRAMDefPtr nvram;
virDomainTPMDefPtr tpm;
virCPUDefPtr cpu;
virSysinfoDefPtr sysinfo;
virDomainRedirFilterDefPtr redirfilter;
void *namespaceData;
virDomainXMLNamespace ns;
virDomainKeyWrapDefPtr keywrap;
/* Application-specific custom metadata */
xmlNodePtr metadata;
};