From mboxrd@z Thu Jan 1 00:00:00 1970 From: Meng Xu Subject: [PATCH v3 2/4] libxc: add rtds scheduler Date: Sun, 14 Sep 2014 17:37:27 -0400 Message-ID: <1410730649-2417-3-git-send-email-mengxu@cis.upenn.edu> References: <1410730649-2417-1-git-send-email-mengxu@cis.upenn.edu> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1410730649-2417-1-git-send-email-mengxu@cis.upenn.edu> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: ian.campbell@citrix.com, xisisu@gmail.com, stefano.stabellini@eu.citrix.com, george.dunlap@eu.citrix.com, lu@cse.wustl.edu, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, ptxlinh@gmail.com, xumengpanda@gmail.com, Meng Xu , JBeulich@suse.com, chaowang@wustl.edu, lichong659@gmail.com, dgolomb@seas.upenn.edu List-Id: xen-devel@lists.xenproject.org Add xc_sched_rtds_* functions to interact with Xen to set/get domain's parameters for rtds scheduler. Note: VCPU's information (period, budget) is in microsecond (us). Signed-off-by: Meng Xu Signed-off-by: Sisu Xi Reviewed-by: Dario Faggioli Acked-by: Ian Campbell --- tools/libxc/Makefile | 1 + tools/libxc/xc_rt.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ tools/libxc/xenctrl.h | 7 ++++++ 3 files changed, 73 insertions(+) create mode 100644 tools/libxc/xc_rt.c diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile index 3b04027..8db0d97 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..b2d1cc5 --- /dev/null +++ b/tools/libxc/xc_rt.c @@ -0,0 +1,65 @@ +/**************************************************************************** + * + * File: xc_rt.c + * Author: Sisu Xi + * Meng Xu + * + * Description: XC Interface to the rtds scheduler + * Note: VCPU's parameter (period, budget) is in microsecond (us). + * All VCPUs of the same domain have same period and budget. + * + * 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_rtds_domain_set(xc_interface *xch, + uint32_t domid, + struct xen_domctl_sched_rtds *sdom) +{ + int rc; + DECLARE_DOMCTL; + + domctl.cmd = XEN_DOMCTL_scheduler_op; + domctl.domain = (domid_t) domid; + domctl.u.scheduler_op.sched_id = XEN_SCHEDULER_RTDS; + domctl.u.scheduler_op.cmd = XEN_DOMCTL_SCHEDOP_putinfo; + domctl.u.scheduler_op.u.rtds.period = sdom->period; + domctl.u.scheduler_op.u.rtds.budget = sdom->budget; + + rc = do_domctl(xch, &domctl); + + return rc; +} + +int xc_sched_rtds_domain_get(xc_interface *xch, + uint32_t domid, + struct xen_domctl_sched_rtds *sdom) +{ + int rc; + DECLARE_DOMCTL; + + domctl.cmd = XEN_DOMCTL_scheduler_op; + domctl.domain = (domid_t) domid; + domctl.u.scheduler_op.sched_id = XEN_SCHEDULER_RTDS; + domctl.u.scheduler_op.cmd = XEN_DOMCTL_SCHEDOP_getinfo; + + rc = do_domctl(xch, &domctl); + + if ( rc == 0 ) + *sdom = domctl.u.scheduler_op.u.rtds; + + return rc; +} diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h index 1c8aa42..453ed2f 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -875,6 +875,13 @@ int xc_sched_credit2_domain_get(xc_interface *xch, uint32_t domid, struct xen_domctl_sched_credit2 *sdom); +int xc_sched_rtds_domain_set(xc_interface *xch, + uint32_t domid, + struct xen_domctl_sched_rtds *sdom); +int xc_sched_rtds_domain_get(xc_interface *xch, + uint32_t domid, + struct xen_domctl_sched_rtds *sdom); + int xc_sched_arinc653_schedule_set( xc_interface *xch, -- 1.7.9.5