]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/xen.git/commitdiff
xen: Simplify TSC domctls by removing double info field
authorIan Campbell <ian.campbell@citrix.com>
Tue, 26 May 2015 11:14:48 +0000 (12:14 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Tue, 26 May 2015 13:21:11 +0000 (14:21 +0100)
There is no need to have this twice and we can simply inline
xen_guest_tsc_info into xen_domctl_tsc_info as well.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <JBeulich@suse.com>
tools/libxc/xc_domain.c
xen/arch/x86/domctl.c
xen/include/public/domctl.h

index 38d065fcde837bd2a07b2eb56803c5c1dbd99169..1ff6d0a6096c3f8dec9447916b63063c61f2e6bd 100644 (file)
@@ -760,10 +760,10 @@ int xc_domain_set_tsc_info(xc_interface *xch,
     DECLARE_DOMCTL;
     domctl.cmd = XEN_DOMCTL_settscinfo;
     domctl.domain = (domid_t)domid;
-    domctl.u.tsc_info.info.tsc_mode = tsc_mode;
-    domctl.u.tsc_info.info.elapsed_nsec = elapsed_nsec;
-    domctl.u.tsc_info.info.gtsc_khz = gtsc_khz;
-    domctl.u.tsc_info.info.incarnation = incarnation;
+    domctl.u.tsc_info.tsc_mode = tsc_mode;
+    domctl.u.tsc_info.elapsed_nsec = elapsed_nsec;
+    domctl.u.tsc_info.gtsc_khz = gtsc_khz;
+    domctl.u.tsc_info.incarnation = incarnation;
     return do_domctl(xch, &domctl);
 }
 
@@ -776,24 +776,17 @@ int xc_domain_get_tsc_info(xc_interface *xch,
 {
     int rc;
     DECLARE_DOMCTL;
-    DECLARE_HYPERCALL_BUFFER(xen_guest_tsc_info_t, info);
-
-    info = xc_hypercall_buffer_alloc(xch, info, sizeof(*info));
-    if ( info == NULL )
-        return -1;
 
     domctl.cmd = XEN_DOMCTL_gettscinfo;
     domctl.domain = (domid_t)domid;
-    set_xen_guest_handle(domctl.u.tsc_info.out_info, info);
     rc = do_domctl(xch, &domctl);
     if ( rc == 0 )
     {
-        *tsc_mode = info->tsc_mode;
-        *elapsed_nsec = info->elapsed_nsec;
-        *gtsc_khz = info->gtsc_khz;
-        *incarnation = info->incarnation;
+        *tsc_mode = domctl.u.tsc_info.tsc_mode;
+        *elapsed_nsec = domctl.u.tsc_info.elapsed_nsec;
+        *gtsc_khz = domctl.u.tsc_info.gtsc_khz;
+        *incarnation = domctl.u.tsc_info.incarnation;
     }
-    xc_hypercall_buffer_free(xch, info);
     return rc;
 }
 
index a9ccf580dc8b3ff74c9e3a3bd1f99ea020de3157..e9f76d02991b7ff9ea1444222babafcae8d3e847 100644 (file)
@@ -703,16 +703,13 @@ long arch_do_domctl(
             ret = -EINVAL;
         else
         {
-            xen_guest_tsc_info_t info = { 0 };
-
             domain_pause(d);
-            tsc_get_info(d, &info.tsc_mode,
-                            &info.elapsed_nsec,
-                            &info.gtsc_khz,
-                            &info.incarnation);
+            tsc_get_info(d, &domctl->u.tsc_info.tsc_mode,
+                         &domctl->u.tsc_info.elapsed_nsec,
+                         &domctl->u.tsc_info.gtsc_khz,
+                         &domctl->u.tsc_info.incarnation);
             domain_unpause(d);
-            if ( copy_to_guest(domctl->u.tsc_info.out_info, &info, 1) )
-                ret = -EFAULT;
+            copyback = 1;
         }
         break;
 
@@ -722,10 +719,10 @@ long arch_do_domctl(
         else
         {
             domain_pause(d);
-            tsc_set_info(d, domctl->u.tsc_info.info.tsc_mode,
-                         domctl->u.tsc_info.info.elapsed_nsec,
-                         domctl->u.tsc_info.info.gtsc_khz,
-                         domctl->u.tsc_info.info.incarnation);
+            tsc_set_info(d, domctl->u.tsc_info.tsc_mode,
+                         domctl->u.tsc_info.elapsed_nsec,
+                         domctl->u.tsc_info.gtsc_khz,
+                         domctl->u.tsc_info.incarnation);
             domain_unpause(d);
         }
         break;
index 5d15f2a08c5995a067a348b065fa9f1f37eb2d30..53cdf082a839a3dc188e653e7d92e13f5c9d1328 100644 (file)
@@ -699,18 +699,13 @@ typedef struct xen_domctl_disable_migrate {
 
 /* XEN_DOMCTL_gettscinfo */
 /* XEN_DOMCTL_settscinfo */
-struct xen_guest_tsc_info {
+typedef struct xen_domctl_tsc_info {
+    /* IN/OUT */
     uint32_t tsc_mode;
     uint32_t gtsc_khz;
     uint32_t incarnation;
     uint32_t pad;
     uint64_aligned_t elapsed_nsec;
-};
-typedef struct xen_guest_tsc_info xen_guest_tsc_info_t;
-DEFINE_XEN_GUEST_HANDLE(xen_guest_tsc_info_t);
-typedef struct xen_domctl_tsc_info {
-    XEN_GUEST_HANDLE_64(xen_guest_tsc_info_t) out_info; /* OUT */
-    xen_guest_tsc_info_t info; /* IN */
 } xen_domctl_tsc_info_t;
 
 /* XEN_DOMCTL_gdbsx_guestmemio      guest mem io */