[Devel] Re: [RFC v14-rc2][PATCH 24/29] c/r: Add CR_COPY() macro (v4)
Dan Smith
danms at us.ibm.com
Thu Apr 2 12:00:49 PDT 2009
>> +
>> +/*
>> + * Copy @count items from @LIVE to @SAVE if op is CR_CPT (otherwise,
>> + * copy in the reverse direction)
>> + */
>> +#define CR_COPY_ARRAY(op, SAVE, LIVE, count) \
>> + do { \
>> + BUILD_BUG_ON(sizeof(*SAVE) != sizeof(*LIVE)); \
>> + if (op == CR_CPT) \
>> + memcpy(SAVE, LIVE, count * sizeof(*SAVE)); \
>> + else \
>> + memcpy(LIVE, SAVE, count * sizeof(*SAVE)); \
>> + } while (__must_be_array(SAVE) && __must_be_array(LIVE) && 0)
SH> It doesn't really matter I guess, but I'd prefer to see:
SH> #define CR_COPY_ARRAY(op, SAVE, LIVE, count) \
SH> do { \
SH> __must_be_array(SAVE); \
SH> __must_be_array(LIVE); \
SH> BUILD_BUG_ON(sizeof(*SAVE) != sizeof(*LIVE)); \
SH> if (op == CR_CPT) \
SH> memcpy(SAVE, LIVE, count * sizeof(*SAVE)); \
SH> else \
SH> memcpy(LIVE, SAVE, count * sizeof(*SAVE)); \
SH> } while (0)
SH> Putting the __must_be_array()s inside the condition seems really weird.
I thought I explained this somewhere. You'll get a compile warning if
you make __must_be_array() a statement without an lvalue. If you try
to stuff the result into a variable that you don't use, you'll get a
warning about an unused variable. I did what I did because it seemed
like a sane way to sidestep both of those issues.
Maybe a comment is warranted? :)
--
Dan Smith
IBM Linux Technology Center
email: danms at us.ibm.com
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list