[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 12/29] tools/libxc: x86 common code
Save/restore records common to all x86 domain types (HVM, PV). This is only the TSC_INFO record. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/libxc/saverestore/common_x86.c | 54 ++++++++++++++++++++++++++++++++++ tools/libxc/saverestore/common_x86.h | 26 ++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 tools/libxc/saverestore/common_x86.c create mode 100644 tools/libxc/saverestore/common_x86.h diff --git a/tools/libxc/saverestore/common_x86.c b/tools/libxc/saverestore/common_x86.c new file mode 100644 index 0000000..d76c11f --- /dev/null +++ b/tools/libxc/saverestore/common_x86.c @@ -0,0 +1,54 @@ +#include "common_x86.h" + +int write_tsc_info(struct xc_sr_context *ctx) +{ + xc_interface *xch = ctx->xch; + struct xc_sr_rec_tsc_info tsc = { 0 }; + struct xc_sr_record rec = + { + .type = REC_TYPE_TSC_INFO, + .length = sizeof(tsc), + .data = &tsc + }; + + if ( xc_domain_get_tsc_info(xch, ctx->domid, &tsc.mode, + &tsc.nsec, &tsc.khz, &tsc.incarnation) < 0 ) + { + PERROR("Unable to obtain TSC information"); + return -1; + } + + return write_record(ctx, &rec); +} + +int handle_tsc_info(struct xc_sr_context *ctx, struct xc_sr_record *rec) +{ + xc_interface *xch = ctx->xch; + struct xc_sr_rec_tsc_info *tsc = rec->data; + + if ( rec->length != sizeof(*tsc) ) + { + ERROR("TSC_INFO record wrong size: length %u, expected %zu", + rec->length, sizeof(*tsc)); + return -1; + } + + if ( xc_domain_set_tsc_info(xch, ctx->domid, tsc->mode, + tsc->nsec, tsc->khz, tsc->incarnation) ) + { + PERROR("Unable to set TSC information"); + return -1; + } + + return 0; +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/tools/libxc/saverestore/common_x86.h b/tools/libxc/saverestore/common_x86.h new file mode 100644 index 0000000..5971bc5 --- /dev/null +++ b/tools/libxc/saverestore/common_x86.h @@ -0,0 +1,26 @@ +#ifndef __COMMON_X86__H +#define __COMMON_X86__H + +#include "common.h" + +/* + * Obtains a domains TSC information from Xen and writes a TSC_INFO record + * into the stream. + */ +int write_tsc_info(struct xc_sr_context *ctx); + +/* + * Parses a TSC_INFO record and applies the result to the domain. + */ +int handle_tsc_info(struct xc_sr_context *ctx, struct xc_sr_record *rec); + +#endif +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |