|
This patch separates loading of different trace file formats to
independent functions. In order to call the correct function for
each trace file processed, each load function comes with a match
function. Pointers to these functions are stored in a new
struct trace_ops.
In order to avoid static lists of trace file formats (e.g.
implemented as static arrays or a number of registration
function calls in main), pointers to all trace_ops structures
are collected by the linker into a private segment. This creates
an implicit array of the pointers, which may then be enumerated
starting right after a globally linked element trace_ops_head.
A sentinel NULL pointer trails the array. A helper macro
EXPORT_TRACE_OPS is added for creating the special pointers.
Signed-off-by: Tuukka Tikkanen <tuukka.tikkanen@linaro.org>
Reviewed-by: Koan-Sin Tan <freedom.tan@linaro.org>
|