[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC v1 4/4] libxc for rt scheduler
Add xc_sched_rt_* functions to interact with Xen to set/get domain's parameters for rt scheduler. Signed-off-by: Sisu Xi <xisisu@xxxxxxxxx> Signed-off-by: Meng Xu <mengxu@xxxxxxxxxxxxx> --- tools/libxc/Makefile | 1 + tools/libxc/xc_rt.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ tools/libxc/xenctrl.h | 7 +++++ 3 files changed, 89 insertions(+) create mode 100644 tools/libxc/xc_rt.c diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile index f77677c..7ad6dea 100644 --- a/tools/libxc/Makefile +++ b/tools/libxc/Makefile @@ -20,6 +20,7 @@ CTRL_SRCS-y += xc_sedf.c CTRL_SRCS-y += xc_csched.c CTRL_SRCS-y += xc_csched2.c CTRL_SRCS-y += xc_arinc653.c +CTRL_SRCS-y += xc_rt.c CTRL_SRCS-y += xc_tbuf.c CTRL_SRCS-y += xc_pm.c CTRL_SRCS-y += xc_cpu_hotplug.c diff --git a/tools/libxc/xc_rt.c b/tools/libxc/xc_rt.c new file mode 100644 index 0000000..a3e76a1 --- /dev/null +++ b/tools/libxc/xc_rt.c @@ -0,0 +1,81 @@ +/**************************************************************************** + * + * File: xc_rt.c + * Author: Sisu Xi + * Meng Xu + * + * Description: XC Interface to the rt scheduler + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "xc_private.h" + +int +xc_sched_rt_domain_set( + xc_interface *xch, + uint32_t domid, + struct xen_domctl_sched_rt_params *sdom) +{ + int rc; + DECLARE_DOMCTL; + DECLARE_HYPERCALL_BOUNCE(sdom, + sizeof(*sdom), + XC_HYPERCALL_BUFFER_BOUNCE_IN); + + if ( xc_hypercall_bounce_pre(xch, sdom) ) + return -1; + + domctl.cmd = XEN_DOMCTL_scheduler_op; + domctl.domain = (domid_t) domid; + domctl.u.scheduler_op.sched_id = XEN_SCHEDULER_RT; + domctl.u.scheduler_op.cmd = XEN_DOMCTL_SCHEDOP_putinfo; + set_xen_guest_handle(domctl.u.scheduler_op.u.rt.schedule, sdom); + + rc = do_domctl(xch, &domctl); + + xc_hypercall_bounce_post(xch, sdom); + + return rc; +} + +int +xc_sched_rt_domain_get( + xc_interface *xch, + uint32_t domid, + struct xen_domctl_sched_rt_params *sdom) +{ + int rc; + DECLARE_DOMCTL; + DECLARE_HYPERCALL_BOUNCE(sdom, + sizeof(*sdom), + XC_HYPERCALL_BUFFER_BOUNCE_OUT); + + if ( xc_hypercall_bounce_pre(xch, sdom) ) + return -1; + + domctl.cmd = XEN_DOMCTL_scheduler_op; + domctl.domain = (domid_t) domid; + domctl.u.scheduler_op.sched_id = XEN_SCHEDULER_RT; + domctl.u.scheduler_op.cmd = XEN_DOMCTL_SCHEDOP_getinfo; + set_xen_guest_handle(domctl.u.scheduler_op.u.rt.schedule, sdom); + + rc = do_domctl(xch, &domctl); + + xc_hypercall_bounce_post(xch, sdom); + + return rc; +} + diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h index 3578b09..b7b0c04 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -865,6 +865,13 @@ int xc_sched_credit2_domain_get(xc_interface *xch, uint32_t domid, struct xen_domctl_sched_credit2 *sdom); +int xc_sched_rt_domain_set(xc_interface *xch, + uint32_t domid, + struct xen_domctl_sched_rt_params *sdom); +int xc_sched_rt_domain_get(xc_interface *xch, + uint32_t domid, + struct xen_domctl_sched_rt_params *sdom); + int xc_sched_arinc653_schedule_set( xc_interface *xch, -- 1.7.9.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |