Add 'ltime=' print param to inject event timestamp
Add 'ltime=' print param to inject event timestamp

Similar to 'lduration', add a special print field 'ltime', which allows
a print event to inject an absolute timestamp for its processing in the
GPUVis timeline. If present, use this timestamp rather than the
timestamp recorded by the ftrace event itself.

This enables processes that have access to absolute timestamps of
certain events to use these timestamps for trace analysis. For example,
a process might want to visualize absolute timestamps of signaled fences
that have a specific meaning to its operation (e.g. actual time when KMS
commit output fence was signaled). The process has access to this
timestamp from the fence data structure, and can now easily pass this to
GPUVis through a print event at some later time.

Another example is to visualize timestamps of compositor events that are
scheduled in the future, such as estimated future vblank time.

Arguably, this feature can lead to some confusion, as the visualized
timeline of these events is now subject to the user process itself, and
not subject to an external tracing mechanism such as ftrace. Events that
use injected timestamps, will therefore append their event string with
an asterisk '*' to easily distinguish them from normal events in the
timeline.

The 'ltime=' print field can be combined with other special print event
parsing, such as semantic ftrace pairs (e.g. "[Compositor] ..." pairs),
'lduration=' injection, 'begin|end_ctx=' injection, etc. In any case, an
asterisk is appended to the event string.

This feature requires the process using 'ltime=' and ftrace to have a
common reference of time. For example, if the user application passes
timestamps relative to MONOTONIC clock to 'ltime=' fields, then ftrace
needs to be configured to use the MONOTONIC clock as its trace clock:

`echo mono > /sys/kernel/tracing/trace_clock`

mikesart/gpuvis,mikesart/gpuvis,mikesart/gpuvis