From: George Dunlap <george.dunlap@eu.citrix.com>
To: Ian Campbell <ian.campbell@citrix.com>
Cc: Juergen Gross <juergen.gross@ts.fujitsu.com>,
Ian Jackson <Ian.Jackson@eu.citrix.com>,
Dario Faggioli <dario.faggioli@citrix.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
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 [thread overview]
Message-ID: <4FC7766F.1020709@eu.citrix.com> (raw)
In-Reply-To: <274de8e1e0d116070d34.1338299821@cosworth.uk.xensource.com>
On 29/05/12 14:57, Ian Campbell wrote:
> # HG changeset patch
> # User Ian Campbell<ian.campbell@citrix.com>
> # 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<ian.campbell@citrix.com>
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
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;
> }
next prev parent reply other threads:[~2012-05-31 13:47 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-29 13:56 [PATCH 0 of 5 V2] libxl: make it possible to explicitly specify default sched params Ian Campbell
2012-05-29 13:56 ` [PATCH 1 of 5 V2] libxl: add internal function to get a domain's scheduler Ian Campbell
2012-05-31 13:19 ` George Dunlap
2012-05-31 15:11 ` Ian Jackson
2012-06-01 9:51 ` Ian Campbell
2012-05-29 13:57 ` [PATCH 2 of 5 V2] libxl: rename libxl_sched_params to libxl_domain_sched_params Ian Campbell
2012-05-31 13:21 ` George Dunlap
2012-05-31 15:12 ` Ian Jackson
2012-05-29 13:57 ` [PATCH 3 of 5 V2] libxl: make it possible to explicitly specify default sched params Ian Campbell
2012-05-30 7:26 ` Dario Faggioli
2012-05-30 7:35 ` Ian Campbell
2012-05-30 8:00 ` Dario Faggioli
2012-06-01 10:14 ` Ian Campbell
2012-06-01 10:26 ` Dario Faggioli
2012-05-31 13:47 ` George Dunlap [this message]
2012-05-31 15:13 ` Ian Jackson
2012-05-29 13:57 ` [PATCH 4 of 5 V2] libxl: move libxl__sched_set_params into libxl.c Ian Campbell
2012-05-31 13:48 ` George Dunlap
2012-05-31 15:14 ` Ian Jackson
2012-05-29 13:57 ` [PATCH 5 of 5 V2] libxl: expose a single get/setter for domain scheduler parameters Ian Campbell
2012-05-31 13:51 ` George Dunlap
2012-05-31 15:15 ` Ian Jackson
2012-06-01 11:07 ` [PATCH 0 of 5 V2] libxl: make it possible to explicitly specify default sched params Ian Campbell
2012-06-01 18:08 ` Ian Jackson
2012-06-01 18:47 ` Ian Campbell
2012-06-01 19:14 ` Ian Campbell
2012-06-02 7:40 ` Ian Campbell
2012-06-02 6:37 ` Dario Faggioli
2012-06-02 7:41 ` Ian Campbell
2012-06-06 10:38 ` Ian Jackson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FC7766F.1020709@eu.citrix.com \
--to=george.dunlap@eu.citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=dario.faggioli@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=juergen.gross@ts.fujitsu.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).