# HG changeset patch # User Juergen Gross # Date 1337675490 -7200 # Node ID 19aaa30d7fdce2f1b56cb13399d603d955a61fb8 # Parent 56c50b3f6cc3eb1de8b86024d0e41e65345d9a79 Support getting scheduler defaults in libxc Add scheduler specific interfaces to get scheduling defaults from the hypervisor. Signed-off-by: Juergen Gross diff -r 56c50b3f6cc3 -r 19aaa30d7fdc tools/libxc/xc_csched.c --- a/tools/libxc/xc_csched.c Tue May 22 10:14:32 2012 +0200 +++ b/tools/libxc/xc_csched.c Tue May 22 10:31:30 2012 +0200 @@ -105,3 +105,24 @@ xc_sched_credit_params_get( return rc; } + +int +xc_sched_credit_defaults_get( + xc_interface *xch, + uint32_t cpupool_id, + struct xen_domctl_sched_credit *sdom) +{ + int rc; + DECLARE_SYSCTL; + + sysctl.cmd = XEN_SYSCTL_scheduler_op; + sysctl.u.scheduler_op.cpupool_id = cpupool_id; + sysctl.u.scheduler_op.sched_id = XEN_SCHEDULER_CREDIT; + sysctl.u.scheduler_op.cmd = XEN_SYSCTL_SCHEDOP_getdefaults; + + rc = do_sysctl(xch, &sysctl); + if ( rc == 0 ) + *sdom = sysctl.u.scheduler_op.u.defaults.credit; + + return rc; +} diff -r 56c50b3f6cc3 -r 19aaa30d7fdc tools/libxc/xc_csched2.c --- a/tools/libxc/xc_csched2.c Tue May 22 10:14:32 2012 +0200 +++ b/tools/libxc/xc_csched2.c Tue May 22 10:31:30 2012 +0200 @@ -61,3 +61,24 @@ xc_sched_credit2_domain_get( return err; } + +int +xc_sched_credit2_defaults_get( + xc_interface *xch, + uint32_t cpupool_id, + struct xen_domctl_sched_credit2 *sdom) +{ + int rc; + DECLARE_SYSCTL; + + sysctl.cmd = XEN_SYSCTL_scheduler_op; + sysctl.u.scheduler_op.cpupool_id = cpupool_id; + sysctl.u.scheduler_op.sched_id = XEN_SCHEDULER_CREDIT2; + sysctl.u.scheduler_op.cmd = XEN_SYSCTL_SCHEDOP_getdefaults; + + rc = do_sysctl(xch, &sysctl); + if ( rc == 0 ) + *sdom = sysctl.u.scheduler_op.u.defaults.credit2; + + return rc; +} diff -r 56c50b3f6cc3 -r 19aaa30d7fdc tools/libxc/xc_sedf.c --- a/tools/libxc/xc_sedf.c Tue May 22 10:14:32 2012 +0200 +++ b/tools/libxc/xc_sedf.c Tue May 22 10:31:30 2012 +0200 @@ -76,3 +76,24 @@ int xc_sedf_domain_get( *weight = p->weight; return ret; } + +int +xc_sched_sedf_defaults_get( + xc_interface *xch, + uint32_t cpupool_id, + struct xen_domctl_sched_sedf *sdom) +{ + int rc; + DECLARE_SYSCTL; + + sysctl.cmd = XEN_SYSCTL_scheduler_op; + sysctl.u.scheduler_op.cpupool_id = cpupool_id; + sysctl.u.scheduler_op.sched_id = XEN_SCHEDULER_SEDF; + sysctl.u.scheduler_op.cmd = XEN_SYSCTL_SCHEDOP_getdefaults; + + rc = do_sysctl(xch, &sysctl); + if ( rc == 0 ) + *sdom = sysctl.u.scheduler_op.u.defaults.sedf; + + return rc; +} diff -r 56c50b3f6cc3 -r 19aaa30d7fdc tools/libxc/xenctrl.h --- a/tools/libxc/xenctrl.h Tue May 22 10:14:32 2012 +0200 +++ b/tools/libxc/xenctrl.h Tue May 22 10:31:30 2012 +0200 @@ -664,6 +664,9 @@ int xc_sedf_domain_get(xc_interface *xch uint64_t* period, uint64_t *slice, uint64_t *latency, uint16_t *extratime, uint16_t *weight); +int xc_sched_sedf_defaults_get(xc_interface *xch, + uint32_t cpupool_id, + struct xen_domctl_sched_sedf *sdom); int xc_sched_credit_domain_set(xc_interface *xch, uint32_t domid, @@ -678,12 +681,19 @@ int xc_sched_credit_params_get(xc_interf int xc_sched_credit_params_get(xc_interface *xch, uint32_t cpupool_id, struct xen_sysctl_credit_schedule *schedule); +int xc_sched_credit_defaults_get(xc_interface *xch, + uint32_t cpupool_id, + struct xen_domctl_sched_credit *sdom); + int xc_sched_credit2_domain_set(xc_interface *xch, uint32_t domid, struct xen_domctl_sched_credit2 *sdom); int xc_sched_credit2_domain_get(xc_interface *xch, uint32_t domid, + struct xen_domctl_sched_credit2 *sdom); +int xc_sched_credit2_defaults_get(xc_interface *xch, + uint32_t cpupool_id, struct xen_domctl_sched_credit2 *sdom); int