diff options
author | George Dunlap <george.dunlap@eu.citrix.com> | 2012-03-01 18:22:01 +0000 |
---|---|---|
committer | George Dunlap <george.dunlap@eu.citrix.com> | 2012-03-01 18:22:01 +0000 |
commit | ec9d90411b55cf3146b1d32fc3295330b7dc0dc0 (patch) | |
tree | 7f6f632c19aaf551aa52850fe2fd1d43ed2b0b73 /tools | |
parent | daa314fe19387f722561d4429715adac776e2142 (diff) | |
download | xen-ec9d90411b55cf3146b1d32fc3295330b7dc0dc0.tar.gz xen-ec9d90411b55cf3146b1d32fc3295330b7dc0dc0.tar.bz2 xen-ec9d90411b55cf3146b1d32fc3295330b7dc0dc0.zip |
libxl: Implement libxl_sched_credit_param_[gs]et
Implement functions to set credit scheduler global parameters.
Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/libxl/libxl.c | 61 | ||||
-rw-r--r-- | tools/libxl/libxl.h | 4 | ||||
-rw-r--r-- | tools/libxl/libxl_types.idl | 5 |
3 files changed, 70 insertions, 0 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index d5e3106d8f..d7eb2c56c9 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -3105,6 +3105,67 @@ int libxl_sched_credit_domain_set(libxl_ctx *ctx, uint32_t domid, return 0; } +int libxl_sched_credit_params_get(libxl_ctx *ctx, uint32_t poolid, + libxl_sched_credit_params *scinfo) +{ + struct xen_sysctl_credit_schedule sparam; + int rc; + + rc = xc_sched_credit_params_get(ctx->xch, poolid, &sparam); + if (rc != 0) { + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting sched credit param"); + return ERROR_FAIL; + } + + scinfo->tslice_ms = sparam.tslice_ms; + scinfo->ratelimit_us = sparam.ratelimit_us; + + return 0; +} + +int libxl_sched_credit_params_set(libxl_ctx *ctx, uint32_t poolid, + libxl_sched_credit_params *scinfo) +{ + struct xen_sysctl_credit_schedule sparam; + int rc=0; + + if (scinfo->tslice_ms < XEN_SYSCTL_CSCHED_TSLICE_MIN + || scinfo->tslice_ms > XEN_SYSCTL_CSCHED_TSLICE_MAX) { + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, + "Time slice out of range, valid range is from %d to %d", + XEN_SYSCTL_CSCHED_TSLICE_MIN, + XEN_SYSCTL_CSCHED_TSLICE_MAX); + return ERROR_INVAL; + } + if (scinfo->ratelimit_us < XEN_SYSCTL_SCHED_RATELIMIT_MIN + || scinfo->ratelimit_us > XEN_SYSCTL_SCHED_RATELIMIT_MAX) { + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, + "Ratelimit out of range, valid range is from %d to %d", + XEN_SYSCTL_SCHED_RATELIMIT_MIN, + XEN_SYSCTL_SCHED_RATELIMIT_MAX); + return ERROR_INVAL; + } + if (scinfo->ratelimit_us > scinfo->tslice_ms*1000) { + LIBXL__LOG(ctx, LIBXL__LOG_ERROR, + "Ratelimit cannot be greater than timeslice\n"); + return ERROR_INVAL; + } + + sparam.tslice_ms = scinfo->tslice_ms; + sparam.ratelimit_us = scinfo->ratelimit_us; + + rc = xc_sched_credit_params_set(ctx->xch, poolid, &sparam); + if ( rc < 0 ) { + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "setting sched credit param"); + return ERROR_FAIL; + } + + scinfo->tslice_ms = sparam.tslice_ms; + scinfo->ratelimit_us = sparam.ratelimit_us; + + return 0; +} + int libxl_sched_credit2_domain_get(libxl_ctx *ctx, uint32_t domid, libxl_sched_credit2_domain *scinfo) { diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 1f619c0593..6b69030ce2 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -648,6 +648,10 @@ 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); +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); int libxl_sched_credit2_domain_get(libxl_ctx *ctx, uint32_t domid, libxl_sched_credit2_domain *scinfo); int libxl_sched_credit2_domain_set(libxl_ctx *ctx, uint32_t domid, diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 64e5a38fe2..ee2de7219f 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -418,6 +418,11 @@ libxl_sched_credit_domain = Struct("sched_credit_domain", [ ("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), ]) |