On 05/01/2014 02:11 PM, Roman Bogorodskiy wrote:
Add a helper function virBhyveGetDomainTotalCpuStats() to
obtain process CPU time using kvm (kernel memory interface)
and use it to set cpuTime field of the virDomainInfo struct in
bhyveDomainGetInfo().
---
configure.ac | 7 +++++++
src/bhyve/bhyve_driver.c | 9 +++++++++
src/bhyve/bhyve_process.c | 40 ++++++++++++++++++++++++++++++++++++++++
src/bhyve/bhyve_process.h | 3 +++
4 files changed, 59 insertions(+)
--- a/src/bhyve/bhyve_driver.c
+++ b/src/bhyve/bhyve_driver.c
@@ -268,6 +268,15 @@ bhyveDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
if (virDomainGetInfoEnsureACL(domain->conn, vm->def) < 0)
goto cleanup;
+ if (virDomainObjIsActive(vm)) {
+ if (virBhyveGetDomainTotalCpuStats(vm, &(info->cpuTime)) < 0) {
+ virReportError(VIR_ERR_OPERATION_FAILED,
+ "%s", _("Cannot read cputime for
domain"));
This will overwrite the error set by virBhyveGetDomainTotalCpuStats.
+ goto cleanup;
+ }
+ } else
+ info->cpuTime = 0;
This 'else' block should have braces, since the 'if' block has them.
+
info->state = virDomainObjGetState(vm, NULL);
info->maxMem = vm->def->mem.max_balloon;
info->nrVirtCpu = vm->def->vcpus;
ACK with that fixed.
Jan