Commit 0718e560 authored by Harshitha Ramamurthy's avatar Harshitha Ramamurthy Committed by Jeff Kirsher

virtchnl: Add a macro to check the size of a union

This patch adds a macro to check if the size of a union is correct.
It throws a divide by zero error if the union is not of the correct
size.
Signed-off-by: default avatarHarshitha Ramamurthy <harshitha.ramamurthy@intel.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 0c483bd4
...@@ -140,13 +140,15 @@ enum virtchnl_ops { ...@@ -140,13 +140,15 @@ enum virtchnl_ops {
VIRTCHNL_OP_DISABLE_CHANNELS = 31, VIRTCHNL_OP_DISABLE_CHANNELS = 31,
}; };
/* This macro is used to generate a compilation error if a structure /* These macros are used to generate compilation errors if a structure/union
* is not exactly the correct length. It gives a divide by zero error if the * is not exactly the correct length. It gives a divide by zero error if the
* structure is not of the correct size, otherwise it creates an enum that is * structure/union is not of the correct size, otherwise it creates an enum
* never used. * that is never used.
*/ */
#define VIRTCHNL_CHECK_STRUCT_LEN(n, X) enum virtchnl_static_assert_enum_##X \ #define VIRTCHNL_CHECK_STRUCT_LEN(n, X) enum virtchnl_static_assert_enum_##X \
{ virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) } { virtchnl_static_assert_##X = (n)/((sizeof(struct X) == (n)) ? 1 : 0) }
#define VIRTCHNL_CHECK_UNION_LEN(n, X) enum virtchnl_static_asset_enum_##X \
{ virtchnl_static_assert_##X = (n)/((sizeof(union X) == (n)) ? 1 : 0) }
/* Virtual channel message descriptor. This overlays the admin queue /* Virtual channel message descriptor. This overlays the admin queue
* descriptor. All other data is passed in external buffers. * descriptor. All other data is passed in external buffers.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment