xen: Simplify TSC domctls by removing double info field

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>
This commit is contained in:
Ian Campbell committed 2015-05-26 14:21:11 +01:00
1 parent f057af7aad
commit 6b05648d12
3 files changed
+19 -34

No files matched your search

+8 -15
View 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;
}
+9 -12
View 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;
+2 -7
View 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 */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.