[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2 of 2 v2] xl: check for meaningful combination of sedf config file parameters
As it happens in the implementation of `xl sched-sedf -d ...', some consistency checking is needed for the scheduling parameters when they come from the config file. Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -550,6 +550,31 @@ vcpp_out: return rc; } +static int sched_params_valid(libxl_domain_sched_params *scp) +{ + int has_weight = scp->weight != LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT; + int has_period = scp->period != LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT; + int has_slice = scp->slice != LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT; + libxl_domain_sched_params sci; + + libxl_domain_sched_params_get(ctx, domid, &sci); + + /* The sedf scheduler needs some more consistency checking */ + if (sci.sched == LIBXL_SCHEDULER_SEDF) { + if (has_weight && (has_period || has_slice)) + return 0; + + if (has_weight) { + scp->slice = 0; + scp->period = 0; + } + if (has_period || has_slice) + scp->weight = 0; + } + + return 1; +} + static void parse_config_data(const char *config_source, const char *config_data, int config_len, @@ -644,6 +669,10 @@ static void parse_config_data(const char b_info->sched_params.latency = l; if (!xlu_cfg_get_long (config, "extratime", &l, 0)) b_info->sched_params.extratime = l; + if (!sched_params_valid(&b_info->sched_params)) { + fprintf(stderr, "Invalid scheduling parameters\n"); + exit(1); + } if (!xlu_cfg_get_long (config, "vcpus", &l, 0)) { b_info->max_vcpus = l; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |