[dpdk-dev] [EXT] [PATCH v2 2/4] trace: remove size limit on CTF event description
David Marchand
david.marchand at redhat.com
Thu Oct 29 11:02:43 CET 2020
On Thu, Oct 29, 2020 at 10:36 AM Sunil Kumar Kori <skori at marvell.com> wrote:
> Yes but I am not able to understand that how tp->ctf_field will be populated with latest memory
> because RTE_PER_LCORE(ctf_field) is being free and re-allocated at runtime.
Initially, RTE_PER_LCORE(ctf_field) is NULL.
Then registration for a trace point happens:
__rte_trace_point_register() calls register_fn() which for each field
in the trace point calls __rte_trace_point_emit_field().
Each call to __rte_trace_point_emit_field accumulates the previous
ctf_field with the new field.
rc = asprintf(&field, "%s %s %s;\n",
RTE_PER_LCORE(ctf_field) != NULL ?
RTE_PER_LCORE(ctf_field) : "",
datatype, in);
free(RTE_PER_LCORE(ctf_field));
RTE_PER_LCORE(ctf_field) = field;
Here, RTE_PER_LCORE(ctf_field) is != NULL.
Back to __rte_trace_point_register:
/* Copy the accumulated fields description and clear it for the next
* trace point.
*/
tp->ctf_field = RTE_PER_LCORE(ctf_field);
Once stored, RTE_PER_LCORE(ctf_field) is cleared again for the next
trace point registration.
RTE_PER_LCORE(ctf_field) = NULL;
--
David Marchand
More information about the dev
mailing list