xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
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;
>           }

  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).