[v3] trace: fix compilation with C++
Checks
Commit Message
From: Pawel Wodkowski <pawelwod@gmail.com>
trace_mem is declared as 'void *' which triggers following error:
'...invalid conversion from ‘void*’ to ‘__rte_trace_header*’
[-fpermissive]...'
Fix this by adding proper typecast to 'struct __rte_trace_header *'.
Fixes: ebaee6409702 ("trace: simplify trace point headers")
Signed-off-by: Pawel Wodkowski <pawelwod@gmail.com>
---
v3:
- fix subject.
v2:
- Update proper typecasting.
lib/librte_eal/include/rte_trace_point.h | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
Comments
Hi,
> -----Original Message-----
> From: skori@marvell.com
>
> trace_mem is declared as 'void *' which triggers following error:
> '...invalid conversion from ‘void*’ to ‘__rte_trace_header*’
> [-fpermissive]...'
>
> Fix this by adding proper typecast to 'struct __rte_trace_header *'.
>
> Fixes: ebaee6409702 ("trace: simplify trace point headers")
>
> Signed-off-by: Pawel Wodkowski <pawelwod@gmail.com>
> ---
> v3:
> - fix subject.
> v2:
> - Update proper typecasting.
>
> lib/librte_eal/include/rte_trace_point.h | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_eal/include/rte_trace_point.h
> b/lib/librte_eal/include/rte_trace_point.h
> index b03960277..6446f2f0f 100644
> --- a/lib/librte_eal/include/rte_trace_point.h
> +++ b/lib/librte_eal/include/rte_trace_point.h
> @@ -298,13 +298,14 @@ RTE_DECLARE_PER_LCORE(void *, trace_mem);
> static __rte_always_inline void * __rte_trace_mem_get(uint64_t in) {
> - struct __rte_trace_header *trace = RTE_PER_LCORE(trace_mem);
> + struct __rte_trace_header *trace =
> + (struct __rte_trace_header
> *)(RTE_PER_LCORE(trace_mem));
> const uint16_t sz = in & __RTE_TRACE_FIELD_SIZE_MASK;
>
> /* Trace memory is not initialized for this thread */
> if (unlikely(trace == NULL)) {
> __rte_trace_mem_per_thread_alloc();
> - trace = RTE_PER_LCORE(trace_mem);
> + trace = (struct __rte_trace_header
> *)(RTE_PER_LCORE(trace_mem));
> if (unlikely(trace == NULL))
> return NULL;
> }
> --
> 2.25.1
We have to do the same fix on our end to build properly.
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
On Wed, Aug 12, 2020 at 11:52 AM <skori@marvell.com> wrote:
>
> From: Pawel Wodkowski <pawelwod@gmail.com>
>
> trace_mem is declared as 'void *' which triggers following error:
> '...invalid conversion from ‘void*’ to ‘__rte_trace_header*’
> [-fpermissive]...'
>
> Fix this by adding proper typecast to 'struct __rte_trace_header *'.
>
> Fixes: ebaee6409702 ("trace: simplify trace point headers")
>
> Signed-off-by: Pawel Wodkowski <pawelwod@gmail.com>
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Acked-by: Nicolas Chautru <nicolas.chautru@intel.com>
Applied, thanks.
@@ -298,13 +298,14 @@ RTE_DECLARE_PER_LCORE(void *, trace_mem);
static __rte_always_inline void *
__rte_trace_mem_get(uint64_t in)
{
- struct __rte_trace_header *trace = RTE_PER_LCORE(trace_mem);
+ struct __rte_trace_header *trace =
+ (struct __rte_trace_header *)(RTE_PER_LCORE(trace_mem));
const uint16_t sz = in & __RTE_TRACE_FIELD_SIZE_MASK;
/* Trace memory is not initialized for this thread */
if (unlikely(trace == NULL)) {
__rte_trace_mem_per_thread_alloc();
- trace = RTE_PER_LCORE(trace_mem);
+ trace = (struct __rte_trace_header *)(RTE_PER_LCORE(trace_mem));
if (unlikely(trace == NULL))
return NULL;
}