From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH 3 of 5 V2] libxl: make it possible to explicitly specify default sched params Date: Thu, 31 May 2012 14:47:27 +0100 Message-ID: <4FC7766F.1020709@eu.citrix.com> References: <274de8e1e0d116070d34.1338299821@cosworth.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <274de8e1e0d116070d34.1338299821@cosworth.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell Cc: Juergen Gross , Ian Jackson , Dario Faggioli , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org On 29/05/12 14:57, Ian Campbell wrote: > # HG changeset patch > # User Ian Campbell > # Date 1338299729 -3600 > # Node ID 274de8e1e0d116070d34731d93b53ce44530e5a0 > # Parent 73d8274c0b6859b4528af75a7405e546d659f130 > 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 Acked-by: George Dunlap If you do end up re-spinning this series for some reason, you might just mention in this description that you're about to change the public interface and get rid of the per-scheduler set and get functions in two changesets. > > diff -r 73d8274c0b68 -r 274de8e1e0d1 tools/libxl/libxl.c > --- a/tools/libxl/libxl.c Tue May 29 14:55:09 2012 +0100 > +++ b/tools/libxl/libxl.c Tue May 29 14:55:29 2012 +0100 > @@ -3197,19 +3197,19 @@ libxl_scheduler libxl_get_scheduler(libx > } > > int libxl_sched_credit_domain_get(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_credit_domain *scinfo) > + libxl_domain_sched_params *scinfo) > { > struct xen_domctl_sched_credit sdom; > int rc; > > - libxl_sched_credit_domain_init(scinfo); > - > rc = xc_sched_credit_domain_get(ctx->xch, domid,&sdom); > if (rc != 0) { > LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting domain sched credit"); > return ERROR_FAIL; > } > > + libxl_domain_sched_params_init(scinfo); > + scinfo->sched = LIBXL_SCHEDULER_CREDIT; > scinfo->weight = sdom.weight; > scinfo->cap = sdom.cap; > > @@ -3217,7 +3217,7 @@ int libxl_sched_credit_domain_get(libxl_ > } > > int libxl_sched_credit_domain_set(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_credit_domain *scinfo) > + libxl_domain_sched_params *scinfo) > { > struct xen_domctl_sched_credit sdom; > xc_domaininfo_t domaininfo; > @@ -3231,22 +3231,33 @@ int libxl_sched_credit_domain_set(libxl_ > if (rc != 1 || domaininfo.domain != domid) > return ERROR_INVAL; > > - > - if (scinfo->weight< 1 || scinfo->weight> 65535) { > - LIBXL__LOG(ctx, LIBXL__LOG_ERROR, > - "Cpu weight out of range, valid values are within range from 1 to 65535"); > - return ERROR_INVAL; > + rc = xc_sched_credit_domain_get(ctx->xch, domid,&sdom); > + if (rc != 0) { > + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting domain sched credit"); > + return ERROR_FAIL; > } > > - if (scinfo->cap< 0 || scinfo->cap> (domaininfo.max_vcpu_id + 1) * 100) { > - LIBXL__LOG(ctx, LIBXL__LOG_ERROR, > - "Cpu cap out of range, valid range is from 0 to %d for specified number of vcpus", > - ((domaininfo.max_vcpu_id + 1) * 100)); > - return ERROR_INVAL; > + if (scinfo->weight != LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT) { > + if (scinfo->weight< 1 || scinfo->weight> 65535) { > + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, > + "Cpu weight out of range, " > + "valid values are within range from 1 to 65535"); > + return ERROR_INVAL; > + } > + sdom.weight = scinfo->weight; > } > > - sdom.weight = scinfo->weight; > - sdom.cap = scinfo->cap; > + if (scinfo->cap != LIBXL_DOMAIN_SCHED_PARAM_CAP_DEFAULT) { > + if (scinfo->cap< 0 > + || scinfo->cap> (domaininfo.max_vcpu_id + 1) * 100) { > + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, > + "Cpu cap out of range, " > + "valid range is from 0 to %d for specified number of vcpus", > + ((domaininfo.max_vcpu_id + 1) * 100)); > + return ERROR_INVAL; > + } > + sdom.cap = scinfo->cap; > + } > > rc = xc_sched_credit_domain_set(ctx->xch, domid,&sdom); > if ( rc< 0 ) { > @@ -3319,13 +3330,11 @@ int libxl_sched_credit_params_set(libxl_ > } > > int libxl_sched_credit2_domain_get(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_credit2_domain *scinfo) > + libxl_domain_sched_params *scinfo) > { > struct xen_domctl_sched_credit2 sdom; > int rc; > > - libxl_sched_credit2_domain_init(scinfo); > - > rc = xc_sched_credit2_domain_get(ctx->xch, domid,&sdom); > if (rc != 0) { > LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, > @@ -3333,36 +3342,37 @@ int libxl_sched_credit2_domain_get(libxl > return ERROR_FAIL; > } > > + libxl_domain_sched_params_init(scinfo); > + scinfo->sched = LIBXL_SCHEDULER_CREDIT2; > scinfo->weight = sdom.weight; > > return 0; > } > > int libxl_sched_credit2_domain_set(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_credit2_domain *scinfo) > + libxl_domain_sched_params *scinfo) > { > struct xen_domctl_sched_credit2 sdom; > - xc_domaininfo_t domaininfo; > int rc; > > - rc = xc_domain_getinfolist(ctx->xch, domid, 1,&domaininfo); > - if (rc< 0) { > - LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting domain info list"); > + rc = xc_sched_credit2_domain_get(ctx->xch, domid,&sdom); > + if (rc != 0) { > + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, > + "getting domain sched credit2"); > return ERROR_FAIL; > } > - if (rc != 1 || domaininfo.domain != domid) > - return ERROR_INVAL; > - > - > - if (scinfo->weight< 1 || scinfo->weight> 65535) { > - LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc, > - "Cpu weight out of range, valid values are within range from " > - "1 to 65535"); > - return ERROR_INVAL; > + > + if (scinfo->weight != LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT) { > + if (scinfo->weight< 1 || scinfo->weight> 65535) { > + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, > + "Cpu weight out of range, " > + "valid values are within range from " > + "1 to 65535"); > + return ERROR_INVAL; > + } > + sdom.weight = scinfo->weight; > } > > - sdom.weight = scinfo->weight; > - > rc = xc_sched_credit2_domain_set(ctx->xch, domid,&sdom); > if ( rc< 0 ) { > LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, > @@ -3374,7 +3384,7 @@ int libxl_sched_credit2_domain_set(libxl > } > > int libxl_sched_sedf_domain_get(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_sedf_domain *scinfo) > + libxl_domain_sched_params *scinfo) > { > uint64_t period; > uint64_t slice; > @@ -3383,8 +3393,6 @@ int libxl_sched_sedf_domain_get(libxl_ct > uint16_t weight; > int rc; > > - libxl_sched_sedf_domain_init(scinfo); > - > rc = xc_sedf_domain_get(ctx->xch, domid,&period,&slice,&latency, > &extratime,&weight); > if (rc != 0) { > @@ -3392,6 +3400,8 @@ int libxl_sched_sedf_domain_get(libxl_ct > return ERROR_FAIL; > } > > + libxl_domain_sched_params_init(scinfo); > + scinfo->sched = LIBXL_SCHEDULER_SEDF; > scinfo->period = period / 1000000; > scinfo->slice = slice / 1000000; > scinfo->latency = latency / 1000000; > @@ -3402,24 +3412,37 @@ int libxl_sched_sedf_domain_get(libxl_ct > } > > int libxl_sched_sedf_domain_set(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_sedf_domain *scinfo) > + libxl_domain_sched_params *scinfo) > { > - xc_domaininfo_t domaininfo; > - int rc; > - > - rc = xc_domain_getinfolist(ctx->xch, domid, 1,&domaininfo); > - if (rc< 0) { > - LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting domain info list"); > + uint64_t period; > + uint64_t slice; > + uint64_t latency; > + uint16_t extratime; > + uint16_t weight; > + > + int ret; > + > + ret = xc_sedf_domain_get(ctx->xch, domid,&period,&slice,&latency, > +&extratime,&weight); > + if (ret != 0) { > + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting domain sched sedf"); > return ERROR_FAIL; > } > - if (rc != 1 || domaininfo.domain != domid) > - return ERROR_INVAL; > - > - > - rc = xc_sedf_domain_set(ctx->xch, domid, scinfo->period * 1000000, > - scinfo->slice * 1000000, scinfo->latency * 1000000, > - scinfo->extratime, scinfo->weight); > - if ( rc< 0 ) { > + > + if (scinfo->period != LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT) > + period = scinfo->period * 1000000; > + if (scinfo->slice != LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT) > + slice = scinfo->slice * 1000000; > + if (scinfo->latency != LIBXL_DOMAIN_SCHED_PARAM_LATENCY_DEFAULT) > + latency = scinfo->latency * 1000000; > + if (scinfo->extratime != LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT) > + extratime = scinfo->extratime; > + if (scinfo->weight != LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT) > + weight = scinfo->weight; > + > + ret = xc_sedf_domain_set(ctx->xch, domid, period, slice, latency, > + extratime, weight); > + if ( ret< 0 ) { > LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "setting domain sched sedf"); > return ERROR_FAIL; > } > diff -r 73d8274c0b68 -r 274de8e1e0d1 tools/libxl/libxl.h > --- a/tools/libxl/libxl.h Tue May 29 14:55:09 2012 +0100 > +++ b/tools/libxl/libxl.h Tue May 29 14:55:29 2012 +0100 > @@ -775,23 +775,33 @@ int libxl_set_vcpuonline(libxl_ctx *ctx, > > libxl_scheduler libxl_get_scheduler(libxl_ctx *ctx); > > - > -int libxl_sched_credit_domain_get(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_credit_domain *scinfo); > -int libxl_sched_credit_domain_set(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_credit_domain *scinfo); > +/* Per-scheduler parameters */ > int libxl_sched_credit_params_get(libxl_ctx *ctx, uint32_t poolid, > libxl_sched_credit_params *scinfo); > int libxl_sched_credit_params_set(libxl_ctx *ctx, uint32_t poolid, > libxl_sched_credit_params *scinfo); > + > +/* Scheduler Per-domain parameters */ > + > +#define LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT -1 > +#define LIBXL_DOMAIN_SCHED_PARAM_CAP_DEFAULT -1 > +#define LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT -1 > +#define LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT -1 > +#define LIBXL_DOMAIN_SCHED_PARAM_LATENCY_DEFAULT -1 > +#define LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT -1 > + > +int libxl_sched_credit_domain_get(libxl_ctx *ctx, uint32_t domid, > + libxl_domain_sched_params *scinfo); > +int libxl_sched_credit_domain_set(libxl_ctx *ctx, uint32_t domid, > + libxl_domain_sched_params *scinfo); > int libxl_sched_credit2_domain_get(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_credit2_domain *scinfo); > + libxl_domain_sched_params *scinfo); > int libxl_sched_credit2_domain_set(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_credit2_domain *scinfo); > + libxl_domain_sched_params *scinfo); > int libxl_sched_sedf_domain_get(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_sedf_domain *scinfo); > + libxl_domain_sched_params *scinfo); > int libxl_sched_sedf_domain_set(libxl_ctx *ctx, uint32_t domid, > - libxl_sched_sedf_domain *scinfo); > + libxl_domain_sched_params *scinfo); > int libxl_send_trigger(libxl_ctx *ctx, uint32_t domid, > libxl_trigger trigger, uint32_t vcpuid); > int libxl_send_sysrq(libxl_ctx *ctx, uint32_t domid, char sysrq); > diff -r 73d8274c0b68 -r 274de8e1e0d1 tools/libxl/libxl_dom.c > --- a/tools/libxl/libxl_dom.c Tue May 29 14:55:09 2012 +0100 > +++ b/tools/libxl/libxl_dom.c Tue May 29 14:55:29 2012 +0100 > @@ -45,34 +45,26 @@ libxl_domain_type libxl__domain_type(lib > 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; > } > diff -r 73d8274c0b68 -r 274de8e1e0d1 tools/libxl/libxl_types.idl > --- a/tools/libxl/libxl_types.idl Tue May 29 14:55:09 2012 +0100 > +++ b/tools/libxl/libxl_types.idl Tue May 29 14:55:29 2012 +0100 > @@ -225,12 +225,13 @@ libxl_domain_create_info = Struct("domai > MemKB = UInt(64, init_val = "LIBXL_MEMKB_DEFAULT") > > libxl_domain_sched_params = Struct("domain_sched_params",[ > - ("weight", integer), > - ("cap", integer), > - ("period", integer), > - ("slice", integer), > - ("latency", integer), > - ("extratime", integer), > + ("sched", libxl_scheduler), > + ("weight", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT'}), > + ("cap", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_CAP_DEFAULT'}), > + ("period", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT'}), > + ("slice", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT'}), > + ("latency", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_LATENCY_DEFAULT'}), > + ("extratime", integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT'}), > ], dir=DIR_IN) > > libxl_domain_build_info = Struct("domain_build_info",[ > @@ -425,28 +426,11 @@ libxl_cputopology = Struct("cputopology" > ("node", uint32), > ], dir=DIR_OUT) > > -libxl_sched_credit_domain = Struct("sched_credit_domain", [ > - ("weight", integer), > - ("cap", integer), > - ]) > - > libxl_sched_credit_params = Struct("sched_credit_params", [ > ("tslice_ms", integer), > ("ratelimit_us", integer), > ], dispose_fn=None) > > -libxl_sched_credit2_domain = Struct("sched_credit2_domain", [ > - ("weight", integer), > - ]) > - > -libxl_sched_sedf_domain = Struct("sched_sedf_domain", [ > - ("period", integer), > - ("slice", integer), > - ("latency", integer), > - ("extratime", integer), > - ("weight", integer), > - ]) > - > libxl_domain_remus_info = Struct("domain_remus_info",[ > ("interval", integer), > ("blackhole", bool), > diff -r 73d8274c0b68 -r 274de8e1e0d1 tools/libxl/xl_cmdimpl.c > --- a/tools/libxl/xl_cmdimpl.c Tue May 29 14:55:09 2012 +0100 > +++ b/tools/libxl/xl_cmdimpl.c Tue May 29 14:55:29 2012 +0100 > @@ -628,7 +628,8 @@ static void parse_config_data(const char > > libxl_domain_build_info_init_type(b_info, c_info->type); > > - /* the following is the actual config parsing with overriding values in the structures */ > + /* the following is the actual config parsing with overriding > + * values in the structures */ > if (!xlu_cfg_get_long (config, "cpu_weight",&l, 0)) > b_info->sched_params.weight = l; > if (!xlu_cfg_get_long (config, "cap",&l, 0)) > @@ -636,11 +637,11 @@ static void parse_config_data(const char > if (!xlu_cfg_get_long (config, "period",&l, 0)) > b_info->sched_params.period = l; > if (!xlu_cfg_get_long (config, "slice",&l, 0)) > - b_info->sched_params.period = l; > + b_info->sched_params.slice = l; > if (!xlu_cfg_get_long (config, "latency",&l, 0)) > - b_info->sched_params.period = l; > + b_info->sched_params.latency = l; > if (!xlu_cfg_get_long (config, "extratime",&l, 0)) > - b_info->sched_params.period = l; > + b_info->sched_params.extratime = l; > > if (!xlu_cfg_get_long (config, "vcpus",&l, 0)) { > b_info->max_vcpus = l; > @@ -4360,7 +4361,7 @@ int main_sharing(int argc, char **argv) > return 0; > } > > -static int sched_credit_domain_get(int domid, libxl_sched_credit_domain *scinfo) > +static int sched_credit_domain_get(int domid, libxl_domain_sched_params *scinfo) > { > int rc; > > @@ -4371,7 +4372,7 @@ static int sched_credit_domain_get(int d > return rc; > } > > -static int sched_credit_domain_set(int domid, libxl_sched_credit_domain *scinfo) > +static int sched_credit_domain_set(int domid, libxl_domain_sched_params *scinfo) > { > int rc; > > @@ -4407,7 +4408,7 @@ static int sched_credit_params_get(int p > static int sched_credit_domain_output(int domid) > { > char *domname; > - libxl_sched_credit_domain scinfo; > + libxl_domain_sched_params scinfo; > int rc; > > if (domid< 0) { > @@ -4424,7 +4425,7 @@ static int sched_credit_domain_output(in > scinfo.weight, > scinfo.cap); > free(domname); > - libxl_sched_credit_domain_dispose(&scinfo); > + libxl_domain_sched_params_dispose(&scinfo); > return 0; > } > > @@ -4450,7 +4451,7 @@ static int sched_credit_pool_output(uint > } > > static int sched_credit2_domain_get( > - int domid, libxl_sched_credit2_domain *scinfo) > + int domid, libxl_domain_sched_params *scinfo) > { > int rc; > > @@ -4462,7 +4463,7 @@ static int sched_credit2_domain_get( > } > > static int sched_credit2_domain_set( > - int domid, libxl_sched_credit2_domain *scinfo) > + int domid, libxl_domain_sched_params *scinfo) > { > int rc; > > @@ -4477,7 +4478,7 @@ static int sched_credit2_domain_output( > int domid) > { > char *domname; > - libxl_sched_credit2_domain scinfo; > + libxl_domain_sched_params scinfo; > int rc; > > if (domid< 0) { > @@ -4493,12 +4494,12 @@ static int sched_credit2_domain_output( > domid, > scinfo.weight); > free(domname); > - libxl_sched_credit2_domain_dispose(&scinfo); > + libxl_domain_sched_params_dispose(&scinfo); > return 0; > } > > static int sched_sedf_domain_get( > - int domid, libxl_sched_sedf_domain *scinfo) > + int domid, libxl_domain_sched_params *scinfo) > { > int rc; > > @@ -4510,7 +4511,7 @@ static int sched_sedf_domain_get( > } > > static int sched_sedf_domain_set( > - int domid, libxl_sched_sedf_domain *scinfo) > + int domid, libxl_domain_sched_params *scinfo) > { > int rc; > > @@ -4524,7 +4525,7 @@ static int sched_sedf_domain_output( > int domid) > { > char *domname; > - libxl_sched_sedf_domain scinfo; > + libxl_domain_sched_params scinfo; > int rc; > > if (domid< 0) { > @@ -4545,7 +4546,7 @@ static int sched_sedf_domain_output( > scinfo.extratime, > scinfo.weight); > free(domname); > - libxl_sched_sedf_domain_dispose(&scinfo); > + libxl_domain_sched_params_dispose(&scinfo); > return 0; > } > > @@ -4622,7 +4623,6 @@ static int sched_domain_output(libxl_sch > */ > int main_sched_credit(int argc, char **argv) > { > - libxl_sched_credit_domain scinfo; > const char *dom = NULL; > const char *cpupool = NULL; > int weight = 256, cap = 0, opt_w = 0, opt_c = 0; > @@ -4697,7 +4697,7 @@ int main_sched_credit(int argc, char **a > } > > if (opt_s) { > - libxl_sched_credit_params scparam; > + libxl_sched_credit_params scparam; > uint32_t poolid = 0; > > if (cpupool) { > @@ -4733,20 +4733,19 @@ int main_sched_credit(int argc, char **a > } else { > find_domain(dom); > > - rc = sched_credit_domain_get(domid,&scinfo); > - if (rc) > - return -rc; > - > if (!opt_w&& !opt_c) { /* output credit scheduler info */ > sched_credit_domain_output(-1); > return -sched_credit_domain_output(domid); > } else { /* set credit scheduler paramaters */ > + libxl_domain_sched_params scinfo; > + libxl_domain_sched_params_init(&scinfo); > + scinfo.sched = LIBXL_SCHEDULER_CREDIT; > if (opt_w) > scinfo.weight = weight; > if (opt_c) > scinfo.cap = cap; > rc = sched_credit_domain_set(domid,&scinfo); > - libxl_sched_credit_domain_dispose(&scinfo); > + libxl_domain_sched_params_dispose(&scinfo); > if (rc) > return -rc; > } > @@ -4757,7 +4756,6 @@ int main_sched_credit(int argc, char **a > > int main_sched_credit2(int argc, char **argv) > { > - libxl_sched_credit2_domain scinfo; > const char *dom = NULL; > const char *cpupool = NULL; > int weight = 256, opt_w = 0; > @@ -4812,18 +4810,17 @@ int main_sched_credit2(int argc, char ** > } else { > find_domain(dom); > > - rc = sched_credit2_domain_get(domid,&scinfo); > - if (rc) > - return -rc; > - > if (!opt_w) { /* output credit2 scheduler info */ > sched_credit2_domain_output(-1); > return -sched_credit2_domain_output(domid); > } else { /* set credit2 scheduler paramaters */ > + libxl_domain_sched_params scinfo; > + libxl_domain_sched_params_init(&scinfo); > + scinfo.sched = LIBXL_SCHEDULER_CREDIT2; > if (opt_w) > scinfo.weight = weight; > rc = sched_credit2_domain_set(domid,&scinfo); > - libxl_sched_credit2_domain_dispose(&scinfo); > + libxl_domain_sched_params_dispose(&scinfo); > if (rc) > return -rc; > } > @@ -4834,7 +4831,6 @@ int main_sched_credit2(int argc, char ** > > int main_sched_sedf(int argc, char **argv) > { > - libxl_sched_sedf_domain scinfo; > const char *dom = NULL; > const char *cpupool = NULL; > int period = 0, opt_p = 0; > @@ -4917,15 +4913,15 @@ int main_sched_sedf(int argc, char **arg > } else { > find_domain(dom); > > - rc = sched_sedf_domain_get(domid,&scinfo); > - if (rc) > - return -rc; > - > if (!opt_p&& !opt_s&& !opt_l&& !opt_e&& !opt_w) { > /* output sedf scheduler info */ > sched_sedf_domain_output(-1); > return -sched_sedf_domain_output(domid); > } else { /* set sedf scheduler paramaters */ > + libxl_domain_sched_params scinfo; > + libxl_domain_sched_params_init(&scinfo); > + scinfo.sched = LIBXL_SCHEDULER_SEDF; > + > if (opt_p) { > scinfo.period = period; > scinfo.weight = 0; > @@ -4944,7 +4940,7 @@ int main_sched_sedf(int argc, char **arg > scinfo.slice = 0; > } > rc = sched_sedf_domain_set(domid,&scinfo); > - libxl_sched_sedf_domain_dispose(&scinfo); > + libxl_domain_sched_params_dispose(&scinfo); > if (rc) > return -rc; > }