aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl_dom.c
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2012-06-01 12:06:20 +0100
committerIan Campbell <ian.campbell@citrix.com>2012-06-01 12:06:20 +0100
commit6d45f5d903b673d600b7c2f26b19bd29000261c4 (patch)
tree62bf956549d4065c87da30bcfc57ee6ef8047f75 /tools/libxl/libxl_dom.c
parent33a1df8e769b9a23126e3a02e6e8078f0b85bbf8 (diff)
downloadxen-6d45f5d903b673d600b7c2f26b19bd29000261c4.tar.gz
xen-6d45f5d903b673d600b7c2f26b19bd29000261c4.tar.bz2
xen-6d45f5d903b673d600b7c2f26b19bd29000261c4.zip
libxl: make it possible to explicitly specify default sched params
To do so we define a discriminating value which is never a valid real value for each parameter. While there: - removed libxl_sched_*_domain in favour of libxl_domain_sched_params. - use this new functionality for the various xl commands which set sched parameters, which saves an explicit read-modify-write in xl. - removed call of xc_domain_getinfolist from a few functions which weren't actually using the result (looks like a cut and paste error) - fix xl which was setting period for a variety of different config keys. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: George Dunlap <george.dunlap@eu.citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'tools/libxl/libxl_dom.c')
-rw-r--r--tools/libxl/libxl_dom.c34
1 files changed, 13 insertions, 21 deletions
diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c
index bbf1af833a..7741c9fdbd 100644
--- a/tools/libxl/libxl_dom.c
+++ b/tools/libxl/libxl_dom.c
@@ -45,34 +45,26 @@ libxl_domain_type libxl__domain_type(libxl__gc *gc, uint32_t domid)
int libxl__sched_set_params(libxl__gc *gc, uint32_t domid,
libxl_domain_sched_params *scparams)
{
- libxl_ctx *ctx = libxl__gc_owner(gc);
- libxl_scheduler sched;
- libxl_sched_sedf_domain sedf_info;
- libxl_sched_credit_domain credit_info;
- libxl_sched_credit2_domain credit2_info;
+ libxl_scheduler sched = scparams->sched;
int ret;
- sched = libxl_get_scheduler (ctx);
+ if (sched == LIBXL_SCHEDULER_UNKNOWN)
+ sched = libxl__domain_scheduler(gc, domid);
+
switch (sched) {
case LIBXL_SCHEDULER_SEDF:
- sedf_info.period = scparams->period;
- sedf_info.slice = scparams->slice;
- sedf_info.latency = scparams->latency;
- sedf_info.extratime = scparams->extratime;
- sedf_info.weight = scparams->weight;
- ret=libxl_sched_sedf_domain_set(ctx, domid, &sedf_info);
- break;
+ ret=libxl_sched_sedf_domain_set(CTX, domid, scparams);
+ break;
case LIBXL_SCHEDULER_CREDIT:
- credit_info.weight = scparams->weight;
- credit_info.cap = scparams->cap;
- ret=libxl_sched_credit_domain_set(ctx, domid, &credit_info);
- break;
+ ret=libxl_sched_credit_domain_set(CTX, domid, scparams);
+ break;
case LIBXL_SCHEDULER_CREDIT2:
- credit2_info.weight = scparams->weight;
- ret=libxl_sched_credit2_domain_set(ctx, domid, &credit2_info);
- break;
+ ret=libxl_sched_credit2_domain_set(CTX, domid, scparams);
+ break;
default:
- ret=-1;
+ LOG(ERROR, "Unknown scheduler");
+ ret=ERROR_INVAL;
+ break;
}
return ret;
}