On 4/25/22 18:02, Mathieu Desnoyers wrote:
Now another solution is to make the fast assigns available to anyone, and
to allow you to simply pass in a pointer and size to have the data written
into it. That is, you get the results of the TRACE_EVENT and not have to
depend on internal data from the tracepoint.
If the fast assign can then be used on a field-per-field basis, maybe this
could work, but AFAIK the fast-assign macro is open-coded C, which makes this
not straightforward.
If it's a all-or-nothing approach where the fast-assign needs to serialize all
fields, this would require that lttng copies the data into a temporary area,
which is something I want to avoid for filtering and event notification per-field
payload capture purposes.
It wouldn't be great; but it wouldn't be any worse than doing any
complex calculations inside an "if (trace_xyz_enabled())", and passing
them as arguments to the tracepoint function, which is what you
suggested earlier.
Paolo