[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 04/20] libxc/xc_sr_save.c: add WRITE_TRIVIAL_RECORD_FN()
Writing the libxc save stream requires writing a few 'trivial' records, consisting only of a header with a particular type. As a readability aid, it's nice to have obviously-named functions that write these sorts of records into the stream - for example, the first such function was write_end_record(), which reads much more pleasantly at its call-site than write_generic_record(REC_TYPE_END) would. However, it's tedious and error-prone to copy-paste the generic body of such a function for each new trivial record type. Add a helper macro that takes a name base and a record type and declares the corresponding trivial record write function. Use this to re-define the two existing trivial record functions, write_end_record() and write_checkpoint_record(). No functional change. Signed-off-by: Joshua Otto <jtotto@xxxxxxxxxxxx> --- tools/libxc/xc_sr_save.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/tools/libxc/xc_sr_save.c b/tools/libxc/xc_sr_save.c index 61fc4a4..86f6903 100644 --- a/tools/libxc/xc_sr_save.c +++ b/tools/libxc/xc_sr_save.c @@ -47,24 +47,18 @@ static int write_headers(struct xc_sr_context *ctx, uint16_t guest_type) } /* - * Writes an END record into the stream. + * Declares a helper function to write an empty record of a particular type. */ -static int write_end_record(struct xc_sr_context *ctx) -{ - struct xc_sr_record end = { REC_TYPE_END, 0, NULL }; - - return write_record(ctx, ctx->fd, &end); -} - -/* - * Writes a CHECKPOINT record into the stream. - */ -static int write_checkpoint_record(struct xc_sr_context *ctx) -{ - struct xc_sr_record checkpoint = { REC_TYPE_CHECKPOINT, 0, NULL }; +#define WRITE_TRIVIAL_RECORD_FN(name, type) \ + static int write_ ## name ## _record(struct xc_sr_context *ctx) \ + { \ + struct xc_sr_record name = { (type), 0, NULL }; \ + \ + return write_record(ctx, ctx->fd, &name); \ + } - return write_record(ctx, ctx->fd, &checkpoint); -} +WRITE_TRIVIAL_RECORD_FN(end, REC_TYPE_END); +WRITE_TRIVIAL_RECORD_FN(checkpoint, REC_TYPE_CHECKPOINT); /* * Writes a batch of memory as a PAGE_DATA record into the stream. The batch -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |