mbox series

[v4,00/46] Libtraceevent MAN pages

Message ID 20190308133654.21264-1-tstoyanov@vmware.com (mailing list archive)
Headers show
Series Libtraceevent MAN pages | expand

Message

Tzvetomir Stoyanov March 8, 2019, 1:36 p.m. UTC
[
 V4 changes:
  - Addressed Steven Rostedt comments
  - Removed trailing whitespace

 V3 changes:
  - Combines all man page related patches into one series. 
  - Removes any dependencies between man page related patches
    and patches related to the APIs implementation.
]

This patch series includes implementation of libtraceevent
man pages, describing all APIs of the library.

Tzvetomir Stoyanov (46):
  tools/lib/traceevent: Implement libtraceevent man pages
  tools/lib/traceevent: Fix libtraceevent/Documentation Makefile
  tools/lib/traceevent: Add support for man pages with multiple names
  tools/lib/traceevent: libtraceevent Makefile "help" target
  tools/lib/traceevent: libtraceevent man pages for tep_handler related
    APIs
  tools/lib/traceevent: Man page for tep_get_header_page_size()
  tools/lib/traceevent: Man page for tep_get_cpus() and tep_set_cpus()
  tools/lib/traceevent: Man page for tep_is_file_bigendian() and
    tep_set_file_bigendian()
  tools/lib/traceevent: Man page for tep_is_host_bigendian() and
    tep_set_host_bigendian()
  tools/lib/traceevent: Man page for tep_is_latency_format() and
    tep_set_latency_format()
  tools/lib/traceevent: Man page for tep_get_page_size() and
    tep_set_page_size()
  tools/lib/traceevent: Man page for tep_strerror()
  tools/lib/traceevent: Man page for tep_register_trace_clock()
  tools/lib/traceevent: Man pages for tep_register_event_handler() and
    tep_unregister_event_handler()
  tools/lib/traceevent: Man pages for tep_register_function() and
    tep_register_print_string()
  tools/lib/traceevent: Man pages for tep_register_print_function() and
    tep_unregister_print_function()
  tools/lib/traceevent: Man page for tep_read_number()
  tools/lib/traceevent: Man pages for tep_find_event(),
    tep_find_event_by_name() and tep_find_event_by_record()
  tools/lib/traceevent: Man page for tep_list_events()
  tools/lib/traceevent: Man pages for tep_print_event(),
    tep_print_event_data(), tep_event_info(), tep_print_event_task() and
    tep_print_event_time()
  tools/lib/traceevent: Man pages tep_get_first_event() and
    tep_get_events_count()
  tools/lib/traceevent: Man pages tep_find_common_field(),
    tep_find_field() and tep_find_any_field()
  tools/lib/traceevent: Man pages tep_get_any_field_val(),
    tep_get_common_field_val(), tep_get_field_val() and
    tep_get_field_raw()
  tools/lib/traceevent: Man pages for tep_print_field(),
    tep_print_fields(), tep_print_num_field() and tep_print_func_field()
  tools/lib/traceevent: Man page for tep_read_number_field()
  tools/lib/traceevent: Man pages for tep_event_common_fields() and
    tep_event_fields()
  tools/lib/traceevent: Man pages for tep_filter_alloc(),
    tep_filter_free() and tep_filter_reset()
  tools/lib/traceevent: Man page for tep_filter_add_filter_str()
  tools/lib/traceevent: Man page for tep_filter_strerror()
  tools/lib/traceevent: Man pages for tep_event_filtered() and
    tep_filter_remove_event()
  tools/lib/traceevent: Man page for tep_filter_match()
  tools/lib/traceevent: Man pages for tep_filter_copy() and
    tep_filter_compare()
  tools/lib/traceevent: Man page for tep_filter_make_string()
  tools/lib/traceevent: Man pages for tep_filter_event_has_trivial(),
    tep_update_trivial() and tep_filter_clear_trivial()
  tools/lib/traceevent: Man pages for tep_find_function() and
    tep_find_function_address()
  tools/lib/traceevent: Man pages for tep_set_function_resolver() and
    tep_reset_function_resolver()
  tools/lib/traceevent: Man pages for tep_parse_event() and
    tep_parse_format()
  tools/lib/traceevent: Man page for tep_parse_header_page()
  tools/lib/traceevent: Man pages for tep_load_plugins() and
    tep_unload_plugin()
  tools/lib/traceevent: Man page for tep_data_lat_fmt()
  tools/lib/traceevent: Man pages for tep_data_type(), tep_data_pid(),
    tep_data_preempt_count() and tep_data_flags()
  tools/lib/traceevent: Man pages for trace_seq_init() and
    trace_seq_destroy()
  tools/lib/traceevent: Man pages for trace_seq_do_fprintf() and
    trace_seq_do_printf()
  tools/lib/traceevent: Man pages for trace_seq_printf() and
    trace_seq_vprintf()
  tools/lib/traceevent: Man pages for trace_seq_putc() and
    trace_seq_puts()
  tools/lib/traceevent: Man pages for trace_seq_reset() and
    trace_seq_terminate()

 tools/lib/traceevent/Documentation/Makefile   | 208 ++++++++++++++++++
 .../traceevent/Documentation/asciidoc.conf    | 120 ++++++++++
 .../Documentation/libtraceevent-commands.txt  | 130 +++++++++++
 .../Documentation/libtraceevent-cpus.txt      |  77 +++++++
 .../libtraceevent-endian_read.txt             |  76 +++++++
 .../libtraceevent-event_find.txt              |  99 +++++++++
 .../libtraceevent-event_list.txt              |  94 ++++++++
 .../libtraceevent-event_print.txt             | 126 +++++++++++
 .../Documentation/libtraceevent-events.txt    |  87 ++++++++
 .../libtraceevent-field_find.txt              |  98 +++++++++
 .../libtraceevent-field_get_val.txt           | 117 ++++++++++
 .../libtraceevent-field_print.txt             | 120 ++++++++++
 .../libtraceevent-field_read.txt              |  80 +++++++
 .../Documentation/libtraceevent-fields.txt    |  99 +++++++++
 .../libtraceevent-file_endian.txt             |  89 ++++++++
 .../Documentation/libtraceevent-filter.txt    |  85 +++++++
 .../libtraceevent-filter_add.txt              |  78 +++++++
 .../libtraceevent-filter_error.txt            |  78 +++++++
 .../libtraceevent-filter_event.txt            |  84 +++++++
 .../libtraceevent-filter_match.txt            |  96 ++++++++
 .../libtraceevent-filter_oper.txt             |  84 +++++++
 .../libtraceevent-filter_show.txt             |  75 +++++++
 .../libtraceevent-filter_trivial.txt          | 112 ++++++++++
 .../Documentation/libtraceevent-func_find.txt |  88 ++++++++
 .../libtraceevent-func_resolve.txt            |  96 ++++++++
 .../Documentation/libtraceevent-handle.txt    | 101 +++++++++
 .../libtraceevent-header_size.txt             |  73 ++++++
 .../libtraceevent-host_endian.txt             |  91 ++++++++
 .../libtraceevent-latency_format.txt          | 140 ++++++++++++
 .../Documentation/libtraceevent-long_size.txt |  78 +++++++
 .../Documentation/libtraceevent-page_size.txt |  80 +++++++
 .../libtraceevent-parse_event.txt             |  90 ++++++++
 .../libtraceevent-parse_head.txt              |  82 +++++++
 .../Documentation/libtraceevent-plugins.txt   |  98 +++++++++
 .../libtraceevent-record_lat.txt              |  77 +++++++
 .../libtraceevent-record_parse.txt            | 134 +++++++++++
 .../Documentation/libtraceevent-reg_clock.txt |  77 +++++++
 .../libtraceevent-reg_event_handler.txt       | 129 +++++++++++
 .../libtraceevent-reg_funcstr.txt             |  89 ++++++++
 .../libtraceevent-reg_print_func.txt          | 128 +++++++++++
 .../Documentation/libtraceevent-set_flag.txt  |  90 ++++++++
 .../Documentation/libtraceevent-strerror.txt  |  78 +++++++
 .../Documentation/libtraceevent-tseq.txt      |  76 +++++++
 .../libtraceevent-tseq_doprint.txt            |  89 ++++++++
 .../libtraceevent-tseq_print.txt              |  96 ++++++++
 .../Documentation/libtraceevent-tseq_put.txt  |  89 ++++++++
 .../libtraceevent-tseq_reset.txt              |  78 +++++++
 .../Documentation/libtraceevent.txt           | 198 +++++++++++++++++
 .../traceevent/Documentation/manpage-1.72.xsl |  14 ++
 .../traceevent/Documentation/manpage-base.xsl |  35 +++
 .../Documentation/manpage-bold-literal.xsl    |  17 ++
 .../Documentation/manpage-normal.xsl          |  13 ++
 .../Documentation/manpage-suppress-sp.xsl     |  21 ++
 tools/lib/traceevent/Makefile                 |  28 +++
 54 files changed, 4885 insertions(+)
 create mode 100644 tools/lib/traceevent/Documentation/Makefile
 create mode 100644 tools/lib/traceevent/Documentation/asciidoc.conf
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-commands.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-cpus.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-endian_read.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_find.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_list.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_print.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-events.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_find.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_get_val.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_print.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_read.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-fields.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-file_endian.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_add.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_error.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_event.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_match.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_oper.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_show.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_trivial.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_find.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_resolve.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-handle.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-header_size.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-host_endian.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-latency_format.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-long_size.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-page_size.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_event.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_head.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-plugins.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-record_lat.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-record_parse.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_clock.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_event_handler.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_funcstr.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_print_func.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-set_flag.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-strerror.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_doprint.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_print.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_put.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_reset.txt
 create mode 100644 tools/lib/traceevent/Documentation/libtraceevent.txt
 create mode 100644 tools/lib/traceevent/Documentation/manpage-1.72.xsl
 create mode 100644 tools/lib/traceevent/Documentation/manpage-base.xsl
 create mode 100644 tools/lib/traceevent/Documentation/manpage-bold-literal.xsl
 create mode 100644 tools/lib/traceevent/Documentation/manpage-normal.xsl
 create mode 100644 tools/lib/traceevent/Documentation/manpage-suppress-sp.xsl

Comments

Claudio March 8, 2019, 2:19 p.m. UTC | #1
On 3/8/19 2:36 PM, Tzvetomir Stoyanov wrote:
> [
>  V4 changes:
>   - Addressed Steven Rostedt comments
>   - Removed trailing whitespace
> 
>  V3 changes:
>   - Combines all man page related patches into one series. 
>   - Removes any dependencies between man page related patches
>     and patches related to the APIs implementation.
> ]
> 
> This patch series includes implementation of libtraceevent
> man pages, describing all APIs of the library.

Hello,

is there a general man page entry that explains what libtracevent does?

Maybe a manual section 3 or 7 entry like 

LIBTRACEEVENT(3)

Maybe I have missed it? I think it would helpful, to avoid a disconnect between what a user might expect the library to do,
vs what it actually does, to which use case it is suited for.

Just as a case in point, at the moment these are the features which would be needed for me to use this
library for the real time tracing requirements I am facing (response times, fixed allocation of cpu tracing usage/overhead):

- resource usage description of APIs, which APIs allocate memory, open file descriptors and such,
  some examples of resource lifetime would be helpful (pardon if they are there already and I missed them)

- support for in-order delivery of events already correlated from multiple cores

- network streaming support (maybe already working?)

- support for getting TGID in addition to the COMM for each (sched) event in addition to the PID.

Currently we have implemented all of this inside the application,
but we could get rid of this complexity in the future if this library could provide this out of the box,
without serious impacts on cpu overhead and latency requirements.

Just a simple description of the overall goals of the library and common patterns,
notes on resource usage, etc, would be enough I think to be able to quickly see if it fits the application use case..

Thank you,

Claudio

> 
> Tzvetomir Stoyanov (46):
>   tools/lib/traceevent: Implement libtraceevent man pages
>   tools/lib/traceevent: Fix libtraceevent/Documentation Makefile
>   tools/lib/traceevent: Add support for man pages with multiple names
>   tools/lib/traceevent: libtraceevent Makefile "help" target
>   tools/lib/traceevent: libtraceevent man pages for tep_handler related
>     APIs
>   tools/lib/traceevent: Man page for tep_get_header_page_size()
>   tools/lib/traceevent: Man page for tep_get_cpus() and tep_set_cpus()
>   tools/lib/traceevent: Man page for tep_is_file_bigendian() and
>     tep_set_file_bigendian()
>   tools/lib/traceevent: Man page for tep_is_host_bigendian() and
>     tep_set_host_bigendian()
>   tools/lib/traceevent: Man page for tep_is_latency_format() and
>     tep_set_latency_format()
>   tools/lib/traceevent: Man page for tep_get_page_size() and
>     tep_set_page_size()
>   tools/lib/traceevent: Man page for tep_strerror()
>   tools/lib/traceevent: Man page for tep_register_trace_clock()
>   tools/lib/traceevent: Man pages for tep_register_event_handler() and
>     tep_unregister_event_handler()
>   tools/lib/traceevent: Man pages for tep_register_function() and
>     tep_register_print_string()
>   tools/lib/traceevent: Man pages for tep_register_print_function() and
>     tep_unregister_print_function()
>   tools/lib/traceevent: Man page for tep_read_number()
>   tools/lib/traceevent: Man pages for tep_find_event(),
>     tep_find_event_by_name() and tep_find_event_by_record()
>   tools/lib/traceevent: Man page for tep_list_events()
>   tools/lib/traceevent: Man pages for tep_print_event(),
>     tep_print_event_data(), tep_event_info(), tep_print_event_task() and
>     tep_print_event_time()
>   tools/lib/traceevent: Man pages tep_get_first_event() and
>     tep_get_events_count()
>   tools/lib/traceevent: Man pages tep_find_common_field(),
>     tep_find_field() and tep_find_any_field()
>   tools/lib/traceevent: Man pages tep_get_any_field_val(),
>     tep_get_common_field_val(), tep_get_field_val() and
>     tep_get_field_raw()
>   tools/lib/traceevent: Man pages for tep_print_field(),
>     tep_print_fields(), tep_print_num_field() and tep_print_func_field()
>   tools/lib/traceevent: Man page for tep_read_number_field()
>   tools/lib/traceevent: Man pages for tep_event_common_fields() and
>     tep_event_fields()
>   tools/lib/traceevent: Man pages for tep_filter_alloc(),
>     tep_filter_free() and tep_filter_reset()
>   tools/lib/traceevent: Man page for tep_filter_add_filter_str()
>   tools/lib/traceevent: Man page for tep_filter_strerror()
>   tools/lib/traceevent: Man pages for tep_event_filtered() and
>     tep_filter_remove_event()
>   tools/lib/traceevent: Man page for tep_filter_match()
>   tools/lib/traceevent: Man pages for tep_filter_copy() and
>     tep_filter_compare()
>   tools/lib/traceevent: Man page for tep_filter_make_string()
>   tools/lib/traceevent: Man pages for tep_filter_event_has_trivial(),
>     tep_update_trivial() and tep_filter_clear_trivial()
>   tools/lib/traceevent: Man pages for tep_find_function() and
>     tep_find_function_address()
>   tools/lib/traceevent: Man pages for tep_set_function_resolver() and
>     tep_reset_function_resolver()
>   tools/lib/traceevent: Man pages for tep_parse_event() and
>     tep_parse_format()
>   tools/lib/traceevent: Man page for tep_parse_header_page()
>   tools/lib/traceevent: Man pages for tep_load_plugins() and
>     tep_unload_plugin()
>   tools/lib/traceevent: Man page for tep_data_lat_fmt()
>   tools/lib/traceevent: Man pages for tep_data_type(), tep_data_pid(),
>     tep_data_preempt_count() and tep_data_flags()
>   tools/lib/traceevent: Man pages for trace_seq_init() and
>     trace_seq_destroy()
>   tools/lib/traceevent: Man pages for trace_seq_do_fprintf() and
>     trace_seq_do_printf()
>   tools/lib/traceevent: Man pages for trace_seq_printf() and
>     trace_seq_vprintf()
>   tools/lib/traceevent: Man pages for trace_seq_putc() and
>     trace_seq_puts()
>   tools/lib/traceevent: Man pages for trace_seq_reset() and
>     trace_seq_terminate()
> 
>  tools/lib/traceevent/Documentation/Makefile   | 208 ++++++++++++++++++
>  .../traceevent/Documentation/asciidoc.conf    | 120 ++++++++++
>  .../Documentation/libtraceevent-commands.txt  | 130 +++++++++++
>  .../Documentation/libtraceevent-cpus.txt      |  77 +++++++
>  .../libtraceevent-endian_read.txt             |  76 +++++++
>  .../libtraceevent-event_find.txt              |  99 +++++++++
>  .../libtraceevent-event_list.txt              |  94 ++++++++
>  .../libtraceevent-event_print.txt             | 126 +++++++++++
>  .../Documentation/libtraceevent-events.txt    |  87 ++++++++
>  .../libtraceevent-field_find.txt              |  98 +++++++++
>  .../libtraceevent-field_get_val.txt           | 117 ++++++++++
>  .../libtraceevent-field_print.txt             | 120 ++++++++++
>  .../libtraceevent-field_read.txt              |  80 +++++++
>  .../Documentation/libtraceevent-fields.txt    |  99 +++++++++
>  .../libtraceevent-file_endian.txt             |  89 ++++++++
>  .../Documentation/libtraceevent-filter.txt    |  85 +++++++
>  .../libtraceevent-filter_add.txt              |  78 +++++++
>  .../libtraceevent-filter_error.txt            |  78 +++++++
>  .../libtraceevent-filter_event.txt            |  84 +++++++
>  .../libtraceevent-filter_match.txt            |  96 ++++++++
>  .../libtraceevent-filter_oper.txt             |  84 +++++++
>  .../libtraceevent-filter_show.txt             |  75 +++++++
>  .../libtraceevent-filter_trivial.txt          | 112 ++++++++++
>  .../Documentation/libtraceevent-func_find.txt |  88 ++++++++
>  .../libtraceevent-func_resolve.txt            |  96 ++++++++
>  .../Documentation/libtraceevent-handle.txt    | 101 +++++++++
>  .../libtraceevent-header_size.txt             |  73 ++++++
>  .../libtraceevent-host_endian.txt             |  91 ++++++++
>  .../libtraceevent-latency_format.txt          | 140 ++++++++++++
>  .../Documentation/libtraceevent-long_size.txt |  78 +++++++
>  .../Documentation/libtraceevent-page_size.txt |  80 +++++++
>  .../libtraceevent-parse_event.txt             |  90 ++++++++
>  .../libtraceevent-parse_head.txt              |  82 +++++++
>  .../Documentation/libtraceevent-plugins.txt   |  98 +++++++++
>  .../libtraceevent-record_lat.txt              |  77 +++++++
>  .../libtraceevent-record_parse.txt            | 134 +++++++++++
>  .../Documentation/libtraceevent-reg_clock.txt |  77 +++++++
>  .../libtraceevent-reg_event_handler.txt       | 129 +++++++++++
>  .../libtraceevent-reg_funcstr.txt             |  89 ++++++++
>  .../libtraceevent-reg_print_func.txt          | 128 +++++++++++
>  .../Documentation/libtraceevent-set_flag.txt  |  90 ++++++++
>  .../Documentation/libtraceevent-strerror.txt  |  78 +++++++
>  .../Documentation/libtraceevent-tseq.txt      |  76 +++++++
>  .../libtraceevent-tseq_doprint.txt            |  89 ++++++++
>  .../libtraceevent-tseq_print.txt              |  96 ++++++++
>  .../Documentation/libtraceevent-tseq_put.txt  |  89 ++++++++
>  .../libtraceevent-tseq_reset.txt              |  78 +++++++
>  .../Documentation/libtraceevent.txt           | 198 +++++++++++++++++
>  .../traceevent/Documentation/manpage-1.72.xsl |  14 ++
>  .../traceevent/Documentation/manpage-base.xsl |  35 +++
>  .../Documentation/manpage-bold-literal.xsl    |  17 ++
>  .../Documentation/manpage-normal.xsl          |  13 ++
>  .../Documentation/manpage-suppress-sp.xsl     |  21 ++
>  tools/lib/traceevent/Makefile                 |  28 +++
>  54 files changed, 4885 insertions(+)
>  create mode 100644 tools/lib/traceevent/Documentation/Makefile
>  create mode 100644 tools/lib/traceevent/Documentation/asciidoc.conf
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-commands.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-cpus.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-endian_read.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_find.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_list.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_print.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-events.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_find.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_get_val.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_print.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_read.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-fields.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-file_endian.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_add.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_error.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_event.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_match.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_oper.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_show.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_trivial.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_find.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_resolve.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-handle.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-header_size.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-host_endian.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-latency_format.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-long_size.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-page_size.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_event.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_head.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-plugins.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-record_lat.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-record_parse.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_clock.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_event_handler.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_funcstr.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_print_func.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-set_flag.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-strerror.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_doprint.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_print.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_put.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_reset.txt
>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent.txt
>  create mode 100644 tools/lib/traceevent/Documentation/manpage-1.72.xsl
>  create mode 100644 tools/lib/traceevent/Documentation/manpage-base.xsl
>  create mode 100644 tools/lib/traceevent/Documentation/manpage-bold-literal.xsl
>  create mode 100644 tools/lib/traceevent/Documentation/manpage-normal.xsl
>  create mode 100644 tools/lib/traceevent/Documentation/manpage-suppress-sp.xsl
>
Tzvetomir Stoyanov March 8, 2019, 3:47 p.m. UTC | #2
Hi Claudio,
On Fri, Mar 8, 2019 at 4:19 PM Claudio <claudio.fontana@gliwa.com> wrote:
>
>
>
> On 3/8/19 2:36 PM, Tzvetomir Stoyanov wrote:
> > [
> >  V4 changes:
> >   - Addressed Steven Rostedt comments
> >   - Removed trailing whitespace
> >
> >  V3 changes:
> >   - Combines all man page related patches into one series.
> >   - Removes any dependencies between man page related patches
> >     and patches related to the APIs implementation.
> > ]
> >
> > This patch series includes implementation of libtraceevent
> > man pages, describing all APIs of the library.
>
> Hello,
>
> is there a general man page entry that explains what libtracevent does?
>
> Maybe a manual section 3 or 7 entry like
>
> LIBTRACEEVENT(3)
>
> Maybe I have missed it? I think it would helpful, to avoid a disconnect between what a user might expect the library to do,
> vs what it actually does, to which use case it is suited for.
>

There is libtraceevent(3) man page, part of the first patch from the
series - "tools/lib/traceevent: Implement libtraceevent man pages ",
file tools/lib/traceevent/Documentation/libtraceevent.txt. It contains
summary of all APIs and short description of the library.

> Just as a case in point, at the moment these are the features which would be needed for me to use this
> library for the real time tracing requirements I am facing (response times, fixed allocation of cpu tracing usage/overhead):
>
> - resource usage description of APIs, which APIs allocate memory, open file descriptors and such,
>   some examples of resource lifetime would be helpful (pardon if they are there already and I missed them)

There are such description in the relevant man pages, together with
examples - look at tep_alloc man page for example. Any feedback is
welcome.

>
> - support for in-order delivery of events already correlated from multiple cores
>
> - network streaming support (maybe already working?)
>
> - support for getting TGID in addition to the COMM for each (sched) event in addition to the PID.
>
> Currently we have implemented all of this inside the application,
> but we could get rid of this complexity in the future if this library could provide this out of the box,
> without serious impacts on cpu overhead and latency requirements.
>
> Just a simple description of the overall goals of the library and common patterns,
> notes on resource usage, etc, would be enough I think to be able to quickly see if it fits the application use case..
>
> Thank you,
>
> Claudio
>

Steven could describe it in more details, but we work on common
tracing platform - set of libraries, which will expose the tracing
functionality, currently available for trace-cmd and kernelshark only,
to any application.

> >
> > Tzvetomir Stoyanov (46):
> >   tools/lib/traceevent: Implement libtraceevent man pages
> >   tools/lib/traceevent: Fix libtraceevent/Documentation Makefile
> >   tools/lib/traceevent: Add support for man pages with multiple names
> >   tools/lib/traceevent: libtraceevent Makefile "help" target
> >   tools/lib/traceevent: libtraceevent man pages for tep_handler related
> >     APIs
> >   tools/lib/traceevent: Man page for tep_get_header_page_size()
> >   tools/lib/traceevent: Man page for tep_get_cpus() and tep_set_cpus()
> >   tools/lib/traceevent: Man page for tep_is_file_bigendian() and
> >     tep_set_file_bigendian()
> >   tools/lib/traceevent: Man page for tep_is_host_bigendian() and
> >     tep_set_host_bigendian()
> >   tools/lib/traceevent: Man page for tep_is_latency_format() and
> >     tep_set_latency_format()
> >   tools/lib/traceevent: Man page for tep_get_page_size() and
> >     tep_set_page_size()
> >   tools/lib/traceevent: Man page for tep_strerror()
> >   tools/lib/traceevent: Man page for tep_register_trace_clock()
> >   tools/lib/traceevent: Man pages for tep_register_event_handler() and
> >     tep_unregister_event_handler()
> >   tools/lib/traceevent: Man pages for tep_register_function() and
> >     tep_register_print_string()
> >   tools/lib/traceevent: Man pages for tep_register_print_function() and
> >     tep_unregister_print_function()
> >   tools/lib/traceevent: Man page for tep_read_number()
> >   tools/lib/traceevent: Man pages for tep_find_event(),
> >     tep_find_event_by_name() and tep_find_event_by_record()
> >   tools/lib/traceevent: Man page for tep_list_events()
> >   tools/lib/traceevent: Man pages for tep_print_event(),
> >     tep_print_event_data(), tep_event_info(), tep_print_event_task() and
> >     tep_print_event_time()
> >   tools/lib/traceevent: Man pages tep_get_first_event() and
> >     tep_get_events_count()
> >   tools/lib/traceevent: Man pages tep_find_common_field(),
> >     tep_find_field() and tep_find_any_field()
> >   tools/lib/traceevent: Man pages tep_get_any_field_val(),
> >     tep_get_common_field_val(), tep_get_field_val() and
> >     tep_get_field_raw()
> >   tools/lib/traceevent: Man pages for tep_print_field(),
> >     tep_print_fields(), tep_print_num_field() and tep_print_func_field()
> >   tools/lib/traceevent: Man page for tep_read_number_field()
> >   tools/lib/traceevent: Man pages for tep_event_common_fields() and
> >     tep_event_fields()
> >   tools/lib/traceevent: Man pages for tep_filter_alloc(),
> >     tep_filter_free() and tep_filter_reset()
> >   tools/lib/traceevent: Man page for tep_filter_add_filter_str()
> >   tools/lib/traceevent: Man page for tep_filter_strerror()
> >   tools/lib/traceevent: Man pages for tep_event_filtered() and
> >     tep_filter_remove_event()
> >   tools/lib/traceevent: Man page for tep_filter_match()
> >   tools/lib/traceevent: Man pages for tep_filter_copy() and
> >     tep_filter_compare()
> >   tools/lib/traceevent: Man page for tep_filter_make_string()
> >   tools/lib/traceevent: Man pages for tep_filter_event_has_trivial(),
> >     tep_update_trivial() and tep_filter_clear_trivial()
> >   tools/lib/traceevent: Man pages for tep_find_function() and
> >     tep_find_function_address()
> >   tools/lib/traceevent: Man pages for tep_set_function_resolver() and
> >     tep_reset_function_resolver()
> >   tools/lib/traceevent: Man pages for tep_parse_event() and
> >     tep_parse_format()
> >   tools/lib/traceevent: Man page for tep_parse_header_page()
> >   tools/lib/traceevent: Man pages for tep_load_plugins() and
> >     tep_unload_plugin()
> >   tools/lib/traceevent: Man page for tep_data_lat_fmt()
> >   tools/lib/traceevent: Man pages for tep_data_type(), tep_data_pid(),
> >     tep_data_preempt_count() and tep_data_flags()
> >   tools/lib/traceevent: Man pages for trace_seq_init() and
> >     trace_seq_destroy()
> >   tools/lib/traceevent: Man pages for trace_seq_do_fprintf() and
> >     trace_seq_do_printf()
> >   tools/lib/traceevent: Man pages for trace_seq_printf() and
> >     trace_seq_vprintf()
> >   tools/lib/traceevent: Man pages for trace_seq_putc() and
> >     trace_seq_puts()
> >   tools/lib/traceevent: Man pages for trace_seq_reset() and
> >     trace_seq_terminate()
> >
> >  tools/lib/traceevent/Documentation/Makefile   | 208 ++++++++++++++++++
> >  .../traceevent/Documentation/asciidoc.conf    | 120 ++++++++++
> >  .../Documentation/libtraceevent-commands.txt  | 130 +++++++++++
> >  .../Documentation/libtraceevent-cpus.txt      |  77 +++++++
> >  .../libtraceevent-endian_read.txt             |  76 +++++++
> >  .../libtraceevent-event_find.txt              |  99 +++++++++
> >  .../libtraceevent-event_list.txt              |  94 ++++++++
> >  .../libtraceevent-event_print.txt             | 126 +++++++++++
> >  .../Documentation/libtraceevent-events.txt    |  87 ++++++++
> >  .../libtraceevent-field_find.txt              |  98 +++++++++
> >  .../libtraceevent-field_get_val.txt           | 117 ++++++++++
> >  .../libtraceevent-field_print.txt             | 120 ++++++++++
> >  .../libtraceevent-field_read.txt              |  80 +++++++
> >  .../Documentation/libtraceevent-fields.txt    |  99 +++++++++
> >  .../libtraceevent-file_endian.txt             |  89 ++++++++
> >  .../Documentation/libtraceevent-filter.txt    |  85 +++++++
> >  .../libtraceevent-filter_add.txt              |  78 +++++++
> >  .../libtraceevent-filter_error.txt            |  78 +++++++
> >  .../libtraceevent-filter_event.txt            |  84 +++++++
> >  .../libtraceevent-filter_match.txt            |  96 ++++++++
> >  .../libtraceevent-filter_oper.txt             |  84 +++++++
> >  .../libtraceevent-filter_show.txt             |  75 +++++++
> >  .../libtraceevent-filter_trivial.txt          | 112 ++++++++++
> >  .../Documentation/libtraceevent-func_find.txt |  88 ++++++++
> >  .../libtraceevent-func_resolve.txt            |  96 ++++++++
> >  .../Documentation/libtraceevent-handle.txt    | 101 +++++++++
> >  .../libtraceevent-header_size.txt             |  73 ++++++
> >  .../libtraceevent-host_endian.txt             |  91 ++++++++
> >  .../libtraceevent-latency_format.txt          | 140 ++++++++++++
> >  .../Documentation/libtraceevent-long_size.txt |  78 +++++++
> >  .../Documentation/libtraceevent-page_size.txt |  80 +++++++
> >  .../libtraceevent-parse_event.txt             |  90 ++++++++
> >  .../libtraceevent-parse_head.txt              |  82 +++++++
> >  .../Documentation/libtraceevent-plugins.txt   |  98 +++++++++
> >  .../libtraceevent-record_lat.txt              |  77 +++++++
> >  .../libtraceevent-record_parse.txt            | 134 +++++++++++
> >  .../Documentation/libtraceevent-reg_clock.txt |  77 +++++++
> >  .../libtraceevent-reg_event_handler.txt       | 129 +++++++++++
> >  .../libtraceevent-reg_funcstr.txt             |  89 ++++++++
> >  .../libtraceevent-reg_print_func.txt          | 128 +++++++++++
> >  .../Documentation/libtraceevent-set_flag.txt  |  90 ++++++++
> >  .../Documentation/libtraceevent-strerror.txt  |  78 +++++++
> >  .../Documentation/libtraceevent-tseq.txt      |  76 +++++++
> >  .../libtraceevent-tseq_doprint.txt            |  89 ++++++++
> >  .../libtraceevent-tseq_print.txt              |  96 ++++++++
> >  .../Documentation/libtraceevent-tseq_put.txt  |  89 ++++++++
> >  .../libtraceevent-tseq_reset.txt              |  78 +++++++
> >  .../Documentation/libtraceevent.txt           | 198 +++++++++++++++++
> >  .../traceevent/Documentation/manpage-1.72.xsl |  14 ++
> >  .../traceevent/Documentation/manpage-base.xsl |  35 +++
> >  .../Documentation/manpage-bold-literal.xsl    |  17 ++
> >  .../Documentation/manpage-normal.xsl          |  13 ++
> >  .../Documentation/manpage-suppress-sp.xsl     |  21 ++
> >  tools/lib/traceevent/Makefile                 |  28 +++
> >  54 files changed, 4885 insertions(+)
> >  create mode 100644 tools/lib/traceevent/Documentation/Makefile
> >  create mode 100644 tools/lib/traceevent/Documentation/asciidoc.conf
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-commands.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-cpus.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-endian_read.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_find.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_list.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_print.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-events.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_find.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_get_val.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_print.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_read.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-fields.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-file_endian.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_add.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_error.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_event.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_match.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_oper.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_show.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_trivial.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_find.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_resolve.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-handle.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-header_size.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-host_endian.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-latency_format.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-long_size.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-page_size.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_event.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_head.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-plugins.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-record_lat.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-record_parse.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_clock.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_event_handler.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_funcstr.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_print_func.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-set_flag.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-strerror.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_doprint.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_print.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_put.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_reset.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent.txt
> >  create mode 100644 tools/lib/traceevent/Documentation/manpage-1.72.xsl
> >  create mode 100644 tools/lib/traceevent/Documentation/manpage-base.xsl
> >  create mode 100644 tools/lib/traceevent/Documentation/manpage-bold-literal.xsl
> >  create mode 100644 tools/lib/traceevent/Documentation/manpage-normal.xsl
> >  create mode 100644 tools/lib/traceevent/Documentation/manpage-suppress-sp.xsl
> >
>
Claudio March 8, 2019, 6:52 p.m. UTC | #3
Hello Tzvetomir,

On 3/8/19 4:47 PM, Tzvetomir Stoyanov wrote:
> Hi Claudio,
> On Fri, Mar 8, 2019 at 4:19 PM Claudio <claudio.fontana@gliwa.com> wrote:
>>
>>
>>
>> On 3/8/19 2:36 PM, Tzvetomir Stoyanov wrote:
>>> [
>>>  V4 changes:
>>>   - Addressed Steven Rostedt comments
>>>   - Removed trailing whitespace
>>>
>>>  V3 changes:
>>>   - Combines all man page related patches into one series.
>>>   - Removes any dependencies between man page related patches
>>>     and patches related to the APIs implementation.
>>> ]
>>>
>>> This patch series includes implementation of libtraceevent
>>> man pages, describing all APIs of the library.
>>
>> Hello,
>>
>> is there a general man page entry that explains what libtracevent does?
>>
>> Maybe a manual section 3 or 7 entry like
>>
>> LIBTRACEEVENT(3)
>>
>> Maybe I have missed it? I think it would helpful, to avoid a disconnect between what a user might expect the library to do,
>> vs what it actually does, to which use case it is suited for.
>>
> 
> There is libtraceevent(3) man page, part of the first patch from the
> series - "tools/lib/traceevent: Implement libtraceevent man pages ",
> file tools/lib/traceevent/Documentation/libtraceevent.txt. It contains
> summary of all APIs and short description of the library.

Thank you very much, I completely missed it before, it was right there :-)

Ciao,

Claudio


>> Just as a case in point, at the moment these are the features which would be needed for me to use this
>> library for the real time tracing requirements I am facing (response times, fixed allocation of cpu tracing usage/overhead):
>>
>> - resource usage description of APIs, which APIs allocate memory, open file descriptors and such,
>>   some examples of resource lifetime would be helpful (pardon if they are there already and I missed them)
> 
> There are such description in the relevant man pages, together with
> examples - look at tep_alloc man page for example. Any feedback is
> welcome.
> 
>>
>> - support for in-order delivery of events already correlated from multiple cores
>>
>> - network streaming support (maybe already working?)
>>
>> - support for getting TGID in addition to the COMM for each (sched) event in addition to the PID.
>>
>> Currently we have implemented all of this inside the application,
>> but we could get rid of this complexity in the future if this library could provide this out of the box,
>> without serious impacts on cpu overhead and latency requirements.
>>
>> Just a simple description of the overall goals of the library and common patterns,
>> notes on resource usage, etc, would be enough I think to be able to quickly see if it fits the application use case..
>>
>> Thank you,
>>
>> Claudio
>>
> 
> Steven could describe it in more details, but we work on common
> tracing platform - set of libraries, which will expose the tracing
> functionality, currently available for trace-cmd and kernelshark only,
> to any application.
> 
>>>
>>> Tzvetomir Stoyanov (46):
>>>   tools/lib/traceevent: Implement libtraceevent man pages
>>>   tools/lib/traceevent: Fix libtraceevent/Documentation Makefile
>>>   tools/lib/traceevent: Add support for man pages with multiple names
>>>   tools/lib/traceevent: libtraceevent Makefile "help" target
>>>   tools/lib/traceevent: libtraceevent man pages for tep_handler related
>>>     APIs
>>>   tools/lib/traceevent: Man page for tep_get_header_page_size()
>>>   tools/lib/traceevent: Man page for tep_get_cpus() and tep_set_cpus()
>>>   tools/lib/traceevent: Man page for tep_is_file_bigendian() and
>>>     tep_set_file_bigendian()
>>>   tools/lib/traceevent: Man page for tep_is_host_bigendian() and
>>>     tep_set_host_bigendian()
>>>   tools/lib/traceevent: Man page for tep_is_latency_format() and
>>>     tep_set_latency_format()
>>>   tools/lib/traceevent: Man page for tep_get_page_size() and
>>>     tep_set_page_size()
>>>   tools/lib/traceevent: Man page for tep_strerror()
>>>   tools/lib/traceevent: Man page for tep_register_trace_clock()
>>>   tools/lib/traceevent: Man pages for tep_register_event_handler() and
>>>     tep_unregister_event_handler()
>>>   tools/lib/traceevent: Man pages for tep_register_function() and
>>>     tep_register_print_string()
>>>   tools/lib/traceevent: Man pages for tep_register_print_function() and
>>>     tep_unregister_print_function()
>>>   tools/lib/traceevent: Man page for tep_read_number()
>>>   tools/lib/traceevent: Man pages for tep_find_event(),
>>>     tep_find_event_by_name() and tep_find_event_by_record()
>>>   tools/lib/traceevent: Man page for tep_list_events()
>>>   tools/lib/traceevent: Man pages for tep_print_event(),
>>>     tep_print_event_data(), tep_event_info(), tep_print_event_task() and
>>>     tep_print_event_time()
>>>   tools/lib/traceevent: Man pages tep_get_first_event() and
>>>     tep_get_events_count()
>>>   tools/lib/traceevent: Man pages tep_find_common_field(),
>>>     tep_find_field() and tep_find_any_field()
>>>   tools/lib/traceevent: Man pages tep_get_any_field_val(),
>>>     tep_get_common_field_val(), tep_get_field_val() and
>>>     tep_get_field_raw()
>>>   tools/lib/traceevent: Man pages for tep_print_field(),
>>>     tep_print_fields(), tep_print_num_field() and tep_print_func_field()
>>>   tools/lib/traceevent: Man page for tep_read_number_field()
>>>   tools/lib/traceevent: Man pages for tep_event_common_fields() and
>>>     tep_event_fields()
>>>   tools/lib/traceevent: Man pages for tep_filter_alloc(),
>>>     tep_filter_free() and tep_filter_reset()
>>>   tools/lib/traceevent: Man page for tep_filter_add_filter_str()
>>>   tools/lib/traceevent: Man page for tep_filter_strerror()
>>>   tools/lib/traceevent: Man pages for tep_event_filtered() and
>>>     tep_filter_remove_event()
>>>   tools/lib/traceevent: Man page for tep_filter_match()
>>>   tools/lib/traceevent: Man pages for tep_filter_copy() and
>>>     tep_filter_compare()
>>>   tools/lib/traceevent: Man page for tep_filter_make_string()
>>>   tools/lib/traceevent: Man pages for tep_filter_event_has_trivial(),
>>>     tep_update_trivial() and tep_filter_clear_trivial()
>>>   tools/lib/traceevent: Man pages for tep_find_function() and
>>>     tep_find_function_address()
>>>   tools/lib/traceevent: Man pages for tep_set_function_resolver() and
>>>     tep_reset_function_resolver()
>>>   tools/lib/traceevent: Man pages for tep_parse_event() and
>>>     tep_parse_format()
>>>   tools/lib/traceevent: Man page for tep_parse_header_page()
>>>   tools/lib/traceevent: Man pages for tep_load_plugins() and
>>>     tep_unload_plugin()
>>>   tools/lib/traceevent: Man page for tep_data_lat_fmt()
>>>   tools/lib/traceevent: Man pages for tep_data_type(), tep_data_pid(),
>>>     tep_data_preempt_count() and tep_data_flags()
>>>   tools/lib/traceevent: Man pages for trace_seq_init() and
>>>     trace_seq_destroy()
>>>   tools/lib/traceevent: Man pages for trace_seq_do_fprintf() and
>>>     trace_seq_do_printf()
>>>   tools/lib/traceevent: Man pages for trace_seq_printf() and
>>>     trace_seq_vprintf()
>>>   tools/lib/traceevent: Man pages for trace_seq_putc() and
>>>     trace_seq_puts()
>>>   tools/lib/traceevent: Man pages for trace_seq_reset() and
>>>     trace_seq_terminate()
>>>
>>>  tools/lib/traceevent/Documentation/Makefile   | 208 ++++++++++++++++++
>>>  .../traceevent/Documentation/asciidoc.conf    | 120 ++++++++++
>>>  .../Documentation/libtraceevent-commands.txt  | 130 +++++++++++
>>>  .../Documentation/libtraceevent-cpus.txt      |  77 +++++++
>>>  .../libtraceevent-endian_read.txt             |  76 +++++++
>>>  .../libtraceevent-event_find.txt              |  99 +++++++++
>>>  .../libtraceevent-event_list.txt              |  94 ++++++++
>>>  .../libtraceevent-event_print.txt             | 126 +++++++++++
>>>  .../Documentation/libtraceevent-events.txt    |  87 ++++++++
>>>  .../libtraceevent-field_find.txt              |  98 +++++++++
>>>  .../libtraceevent-field_get_val.txt           | 117 ++++++++++
>>>  .../libtraceevent-field_print.txt             | 120 ++++++++++
>>>  .../libtraceevent-field_read.txt              |  80 +++++++
>>>  .../Documentation/libtraceevent-fields.txt    |  99 +++++++++
>>>  .../libtraceevent-file_endian.txt             |  89 ++++++++
>>>  .../Documentation/libtraceevent-filter.txt    |  85 +++++++
>>>  .../libtraceevent-filter_add.txt              |  78 +++++++
>>>  .../libtraceevent-filter_error.txt            |  78 +++++++
>>>  .../libtraceevent-filter_event.txt            |  84 +++++++
>>>  .../libtraceevent-filter_match.txt            |  96 ++++++++
>>>  .../libtraceevent-filter_oper.txt             |  84 +++++++
>>>  .../libtraceevent-filter_show.txt             |  75 +++++++
>>>  .../libtraceevent-filter_trivial.txt          | 112 ++++++++++
>>>  .../Documentation/libtraceevent-func_find.txt |  88 ++++++++
>>>  .../libtraceevent-func_resolve.txt            |  96 ++++++++
>>>  .../Documentation/libtraceevent-handle.txt    | 101 +++++++++
>>>  .../libtraceevent-header_size.txt             |  73 ++++++
>>>  .../libtraceevent-host_endian.txt             |  91 ++++++++
>>>  .../libtraceevent-latency_format.txt          | 140 ++++++++++++
>>>  .../Documentation/libtraceevent-long_size.txt |  78 +++++++
>>>  .../Documentation/libtraceevent-page_size.txt |  80 +++++++
>>>  .../libtraceevent-parse_event.txt             |  90 ++++++++
>>>  .../libtraceevent-parse_head.txt              |  82 +++++++
>>>  .../Documentation/libtraceevent-plugins.txt   |  98 +++++++++
>>>  .../libtraceevent-record_lat.txt              |  77 +++++++
>>>  .../libtraceevent-record_parse.txt            | 134 +++++++++++
>>>  .../Documentation/libtraceevent-reg_clock.txt |  77 +++++++
>>>  .../libtraceevent-reg_event_handler.txt       | 129 +++++++++++
>>>  .../libtraceevent-reg_funcstr.txt             |  89 ++++++++
>>>  .../libtraceevent-reg_print_func.txt          | 128 +++++++++++
>>>  .../Documentation/libtraceevent-set_flag.txt  |  90 ++++++++
>>>  .../Documentation/libtraceevent-strerror.txt  |  78 +++++++
>>>  .../Documentation/libtraceevent-tseq.txt      |  76 +++++++
>>>  .../libtraceevent-tseq_doprint.txt            |  89 ++++++++
>>>  .../libtraceevent-tseq_print.txt              |  96 ++++++++
>>>  .../Documentation/libtraceevent-tseq_put.txt  |  89 ++++++++
>>>  .../libtraceevent-tseq_reset.txt              |  78 +++++++
>>>  .../Documentation/libtraceevent.txt           | 198 +++++++++++++++++
>>>  .../traceevent/Documentation/manpage-1.72.xsl |  14 ++
>>>  .../traceevent/Documentation/manpage-base.xsl |  35 +++
>>>  .../Documentation/manpage-bold-literal.xsl    |  17 ++
>>>  .../Documentation/manpage-normal.xsl          |  13 ++
>>>  .../Documentation/manpage-suppress-sp.xsl     |  21 ++
>>>  tools/lib/traceevent/Makefile                 |  28 +++
>>>  54 files changed, 4885 insertions(+)
>>>  create mode 100644 tools/lib/traceevent/Documentation/Makefile
>>>  create mode 100644 tools/lib/traceevent/Documentation/asciidoc.conf
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-commands.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-cpus.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-endian_read.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_find.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_list.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-event_print.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-events.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_find.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_get_val.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_print.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-field_read.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-fields.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-file_endian.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_add.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_error.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_event.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_match.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_oper.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_show.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-filter_trivial.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_find.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-func_resolve.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-handle.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-header_size.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-host_endian.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-latency_format.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-long_size.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-page_size.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_event.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-parse_head.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-plugins.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-record_lat.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-record_parse.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_clock.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_event_handler.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_funcstr.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-reg_print_func.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-set_flag.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-strerror.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_doprint.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_print.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_put.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent-tseq_reset.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/libtraceevent.txt
>>>  create mode 100644 tools/lib/traceevent/Documentation/manpage-1.72.xsl
>>>  create mode 100644 tools/lib/traceevent/Documentation/manpage-base.xsl
>>>  create mode 100644 tools/lib/traceevent/Documentation/manpage-bold-literal.xsl
>>>  create mode 100644 tools/lib/traceevent/Documentation/manpage-normal.xsl
>>>  create mode 100644 tools/lib/traceevent/Documentation/manpage-suppress-sp.xsl
>>>
>>
> 
>
Steven Rostedt March 12, 2019, 3:35 p.m. UTC | #4
On Fri, 8 Mar 2019 15:47:14 +0000
Tzvetomir Stoyanov <tstoyanov@vmware.com> wrote:

> Steven could describe it in more details, but we work on common
> tracing platform - set of libraries, which will expose the tracing
> functionality, currently available for trace-cmd and kernelshark only,
> to any application.

[ Just came back from SCaLE 17x conference ]

Note, the libtraceevent is currently just a way to parse the data read
by the Linux kernel trace events. The format files exist in the tracefs
file system under events/<system>/<event>/format (e.g.
events/sched/sched_switch/format).

The library is used by trace-cmd, perf, powertop and mce utils.
Currently, each has their own copy. We are working on making this into
a shared library where the code no longer needs to be duplicated.

There's also going to be an effort to create libftrace, that will take
the functionality of trace-cmd and move it into a library, such that
any tool can start ftrace tracing, and record data. But that's not going
to happen until after we finish getting libtraceevent out.

-- Steve
Claudio March 13, 2019, 11:24 a.m. UTC | #5
Hi Steve,

On 3/12/19 4:35 PM, Steven Rostedt wrote:
> On Fri, 8 Mar 2019 15:47:14 +0000
> Tzvetomir Stoyanov <tstoyanov@vmware.com> wrote:
> 
>> Steven could describe it in more details, but we work on common
>> tracing platform - set of libraries, which will expose the tracing
>> functionality, currently available for trace-cmd and kernelshark only,
>> to any application.
> 
> [ Just came back from SCaLE 17x conference ]
> 
> Note, the libtraceevent is currently just a way to parse the data read
> by the Linux kernel trace events. The format files exist in the tracefs
> file system under events/<system>/<event>/format (e.g.
> events/sched/sched_switch/format).
> 
> The library is used by trace-cmd, perf, powertop and mce utils.
> Currently, each has their own copy. We are working on making this into
> a shared library where the code no longer needs to be duplicated.

 
> There's also going to be an effort to create libftrace, that will take
> the functionality of trace-cmd and move it into a library, such that
> any tool can start ftrace tracing, and record data. But that's not going
> to happen until after we finish getting libtraceevent out.
> 
> -- Steve
> 

thank you for this background information, this solves my confusion at the moment.

I currently have my own code that parses the data, based on the event/format,
so I will not replace it immediately, I think that the really valuable replacement
would be the libftrace follow up project.

Ciao,

CLaudio