>> +
>> +/*
>> + * 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: [email protected]
_______________________________________________
Containers mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers
_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel