xenUnifiedDomainGetSchedulerType(virDomainPtr dom, int *nparams)
{
xenUnifiedPrivatePtr priv = dom->conn->privateData;
+ virDomainDefPtr def = NULL;
+ char *ret = NULL;
+
+ if (!(def = xenGetDomainDefForDom(dom)))
+ goto cleanup;
if (dom->id < 0) {
if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Cannot change scheduler parameters"));
- return NULL;
+ goto cleanup;
}
- return xenDaemonGetSchedulerType(dom, nparams);
+ ret = xenDaemonGetSchedulerType(dom->conn, nparams);
} else {
- return xenHypervisorGetSchedulerType(dom, nparams);
+ ret = xenHypervisorGetSchedulerType(dom->conn, nparams);
}
+
+cleanup:
+ virDomainDefFree(def);
+ return ret;
}
static int
unsigned int flags)
{
xenUnifiedPrivatePtr priv = dom->conn->privateData;
+ virDomainDefPtr def = NULL;
+ int ret = -1;
virCheckFlags(0, -1);
+ if (!(def = xenGetDomainDefForDom(dom)))
+ goto cleanup;
+
if (dom->id < 0) {
if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Cannot change scheduler parameters"));
- return -1;
+ goto cleanup;
}
- return xenDaemonGetSchedulerParameters(dom, params, nparams);
+ ret = xenDaemonGetSchedulerParameters(dom->conn, def, params, nparams);
} else {
- return xenHypervisorGetSchedulerParameters(dom, params, nparams);
+ ret = xenHypervisorGetSchedulerParameters(dom->conn, def, params, nparams);
}
+
+cleanup:
+ virDomainDefFree(def);
+ return ret;
}
static int
unsigned int flags)
{
xenUnifiedPrivatePtr priv = dom->conn->privateData;
+ virDomainDefPtr def = NULL;
+ int ret = -1;
virCheckFlags(0, -1);
+ if (!(def = xenGetDomainDefForDom(dom)))
+ goto cleanup;
+
if (dom->id < 0) {
if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Cannot change scheduler parameters"));
- return -1;
+ goto cleanup;
}
- return xenDaemonSetSchedulerParameters(dom, params, nparams);
+ ret = xenDaemonSetSchedulerParameters(dom->conn, def, params, nparams);
} else {
- return xenHypervisorSetSchedulerParameters(dom, params, nparams);
+ ret = xenHypervisorSetSchedulerParameters(dom->conn, def, params, nparams);
}
+
+cleanup:
+ virDomainDefFree(def);
+ return ret;
}
static int
/**
* xenHypervisorGetSchedulerType:
- * @domain: pointer to the Xen Hypervisor block
+ * @conn: the hypervisor connection
* @nparams:give a number of scheduler parameters.
*
* Do a low level hypercall to get scheduler type
* Returns scheduler name or NULL in case of failure
*/
char *
-xenHypervisorGetSchedulerType(virDomainPtr domain, int *nparams)
+xenHypervisorGetSchedulerType(virConnectPtr conn,
+ int *nparams)
{
char *schedulertype = NULL;
- xenUnifiedPrivatePtr priv = domain->conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
/*
* Support only hv_versions.dom_interface >=5
/**
* xenHypervisorGetSchedulerParameters:
- * @domain: pointer to the Xen Hypervisor block
+ * @conn: the hypervisor connection
+ * @def: domain configuration
* @params: pointer to scheduler parameters.
* This memory area should be allocated before calling.
* @nparams: this parameter must be at least as large as
* Returns 0 or -1 in case of failure
*/
int
-xenHypervisorGetSchedulerParameters(virDomainPtr domain,
+xenHypervisorGetSchedulerParameters(virConnectPtr conn,
+ virDomainDefPtr def,
virTypedParameterPtr params,
int *nparams)
{
- xenUnifiedPrivatePtr priv = domain->conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
/*
* Support only hv_versions.dom_interface >=5
case XEN_SCHEDULER_CREDIT:
memset(&op_dom, 0, sizeof(op_dom));
op_dom.cmd = XEN_V2_OP_SCHEDULER;
- op_dom.domain = (domid_t) domain->id;
+ op_dom.domain = (domid_t) def->id;
op_dom.u.getschedinfo.sched_id = XEN_SCHEDULER_CREDIT;
op_dom.u.getschedinfo.cmd = XEN_DOMCTL_SCHEDOP_getinfo;
ret = xenHypervisorDoV2Dom(priv->handle, &op_dom);
/**
* xenHypervisorSetSchedulerParameters:
- * @domain: pointer to the Xen Hypervisor block
+ * @conn: the hypervisor connection
+ * @def: domain configuration
* @nparams:give a number of scheduler setting parameters .
*
* Do a low level hypercall to set scheduler parameters
* Returns 0 or -1 in case of failure
*/
int
-xenHypervisorSetSchedulerParameters(virDomainPtr domain,
+xenHypervisorSetSchedulerParameters(virConnectPtr conn,
+ virDomainDefPtr def,
virTypedParameterPtr params,
int nparams)
{
int i;
unsigned int val;
- xenUnifiedPrivatePtr priv = domain->conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
char buf[256];
if (nparams == 0) {
case XEN_SCHEDULER_CREDIT: {
memset(&op_dom, 0, sizeof(op_dom));
op_dom.cmd = XEN_V2_OP_SCHEDULER;
- op_dom.domain = (domid_t) domain->id;
+ op_dom.domain = (domid_t) def->id;
op_dom.u.getschedinfo.sched_id = XEN_SCHEDULER_CREDIT;
op_dom.u.getschedinfo.cmd = XEN_DOMCTL_SCHEDOP_putinfo;
virDomainDefPtr def)
ATTRIBUTE_NONNULL (1);
-char * xenHypervisorGetSchedulerType (virDomainPtr domain,
+char * xenHypervisorGetSchedulerType (virConnectPtr conn,
int *nparams)
ATTRIBUTE_NONNULL (1);
-int xenHypervisorGetSchedulerParameters(virDomainPtr domain,
- virTypedParameterPtr params,
- int *nparams)
+int xenHypervisorGetSchedulerParameters(virConnectPtr conn,
+ virDomainDefPtr def,
+ virTypedParameterPtr params,
+ int *nparams)
ATTRIBUTE_NONNULL (1);
-int xenHypervisorSetSchedulerParameters(virDomainPtr domain,
- virTypedParameterPtr params,
- int nparams)
+int xenHypervisorSetSchedulerParameters(virConnectPtr conn,
+ virDomainDefPtr def,
+ virTypedParameterPtr params,
+ int nparams)
ATTRIBUTE_NONNULL (1);
int xenHypervisorDomainBlockStats (virDomainPtr domain,
/**
* xenDaemonGetSchedulerType:
- * @domain: pointer to the Domain block
+ * @conn: the hypervisor connection
* @nparams: give a number of scheduler parameters
*
* Get the scheduler type of Xen
* caller or NULL in case of failure
*/
char *
-xenDaemonGetSchedulerType(virDomainPtr domain, int *nparams)
+xenDaemonGetSchedulerType(virConnectPtr conn,
+ int *nparams)
{
- xenUnifiedPrivatePtr priv = domain->conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
struct sexpr *root;
const char *ret = NULL;
char *schedulertype = NULL;
return NULL;
}
- root = sexpr_get(domain->conn, "/xend/node/");
+ root = sexpr_get(conn, "/xend/node/");
if (root == NULL)
return NULL;
/**
* xenDaemonGetSchedulerParameters:
- * @domain: pointer to the Domain block
+ * @conn: the hypervisor connection
+ * @def: domain configuration
* @params: pointer to scheduler parameters
* This memory area must be allocated by the caller
* @nparams: a number of scheduler parameters which should be same as a
* Returns 0 or -1 in case of failure
*/
int
-xenDaemonGetSchedulerParameters(virDomainPtr domain,
+xenDaemonGetSchedulerParameters(virConnectPtr conn,
+ virDomainDefPtr def,
virTypedParameterPtr params,
int *nparams)
{
- xenUnifiedPrivatePtr priv = domain->conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
struct sexpr *root;
char *sched_type = NULL;
int sched_nparam = 0;
}
/* look up the information by domain name */
- root = sexpr_get(domain->conn, "/xend/domain/%s?detail=1", domain->name);
+ root = sexpr_get(conn, "/xend/domain/%s?detail=1", def->name);
if (root == NULL)
return -1;
/* get the scheduler type */
- sched_type = xenDaemonGetSchedulerType(domain, &sched_nparam);
+ sched_type = xenDaemonGetSchedulerType(conn, &sched_nparam);
if (sched_type == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("Failed to get a scheduler name"));
/**
* xenDaemonSetSchedulerParameters:
- * @domain: pointer to the Domain block
+ * @conn: the hypervisor connection
+ * @def: domain configuration
* @params: pointer to scheduler parameters
* @nparams: a number of scheduler setting parameters
*
* Returns 0 or -1 in case of failure
*/
int
-xenDaemonSetSchedulerParameters(virDomainPtr domain,
+xenDaemonSetSchedulerParameters(virConnectPtr conn,
+ virDomainDefPtr def,
virTypedParameterPtr params,
int nparams)
{
- xenUnifiedPrivatePtr priv = domain->conn->privateData;
+ xenUnifiedPrivatePtr priv = conn->privateData;
struct sexpr *root;
char *sched_type = NULL;
int i;
}
/* look up the information by domain name */
- root = sexpr_get(domain->conn, "/xend/domain/%s?detail=1", domain->name);
+ root = sexpr_get(conn, "/xend/domain/%s?detail=1", def->name);
if (root == NULL)
return -1;
/* get the scheduler type */
- sched_type = xenDaemonGetSchedulerType(domain, &sched_nparam);
+ sched_type = xenDaemonGetSchedulerType(conn, &sched_nparam);
if (sched_type == NULL) {
virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("Failed to get a scheduler name"));
snprintf(buf_cap, sizeof(buf_cap), "%s", cap);
}
- ret = xend_op(domain->conn, domain->name, "op",
+ ret = xend_op(conn, def->name, "op",
"domain_sched_credit_set", "weight", buf_weight,
"cap", buf_cap, NULL);
break;
int xenDaemonDomainBlockPeek (virDomainPtr domain, const char *path, unsigned long long offset, size_t size, void *buffer);
-char * xenDaemonGetSchedulerType(virDomainPtr domain, int *nparams);
-int xenDaemonGetSchedulerParameters(virDomainPtr domain,
+char * xenDaemonGetSchedulerType(virConnectPtr conn,
+ int *nparams);
+int xenDaemonGetSchedulerParameters(virConnectPtr conn,
+ virDomainDefPtr def,
virTypedParameterPtr params,
int *nparams);
-int xenDaemonSetSchedulerParameters(virDomainPtr domain,
+int xenDaemonSetSchedulerParameters(virConnectPtr conn,
+ virDomainDefPtr def,
virTypedParameterPtr params,
int nparams);