The +{macro-name}()+ utility macro was developed to make user space
tracing super simple, albeit with notable disadvantages compared to
custom, full-fledged tracepoint providers:

  * All generated events have the same provider/event names.
  * There's no static type checking.
  * The only event field with user data you actually get, named `msg`,
    is a string potentially containing the values you passed to the
    macro using your own format. This also means that you cannot use
    filtering using a custom expression at run time because there are no
    isolated fields.
  * Since +{macro-name}()+ uses C standard library's man:vasprintf(3)
    function in the background to format the strings at run time, its
    expected performance is lower than using custom tracepoint providers
    with typed fields, which do not require a conversion to a string.
  * Generally, a string containing the textual representation of the
    user data fields is not as compact as binary fields in the
    resulting trace.

Thus, +{macro-name}()+ is useful for quick prototyping and debugging, but
should not be considered for any permanent/serious application
instrumentation.

See man:lttng-ust(3) to learn more about custom tracepoint providers.
