diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2012-06-01 12:06:20 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2012-06-01 12:06:20 +0100 |
commit | 6d45f5d903b673d600b7c2f26b19bd29000261c4 (patch) | |
tree | 62bf956549d4065c87da30bcfc57ee6ef8047f75 /tools/libxl/libxl_dom.c | |
parent | 33a1df8e769b9a23126e3a02e6e8078f0b85bbf8 (diff) | |
download | xen-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.c | 34 |
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; } |