mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
xen: Implement virConnectGetSysinfo
virConnectGetSysinfo was never implemented in the legacy xen driver. This patch provides an implementation based on the qemu driver.
This commit is contained in:
parent
fdc10e8d80
commit
3a3b8f6956
@ -81,6 +81,7 @@ xenUnifiedDomainGetVcpus(virDomainPtr dom,
|
|||||||
|
|
||||||
|
|
||||||
static bool is_privileged = false;
|
static bool is_privileged = false;
|
||||||
|
static virSysinfoDefPtr hostsysinfo = NULL;
|
||||||
|
|
||||||
static virDomainDefPtr xenGetDomainDefForID(virConnectPtr conn, int id)
|
static virDomainDefPtr xenGetDomainDefForID(virConnectPtr conn, int id)
|
||||||
{
|
{
|
||||||
@ -254,14 +255,25 @@ xenUnifiedStateInitialize(bool privileged,
|
|||||||
void *opaque ATTRIBUTE_UNUSED)
|
void *opaque ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
/* Don't allow driver to work in non-root libvirtd */
|
/* Don't allow driver to work in non-root libvirtd */
|
||||||
if (privileged)
|
if (privileged) {
|
||||||
is_privileged = true;
|
is_privileged = true;
|
||||||
|
hostsysinfo = virSysinfoRead();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
xenUnifiedStateCleanup(void)
|
||||||
|
{
|
||||||
|
virSysinfoDefFree(hostsysinfo);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static virStateDriver state_driver = {
|
static virStateDriver state_driver = {
|
||||||
.name = "Xen",
|
.name = "Xen",
|
||||||
.stateInitialize = xenUnifiedStateInitialize,
|
.stateInitialize = xenUnifiedStateInitialize,
|
||||||
|
.stateCleanup = xenUnifiedStateCleanup,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*----- Dispatch functions. -----*/
|
/*----- Dispatch functions. -----*/
|
||||||
@ -572,6 +584,28 @@ static char *xenUnifiedConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
|
|||||||
return virGetHostname();
|
return virGetHostname();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
xenUnifiedConnectGetSysinfo(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||||
|
|
||||||
|
virCheckFlags(0, NULL);
|
||||||
|
|
||||||
|
if (!hostsysinfo) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("Host SMBIOS information is not available"));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virSysinfoFormat(&buf, hostsysinfo) < 0)
|
||||||
|
return NULL;
|
||||||
|
if (virBufferError(&buf)) {
|
||||||
|
virReportOOMError();
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return virBufferContentAndReset(&buf);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
xenUnifiedConnectIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
|
xenUnifiedConnectIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
@ -2437,6 +2471,7 @@ static virDriver xenUnifiedDriver = {
|
|||||||
.connectGetType = xenUnifiedConnectGetType, /* 0.0.3 */
|
.connectGetType = xenUnifiedConnectGetType, /* 0.0.3 */
|
||||||
.connectGetVersion = xenUnifiedConnectGetVersion, /* 0.0.3 */
|
.connectGetVersion = xenUnifiedConnectGetVersion, /* 0.0.3 */
|
||||||
.connectGetHostname = xenUnifiedConnectGetHostname, /* 0.7.3 */
|
.connectGetHostname = xenUnifiedConnectGetHostname, /* 0.7.3 */
|
||||||
|
.connectGetSysinfo = xenUnifiedConnectGetSysinfo, /* 1.0.7 */
|
||||||
.connectGetMaxVcpus = xenUnifiedConnectGetMaxVcpus, /* 0.2.1 */
|
.connectGetMaxVcpus = xenUnifiedConnectGetMaxVcpus, /* 0.2.1 */
|
||||||
.nodeGetInfo = xenUnifiedNodeGetInfo, /* 0.1.0 */
|
.nodeGetInfo = xenUnifiedNodeGetInfo, /* 0.1.0 */
|
||||||
.connectGetCapabilities = xenUnifiedConnectGetCapabilities, /* 0.2.1 */
|
.connectGetCapabilities = xenUnifiedConnectGetCapabilities, /* 0.2.1 */
|
||||||
|
Loading…
Reference in New Issue
Block a user