]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
xen: Basic syswrap infrastructure for XEN_sched_op hypercalls
authorBart Van Assche <bvanassche@acm.org>
Sun, 28 Jun 2015 16:48:22 +0000 (16:48 +0000)
committerBart Van Assche <bvanassche@acm.org>
Sun, 28 Jun 2015 16:48:22 +0000 (16:48 +0000)
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15381

coregrind/m_syswrap/syswrap-xen.c
include/vki/vki-xen.h

index f46bb4c5ea0b2b2217256e1abdf5f836d8dd7120..f9515e086c9c553b34309638f290beca09dd78c8 100644 (file)
@@ -339,6 +339,29 @@ PRE(mmuext_op)
    }
 }
 
+PRE(sched_op)
+{
+   PRINT("__HYPERVISOR_sched_op ( %ld, %lx )", ARG1, ARG2);
+   void *arg = (void *)(unsigned long)ARG2;
+
+#define __PRE_XEN_SCHEDOP_READ(_schedop, _type, _field) \
+   PRE_MEM_READ("XEN_SCHEDOP_" # _schedop " " #_field,  \
+                (Addr)&((_type*)arg)->_field,           \
+                sizeof(((_type*)arg)->_field))
+#define PRE_XEN_SCHEDOP_READ(_schedop, _field)                          \
+   __PRE_XEN_SCHEDOP_READ(_schedop, vki_xen_ ## _schedop ## _t, _field)
+
+   switch (ARG1) {
+
+   default:
+      bad_subop(tid, layout, arrghs, status, flags,
+                "__HYPERVISOR_sched_op", ARG1);
+      break;
+   }
+#undef __PRE_XEN_SCHEDOP_READ
+#undef PRE_XEN_SCHEDOP_READ
+}
+
 static void pre_evtchn_op(ThreadId tid,
                           SyscallArgLayout*     layout,
                           /*MOD*/SyscallArgs*   arrghs,
@@ -1270,6 +1293,12 @@ static void post_evtchn_op(ThreadId tid, __vki_u32 cmd, void *arg, int compat)
    }
 }
 
+POST(sched_op)
+{
+   switch (ARG1) {
+   }
+}
+
 POST(evtchn_op)
 {
    post_evtchn_op(tid, ARG1, (void *)ARG2, 0);
@@ -1877,7 +1906,7 @@ static XenHypercallTableEntry hypercall_table[] = {
    HYPXY(__VKI_XEN_mmuext_op,               mmuext_op,         2), // 26
    //    __VKI_XEN_xsm_op                                          // 27
    //    __VKI_XEN_nmi_op                                          // 28
-   //    __VKI_XEN_sched_op                                        // 29
+   HYPXY(__VKI_XEN_sched_op,                sched_op,          2), // 29
 
    //    __VKI_XEN_callback_op                                     // 30
    //    __VKI_XEN_xenoprof_op                                     // 31
index e2f3d817b6f10502c3ea98d5ab622fc66ddb3fbc..cf24ed6664ed44bde3e02f22fe1450fbbf11b33f 100644 (file)
@@ -80,6 +80,7 @@ struct vki_xenctl_bitmap {
 #include <vki/vki-xen-domctl.h>
 #include <vki/vki-xen-sysctl.h>
 #include <vki/vki-xen-mmuext.h>
+#include <vki/vki-xen-schedop.h>
 #include <vki/vki-xen-memory.h>
 #include <vki/vki-xen-evtchn.h>
 #include <vki/vki-xen-gnttab.h>