[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 09/15] tools/libxc: x86 PV restore code
On Fri, 2015-04-10 at 18:16 +0100, Andrew Cooper wrote: > Restore the x86 PV specific parts. The X86_PV_INFO, the P2M_FRAMES, > +/* > + * Set a pfn as populated, expanding the tracking structures if needed. To > + * avoid realloc()ing too excessivly, the size increased to the nearest power excessively. > +/* > + * Update details in a guests start_info strucutre. structure. > +/* > + * Processes X86_PV_VCPU_{BASIC,EXTENDED,XSAVE,MSRS} records from the stream. > + * The blobs are all stashed to one side as they need to be defered until the deferred. > + * very end of the stream, rather than being send to Xen at the point they > + * arive in the stream. It performs all pre-hypercall size validation. arrive. > + */ > +static int handle_x86_pv_vcpu_blob(struct xc_sr_context *ctx, > + struct xc_sr_record *rec) > +{ > + xc_interface *xch = ctx->xch; > + struct xc_sr_rec_x86_pv_vcpu_hdr *vhdr = rec->data; > + struct xc_sr_x86_pv_restore_vcpu *vcpu; > + const char *rec_name; > + size_t blobsz; > + void *blob; > + int rc = -1; > + > + switch ( rec->type ) > + { > +#define RECNAME(x, y) case (x): rec_name = (y) ; break > + RECNAME(REC_TYPE_X86_PV_VCPU_BASIC, "X86_PV_VCPU_BASIC"); > + RECNAME(REC_TYPE_X86_PV_VCPU_EXTENDED, "X86_PV_VCPU_EXTENDED"); > + RECNAME(REC_TYPE_X86_PV_VCPU_XSAVE, "X86_PV_VCPU_XSAVE"); > + RECNAME(REC_TYPE_X86_PV_VCPU_MSRS, "X86_PV_VCPU_MSRS"); > +#undef RECNAME I can see the point of STOREREC below but not this one unless you were to use cpp pasting to add the REC_TYPE_ prefix to a single argument. Otherwise the macro invocation doesn't seem to actually be any terser than the expansion. > + default: > + ERROR("Unrecogised vcpu blob record %s (%u)", Unrecognised. > +#define RECSTORE(x, y) case (x): free(y); (y) = blob; (y ## sz) = blobsz; > break > + RECSTORE(REC_TYPE_X86_PV_VCPU_BASIC, vcpu->basic); > + RECSTORE(REC_TYPE_X86_PV_VCPU_EXTENDED, vcpu->extd); > + RECSTORE(REC_TYPE_X86_PV_VCPU_XSAVE, vcpu->xsave); > + RECSTORE(REC_TYPE_X86_PV_VCPU_MSRS, vcpu->msr); Could optionally move some of the prefix of the first argument into the macro too. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |