if (virCondInit(&priv->job.cond) < 0)
return -1;
- priv->job.current = g_new0(virDomainJobInfo, 1);
+ priv->job.current = virDomainJobDataInit(NULL);
return 0;
}
libxlDomainObjFreeJob(libxlDomainObjPrivate *priv)
{
ignore_value(virCondDestroy(&priv->job.cond));
- VIR_FREE(priv->job.current);
+ virDomainJobDataFree(priv->job.current);
}
/* Give up waiting for mutex after 30 seconds */
priv->job.active = job;
priv->job.owner = virThreadSelfID();
priv->job.started = now;
- priv->job.current->type = VIR_DOMAIN_JOB_UNBOUNDED;
+ priv->job.current->jobType = VIR_DOMAIN_JOB_UNBOUNDED;
return 0;
int
libxlDomainJobUpdateTime(struct libxlDomainJobObj *job)
{
- virDomainJobInfoPtr jobInfo = job->current;
+ virDomainJobData *jobData = job->current;
unsigned long long now;
if (!job->started)
return 0;
}
- jobInfo->timeElapsed = now - job->started;
+ jobData->timeElapsed = now - job->started;
return 0;
}
#include "libxl_conf.h"
#include "virchrdev.h"
#include "virenum.h"
+#include "domain_job.h"
/* Only 1 job is allowed at any time
* A job includes *all* libxl.so api, even those just querying
enum libxlDomainJob active; /* Currently running job */
int owner; /* Thread which set current job */
unsigned long long started; /* When the job started */
- virDomainJobInfoPtr current; /* Statistics for the current job */
+ virDomainJobData *current; /* Statistics for the current job */
};
typedef struct _libxlDomainObjPrivate libxlDomainObjPrivate;
if (libxlDomainJobUpdateTime(&priv->job) < 0)
goto cleanup;
- memcpy(info, priv->job.current, sizeof(virDomainJobInfo));
+ /* setting only these two attributes is enough because libxl never sets
+ * anything else */
+ memset(info, 0, sizeof(*info));
+ info->type = priv->job.current->jobType;
+ info->timeElapsed = priv->job.current->timeElapsed;
ret = 0;
cleanup:
{
libxlDomainObjPrivate *priv;
virDomainObj *vm;
- virDomainJobInfoPtr jobInfo;
+ virDomainJobData *jobData;
int ret = -1;
int maxparams = 0;
goto cleanup;
priv = vm->privateData;
- jobInfo = priv->job.current;
+ jobData = priv->job.current;
if (!priv->job.active) {
*type = VIR_DOMAIN_JOB_NONE;
*params = NULL;
if (virTypedParamsAddULLong(params, nparams, &maxparams,
VIR_DOMAIN_JOB_TIME_ELAPSED,
- jobInfo->timeElapsed) < 0)
+ jobData->timeElapsed) < 0)
goto cleanup;
- *type = jobInfo->type;
+ *type = jobData->jobType;
ret = 0;
cleanup: