forked from espressif/esp-idf
ringbuf: Fix ordering of StaticRingbuffer_t
When building on linux/host compilers (e.g., GCC), the compiler may add padding depending on the size and order of the member types. This commit fixes the ordering or the StaticRingbuffer_t such that it matches the internal Ringbuffer_t. The "_Static_assert" is always enabled for all compilers. Closes https://github.com/espressif/esp-idf/issues/11726
This commit is contained in:
@@ -57,8 +57,8 @@ typedef struct xSTATIC_RINGBUFFER {
|
|||||||
/** @cond */ //Doxygen command to hide this structure from API Reference
|
/** @cond */ //Doxygen command to hide this structure from API Reference
|
||||||
size_t xDummy1[2];
|
size_t xDummy1[2];
|
||||||
UBaseType_t uxDummy2;
|
UBaseType_t uxDummy2;
|
||||||
BaseType_t xDummy3;
|
void *pvDummy3[11];
|
||||||
void *pvDummy4[11];
|
BaseType_t xDummy4;
|
||||||
StaticList_t xDummy5[2];
|
StaticList_t xDummy5[2];
|
||||||
void * pvDummy6;
|
void * pvDummy6;
|
||||||
portMUX_TYPE muxDummy;
|
portMUX_TYPE muxDummy;
|
||||||
|
@@ -73,9 +73,7 @@ typedef struct RingbufferDefinition {
|
|||||||
portMUX_TYPE mux; //Spinlock required for SMP
|
portMUX_TYPE mux; //Spinlock required for SMP
|
||||||
} Ringbuffer_t;
|
} Ringbuffer_t;
|
||||||
|
|
||||||
#if __GNUC_PREREQ(4, 6)
|
|
||||||
_Static_assert(sizeof(StaticRingbuffer_t) == sizeof(Ringbuffer_t), "StaticRingbuffer_t != Ringbuffer_t");
|
_Static_assert(sizeof(StaticRingbuffer_t) == sizeof(Ringbuffer_t), "StaticRingbuffer_t != Ringbuffer_t");
|
||||||
#endif
|
|
||||||
|
|
||||||
// ------------------------------------------------ Forward Declares ---------------------------------------------------
|
// ------------------------------------------------ Forward Declares ---------------------------------------------------
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user