[v6,12/30] drivers/event: replace packed attributes
Checks
Commit Message
MSVC struct packing is not compatible with GCC. Replace macro
__rte_packed with __rte_packed_begin to push existing pack value
and set packing to 1-byte and macro __rte_packed_end to restore
the pack value prior to the push.
Macro __rte_packed_end is deliberately utilized to trigger a
MSVC compiler warning if no existing packing has been pushed allowing
easy identification of locations where the __rte_packed_begin is
missing.
Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>
---
drivers/event/octeontx/timvf_evdev.c | 4 ++--
drivers/event/octeontx/timvf_evdev.h | 12 ++++++------
2 files changed, 8 insertions(+), 8 deletions(-)
Comments
On Tue, Nov 26, 2024 at 04:52:23PM -0800, Andre Muezerie wrote:
> MSVC struct packing is not compatible with GCC. Replace macro
> __rte_packed with __rte_packed_begin to push existing pack value
> and set packing to 1-byte and macro __rte_packed_end to restore
> the pack value prior to the push.
>
> Macro __rte_packed_end is deliberately utilized to trigger a
> MSVC compiler warning if no existing packing has been pushed allowing
> easy identification of locations where the __rte_packed_begin is
> missing.
>
> Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>
> ---
Reviewed-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
@@ -9,10 +9,10 @@ RTE_LOG_REGISTER_SUFFIX(otx_logtype_timvf, timer, NOTICE);
static struct rte_eventdev *event_dev;
-struct __rte_packed timvf_mbox_dev_info {
+__rte_packed_begin struct timvf_mbox_dev_info {
uint64_t ring_active[4];
uint64_t clk_freq;
-};
+} __rte_packed_end;
/* Response messages */
enum {
@@ -123,7 +123,7 @@ enum timvf_clk_src {
};
/* TIM_MEM_BUCKET */
-struct __rte_aligned(8) tim_mem_bucket {
+__rte_packed_begin struct __rte_aligned(8) tim_mem_bucket {
uint64_t first_chunk;
union {
RTE_ATOMIC(uint64_t) w1;
@@ -139,19 +139,19 @@ struct __rte_aligned(8) tim_mem_bucket {
};
uint64_t current_chunk;
uint64_t pad;
-} __rte_packed;
+} __rte_packed_end;
-struct tim_mem_entry {
+__rte_packed_begin struct tim_mem_entry {
uint64_t w0;
uint64_t wqe;
-} __rte_packed;
+} __rte_packed_end;
-struct timvf_ctrl_reg {
+__rte_packed_begin struct timvf_ctrl_reg {
uint64_t rctrl0;
uint64_t rctrl1;
uint64_t rctrl2;
uint8_t use_pmu;
-} __rte_packed;
+} __rte_packed_end;
struct timvf_ring;