Message ID | 1454626244-5511-3-git-send-email-lichong659@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Feb 04, 2016 at 04:50:42PM -0600, Chong Li wrote: > Add xc_sched_rtds_vcpu_get/set functions to interact with > Xen to get/set a domain's per-VCPU parameters. > > Signed-off-by: Chong Li <chong.li@wustl.edu> > Signed-off-by: Meng Xu <mengxu@cis.upenn.edu> > Signed-off-by: Sisu Xi <xisisu@gmail.com> These looks like sensible wrappers. I will defer this patch to Dario. If he's happy with this I will just ack it. > --- > Changes on PATCH v4: > 1) Minor modifications on the function parameters. > > Changes on PATCH v2: > 1) Minor modifications due to the change of struct xen_domctl_scheduler_op. > > CC: <dario.faggioli@citrix.com> > CC: <george.dunlap@eu.citrix.com> > CC: <dgolomb@seas.upenn.edu> > CC: <mengxu@cis.upenn.edu> > CC: <wei.liu2@citrix.com> > CC: <lichong659@gmail.com> > --- > tools/libxc/include/xenctrl.h | 8 +++++++ > tools/libxc/xc_rt.c | 56 +++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 64 insertions(+) > > diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h > index 01a6dda..db13434 100644 > --- a/tools/libxc/include/xenctrl.h > +++ b/tools/libxc/include/xenctrl.h > @@ -893,6 +893,14 @@ int xc_sched_rtds_domain_set(xc_interface *xch, > int xc_sched_rtds_domain_get(xc_interface *xch, > uint32_t domid, > struct xen_domctl_sched_rtds *sdom); > +int xc_sched_rtds_vcpu_set(xc_interface *xch, > + uint32_t domid, > + struct xen_domctl_schedparam_vcpu *vcpus, > + uint32_t num_vcpus); > +int xc_sched_rtds_vcpu_get(xc_interface *xch, > + uint32_t domid, > + struct xen_domctl_schedparam_vcpu *vcpus, > + uint32_t num_vcpus); > Indentation looks wrong. Wei.
On Fri, 2016-02-05 at 14:09 +0000, Wei Liu wrote: > On Thu, Feb 04, 2016 at 04:50:42PM -0600, Chong Li wrote: > > Add xc_sched_rtds_vcpu_get/set functions to interact with > > Xen to get/set a domain's per-VCPU parameters. > > > > Signed-off-by: Chong Li <chong.li@wustl.edu> > > Signed-off-by: Meng Xu <mengxu@cis.upenn.edu> > > Signed-off-by: Sisu Xi <xisisu@gmail.com> > > These looks like sensible wrappers. I will defer this patch to Dario. > If > he's happy with this I will just ack it. > They seem fine to me as well. However, as said when reviewing patch 1, I'd like to see an attempt for these hypercalls to be dealt with in the same way as XEN_SYSCTL_pcitopoinfo is. If doing that, these wrappers need to be changed accordingly. Regards, Dario
diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h index 01a6dda..db13434 100644 --- a/tools/libxc/include/xenctrl.h +++ b/tools/libxc/include/xenctrl.h @@ -893,6 +893,14 @@ int xc_sched_rtds_domain_set(xc_interface *xch, int xc_sched_rtds_domain_get(xc_interface *xch, uint32_t domid, struct xen_domctl_sched_rtds *sdom); +int xc_sched_rtds_vcpu_set(xc_interface *xch, + uint32_t domid, + struct xen_domctl_schedparam_vcpu *vcpus, + uint32_t num_vcpus); +int xc_sched_rtds_vcpu_get(xc_interface *xch, + uint32_t domid, + struct xen_domctl_schedparam_vcpu *vcpus, + uint32_t num_vcpus); int xc_sched_arinc653_schedule_set( diff --git a/tools/libxc/xc_rt.c b/tools/libxc/xc_rt.c index d59e5ce..cb7bc1a 100644 --- a/tools/libxc/xc_rt.c +++ b/tools/libxc/xc_rt.c @@ -62,3 +62,59 @@ int xc_sched_rtds_domain_get(xc_interface *xch, return rc; } + +int xc_sched_rtds_vcpu_set(xc_interface *xch, + uint32_t domid, + struct xen_domctl_schedparam_vcpu *vcpus, + uint32_t num_vcpus) +{ + int rc; + DECLARE_DOMCTL; + DECLARE_HYPERCALL_BOUNCE(vcpus, sizeof(*vcpus) * num_vcpus, + XC_HYPERCALL_BUFFER_BOUNCE_IN); + + if ( xc_hypercall_bounce_pre(xch, vcpus) ) + return -1; + + 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_putvcpuinfo; + domctl.u.scheduler_op.u.v.nr_vcpus = num_vcpus; + set_xen_guest_handle(domctl.u.scheduler_op.u.v.vcpus, vcpus); + domctl.u.scheduler_op.u.v.vcpu_index = 0; + + rc = do_domctl(xch, &domctl); + + xc_hypercall_bounce_post(xch, vcpus); + + return rc; +} + +int xc_sched_rtds_vcpu_get(xc_interface *xch, + uint32_t domid, + struct xen_domctl_schedparam_vcpu *vcpus, + uint32_t num_vcpus) +{ + int rc; + DECLARE_DOMCTL; + DECLARE_HYPERCALL_BOUNCE(vcpus, sizeof(*vcpus) * num_vcpus, + XC_HYPERCALL_BUFFER_BOUNCE_BOTH); + + if ( xc_hypercall_bounce_pre(xch, vcpus) ) + return -1; + + 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_getvcpuinfo; + domctl.u.scheduler_op.u.v.nr_vcpus = num_vcpus; + set_xen_guest_handle(domctl.u.scheduler_op.u.v.vcpus, vcpus); + domctl.u.scheduler_op.u.v.vcpu_index = 0; + + rc = do_domctl(xch, &domctl); + + xc_hypercall_bounce_post(xch, vcpus); + + return rc; +}