]> xenbits.xensource.com Git - people/vhanquez/xen.git/commitdiff
x86 hvm: Add a new HVMOP to get the current Xen system time
authorKeir Fraser <keir@xen.org>
Fri, 10 Dec 2010 11:34:28 +0000 (11:34 +0000)
committerKeir Fraser <keir@xen.org>
Fri, 10 Dec 2010 11:34:28 +0000 (11:34 +0000)
Xen absolute system time, so that it can use SCHEDOP_poll in a
sensible fashion.  HVM PV drivers can't use the normal PV clock
because they might have TSC offsets that hey don't know about.

Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
xen-unstable changeset:   21772:2662f9c881fa
xen-unstable date:        Fri Jul 09 17:16:03 2010 +0100

xen/arch/x86/hvm/hvm.c
xen/include/public/hvm/hvm_op.h

index 6048380728eb93b9b57b381d3999c76de058f46e..6f0ee01adcef6a551b9dec10d952e984eb2df52d 100644 (file)
@@ -3124,6 +3124,15 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE(void) arg)
         break;
     }
 
+    case HVMOP_get_time: {
+        xen_hvm_get_time_t gxt;
+
+        gxt.now = NOW();
+        if ( copy_to_guest(arg, &gxt, 1) )
+            rc = -EFAULT;
+        break;
+    }
+
     default:
     {
         gdprintk(XENLOG_WARNING, "Bad HVM op %ld.\n", op);
index 734d224cb0ef50735433bc7035210f25db098818..1f697e46e1e67ffea3257426b97a152a2eaffc35 100644 (file)
@@ -138,6 +138,14 @@ struct xen_hvm_pagetable_dying {
 typedef struct xen_hvm_pagetable_dying xen_hvm_pagetable_dying_t;
 DEFINE_XEN_GUEST_HANDLE(xen_hvm_pagetable_dying_t);
 
+/* Get the current Xen time, in nanoseconds since system boot. */
+#define HVMOP_get_time              10
+struct xen_hvm_get_time {
+    uint64_t now;      /* OUT */
+};
+typedef struct xen_hvm_get_time xen_hvm_get_time_t;
+DEFINE_XEN_GUEST_HANDLE(xen_hvm_get_time_t);
+
 #endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
 
 #endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */