'\" t
.\" Title: libtracefs
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 01/17/2023
.\" Manual: libtracefs Manual
.\" Source: libtracefs 1.6.4
.\" Language: English
.\"
.TH "LIBTRACEFS" "3" "01/17/2023" "libtracefs 1\&.6\&.4" "libtracefs Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
libtracefs \- Linux kernel trace file system library
.SH "SYNOPSIS"
.sp
.nf
\fB#include \fR
Locations of tracing files and directories:
char *\fBtracefs_get_tracing_file\fR(const char *\fIname\fR);
void \fBtracefs_put_tracing_file\fR(char *\fIname\fR);
const char *\fBtracefs_tracing_dir\fR(void);
const char *\fBtracefs_debug_dir\fR(void);
int \fBtracefs_set_tracing_dir\fR(char *\fItracing_dir\fR)
int \fBtracefs_tracing_dir_is_mounted\fR(bool \fImount\fR, const char **\fIpath\fR);
Trace instances:
struct tracefs_instance *\fBtracefs_instance_create\fR(const char *\fIname\fR);
int \fBtracefs_instance_destroy\fR(struct tracefs_instance *\fIinstance\fR);
struct tracefs_instance *\fBtracefs_instance_alloc\fR(const char *\fItracing_dir\fR, const char *\fIname\fR);
void \fBtracefs_instance_free\fR(struct tracefs_instance *\fIinstance\fR);
char **\fBtracefs_instances\fR(const char *\fIregex\fR);
bool \fBtracefs_instance_is_new\fR(struct tracefs_instance *\fIinstance\fR);
bool \fBtracefs_file_exists\fR(struct tracefs_instance *\fIinstance\fR, char *\fIname\fR);
bool \fBtracefs_dir_exists\fR(struct tracefs_instance *\fIinstance\fR, char *\fIname\fR);
char *\fBtracefs_instance_get_file\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfile\fR);
char *\fBtracefs_instance_get_dir\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_instance_file_open\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfile\fR, int \fImode\fR);
int \fBtracefs_instance_file_write\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfile\fR, const char *\fIstr\fR);
int \fBtracefs_instance_file_append\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfile\fR, const char *\fIstr\fR);
int \fBtracefs_instance_file_clear\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfile\fR);
char *\fBtracefs_instance_file_read\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfile\fR, int *\fIpsize\fR);
int \fBtracefs_instance_file_read_number\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfile\fR, long long int *\fIres\fR);
const char *\fBtracefs_instance_get_name\fR(struct tracefs_instance *\fIinstance\fR);
const char *\fBtracefs_instance_get_trace_dir\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_instances_walk\fR(int (*\fIcallback\fR)(const char *, void *), void *\fIcontext)\fR;
bool \fBtracefs_instance_exists\fR(const char *\fIname\fR);
int \fBtracefs_instance_set_affinity\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIcpu_str\fR);
int \fBtracefs_instance_set_affinity_set\fR(struct tracefs_instance *\fIinstance\fR, cpu_set_t *\fIset\fR, size_t \fIset_size\fR);
int \fBtracefs_instance_set_affinity_raw\fR(struct tracefs_instance *\fIinstance\fR, const char *\fImask\fR);
char *\fBtracefs_instance_get_affinity\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_instance_get_affinity_set\fR(struct tracefs_instance *\fIinstance\fR, cpu_set_t *\fIset\fR, size_t \fIset_size\fR);
char *\fBtracefs_instance_get_affinity_raw\fR(struct tracefs_instance *\fIinstance\fR);
size_t \fBtracefs_instance_get_buffer_size\fR(struct tracefs_instance *\fIinstance\fR, int \fIcpu\fR);
int \fBtracefs_instance_set_buffer_size\fR(struct tracefs_instance *\fIinstance\fR, size_t \fIsize\fR, int \fIcpu\fR);
Trace events:
char **\fBtracefs_event_systems\fR(const char *\fItracing_dir\fR);
char **\fBtracefs_system_events\fR(const char *\fItracing_dir\fR, const char *\fIsystem\fR);
int \fBtracefs_event_enable\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIsystem\fR,
const char *\fIevent\fR);
int \fBtracefs_event_disable\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIsystem\fR,
const char *\fIevent\fR);
enum tracefs_enable_state \fBtracefs_event_is_enabled\fR(struct tracefs_instance *\fIinstance\fR,
const char *\fIsystem\fR, const char *\fIevent\fR);
int \fBtracefs_iterate_raw_events\fR(struct tep_handle *\fItep\fR, struct tracefs_instance *\fIinstance\fR, cpu_set_t *\fIcpus\fR, int \fIcpu_size\fR, int (*\fIcallback\fR)(struct tep_event *, struct tep_record *, int, void *), void *\fIcallback_context\fR);
void \fBtracefs_iterate_stop\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_follow_event\fR(struct tep_handle *\fItep\fR, struct tracefs_instance *\fIinstance\fR,
const char *\fIsystem\fR, const char *\fIevent_name\fR,
int (*\fIcallback\fR)(struct tep_event *,
struct tep_record *,
int, void *),
void *\fIcallback_data\fR);
int \fBtracefs_follow_missed_events\fR(struct tracefs_instance *\fIinstance\fR,
int (*\fIcallback\fR)(struct tep_event *,
struct tep_record *,
int, void *),
void *\fIcallback_data\fR);
struct tep_handle *\fBtracefs_local_events\fR(const char *\fItracing_dir\fR);
struct tep_handle *\fBtracefs_local_events_system\fR(const char *\fItracing_dir\fR, const char * const *\fIsys_names\fR);
int \fBtracefs_fill_local_events\fR(const char *\fItracing_dir\fR, struct tep_handle *\fItep\fR, int *\fIparsing_failures\fR);
int \fBtracefs_load_cmdlines\fR(const char *\fItracing_dir\fR, struct tep_handle *\fItep\fR);
char *\fBtracefs_event_get_file\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIsystem\fR, const char *\fIevent\fR,
const char *\fIfile\fR);
char *\fBtracefs_event_file_read\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIsystem\fR, const char *\fIevent\fR,
const char *\fIfile\fR, int *\fIpsize\fR);
int \fBtracefs_event_file_write\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIsystem\fR, const char *\fIevent\fR,
const char *\fIfile\fR, const char *\fIstr\fR);
int \fBtracefs_event_file_append\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIsystem\fR, const char *\fIevent\fR,
const char *\fIfile\fR, const char *\fIstr\fR);
int \fBtracefs_event_file_clear\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIsystem\fR, const char *\fIevent\fR,
const char *\fIfile\fR);
bool \fBtracefs_event_file_exists\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIsystem\fR, const char *\fIevent\fR,
Event filters:
int \fBtracefs_filter_string_append\fR(struct tep_event *\fIevent\fR, char **\fIfilter\fR,
struct tracefs_filter \fItype\fR, const char *\fIfield\fR,
enum tracefs_synth_compare \fIcompare\fR, const char *\fIval\fR);
int \fBtracefs_filter_string_verify\fR(struct tep_event *\fIevent\fR, const char *\fIfilter\fR, char **\fIerr\fR);
int \fBtracefs_event_filter_apply\fR(struct tracefs_instance *\fIinstance\fR, struct tep_event *\fIevent\fR, const char *\fIfilter\fR);
int \fBtracefs_event_filter_clear\fR(struct tracefs_instance *\fIinstance\fR, struct tep_event *\fIevent\fR);
Function filters:
int \fBtracefs_function_filter\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfilter\fR, const char *\fImodule\fR, int \fIflags\fR);
int \fBtracefs_function_notrace\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfilter\fR, const char *\fImodule\fR, int \fIflags\fR);
int \fBtracefs_filter_functions\fR(const char *\fIfilter\fR, const char *\fImodule\fR, char ***\fIlist\fR);
Trace helper functions:
void \fBtracefs_list_free\fR(char **\fIlist\fR);
char **\fBtracefs_list_add\fR(char \fB*\fR\fB\fIlist\fR\fR\fB, const char *\fR\fB\fIstring\fR\fR\fB);
int *tracefs_list_size\fR(char **\fIlist\fR);
char *\fBtracefs_get_clock\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_trace_is_on\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_trace_on\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_trace_off\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_trace_on_get_fd\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_trace_on_fd\fR(int \fIfd\fR);
int \fBtracefs_trace_off_fd\fR(int \fIfd\fR);
Trace stream:
ssize_t \fBtracefs_trace_pipe_stream\fR(int \fIfd\fR, struct tracefs_instance *\fIinstance\fR, int \fIflags\fR);
ssize_t \fBtracefs_trace_pipe_print\fR(struct tracefs_instance *\fIinstance\fR, int \fIflags\fR);
void \fBtracefs_trace_pipe_stop\fR(struct tracefs_instance *\fIinstance\fR);
Trace options:
const struct tracefs_options_mask *\fBtracefs_options_get_supported\fR(struct tracefs_instance *\fIinstance\fR);
bool \fBtracefs_option_is_supported\fR(struct tracefs_instance *\fIinstance\fR, enum tracefs_option_id \fIid\fR);
const struct tracefs_options_mask *\fBtracefs_options_get_enabled\fR(struct tracefs_instance *\fIinstance\fR);
bool \fBtracefs_option_is_enabled\fR(struct tracefs_instance *\fIinstance\fR, enum tracefs_option_id \fIid\fR);
bool \fBtracefs_option_mask_is_set\fR(const struct tracefs_options_mask \fBoptions, enum tracefs_option_id id);
int *tracefs_option_enable\fR(struct tracefs_instance *\fIinstance\fR, enum tracefs_option_id \fIid\fR);
int \fBtracefs_option_disable\fR(struct tracefs_instance *\fIinstance\fR, enum tracefs_option_id \fIid\fR);
const char *\fBtracefs_option_name\fR(enum tracefs_option_id \fIid\fR);
enum tracefs_option_id \fBtracefs_option_id\fR(const char *\fIname\fR);
Ftrace tracers:
char **\fBtracefs_tracers\fR(const char *\fItracing_dir\fR);
bool \fBtracefs_tracer_available\fR(const char *\fItracing_dir\fR, const char *\fItracer\fR);
int \fBtracefs_tracer_set\fR(struct tracefs_instance *\fIinstance\fR, enum tracefs_tracers \fItracer\fR);
int \fBtracefs_tracer_set\fR(struct tracefs_instance *\fIinstance\fR, enum tracefs_tracers \fItracer\fR, const char *\fIname\fR);
int \fBtracefs_tracer_clear\fR(struct tracefs_instance *\fIinstance\fR);
Writing data in the trace buffer:
int \fBtracefs_print_init\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_printf\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfmt\fR, \fI\&...\fR);
int \fBtracefs_vprintf\fR(struct tracefs_instance *\fIinstance\fR, const char *\fIfmt\fR, va_list \fIap\fR);
void \fBtracefs_print_close\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_binary_init\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_binary_write\fR(struct tracefs_instance *\fIinstance\fR, void *\fIdata\fR, int \fIlen\fR);
void \fBtracefs_binary_close\fR(struct tracefs_instance *\fIinstance\fR);
Control library logs:
int \fBtracefs_set_loglevel\fR(enum tep_loglevel \fIlevel\fR);
Dynamic event generic APIs:
struct \fBtracefs_dynevent\fR;
enum \fBtracefs_dynevent_type\fR;
int \fBtracefs_dynevent_create\fR(struct tracefs_dynevent *\fIdevent\fR);
int \fBtracefs_dynevent_destroy\fR(struct tracefs_dynevent *\fIdevent\fR, bool \fIforce\fR);
int \fBtracefs_dynevent_destroy_all\fR(unsigned int \fItypes\fR, bool \fIforce\fR);
void \fBtracefs_dynevent_free\fR(struct tracefs_dynevent *\fIdevent\fR);
void \fBtracefs_dynevent_list_free\fR(struct tracefs_dynevent **\fIevents\fR);
struct tracefs_dynevent *\fBtracefs_dynevent_get\fR(enum tracefs_dynevent_type \fItype\fR, const char *\fIsystem\fR, const char *\fIevent\fR);
struct tracefs_dynevent **\fBtracefs_dynevent_get_all\fR(unsigned int \fItypes\fR, const char *\fIsystem\fR);
enum tracefs_dynevent_type \fBtracefs_dynevent_info\fR(struct tracefs_dynevent *\fIdynevent\fR, char **\fIsystem\fR, char **\fIevent\fR, char **\fIprefix\fR, char **\fIaddr\fR, char **\fIformat\fR);
struct tep_event *\fBtracefs_dynevent_get_event\fR(struct tep_handle *\fItep\fR, struct tracefs_dynevent *\fIdynevent\fR);
Even probes (eprobes):
struct tracefs_dynevent * \fBtracefs_eprobe_alloc\fR(const char *\fIsystem\fR, const char *\fIevent\fR, const char *\fItarget_system\fR, const char *\fItarget_event\fR, const char *\fIfetchargs\fR);
Uprobes, Kprobes and Kretprobes:
struct tracefs_dynevent * \fBtracefs_kprobe_alloc\fR(const char *\fIsystem\fR, const char *\fIevent\fR, const char *\fIaddr\fR, const char *\fIformat\fR);
struct tracefs_dynevent * \fBtracefs_kretprobe_alloc\fR(const char *\fIsystem\fR, const char *\fIevent\fR, const char *\fIaddr\fR, const char *\fIformat\fR, unsigned int \fImax\fR);
int \fBtracefs_kprobe_raw\fR(const char *\fIsystem\fR, const char *\fIevent\fR, const char *\fIaddr\fR, const char *\fIformat\fR);
int \fBtracefs_kretprobe_raw\fR(const char *\fIsystem\fR, const char *\fIevent\fR, const char *\fIaddr\fR, const char *\fIformat\fR);
\fBtracefs_uprobe_alloc\fR(const char *\fIsystem\fR, const char *\fIevent\fR,
const char *\fIfile\fR, unsigned long long \fIoffset\fR, const char *\fIfetchargs\fR)
\fBtracefs_uretprobe_alloc\fR(const char *\fIsystem\fR, const char *\fIevent\fR,
const char *\fIfile\fR, unsigned long long \fIoffset\fR, const char *\fIfetchargs\fR);
Synthetic events:
struct tracefs_synth *\fBtracefs_sql\fR(struct tep_handle *\fItep\fR, const char *\fIname\fR,
const char *\fIsql_buffer\fR, char **\fIerr\fR);
struct tracefs_synth *\fBtracefs_synth_alloc\fR(struct tep_handle *\fItep\fR,
const char *\fIname\fR,
const char *\fIstart_system\fR,
const char *\fIstart_event\fR,
const char *\fIend_system\fR,
const char *\fIend_event\fR,
const char *\fIstart_match_field\fR,
const char *\fIend_match_field\fR,
const char *\fImatch_name\fR);
int \fBtracefs_synth_add_match_field\fR(struct tracefs_synth *\fIsynth\fR,
const char *\fIstart_match_field\fR,
const char *\fIend_match_field\fR,
const char *\fIname\fR);
int \fBtracefs_synth_add_compare_field\fR(struct tracefs_synth *\fIsynth\fR,
const char *\fIstart_compare_field\fR,
const char *\fIend_compare_field\fR,
enum tracefs_synth_calc \fIcalc\fR,
const char *\fIname\fR);
int \fBtracefs_synth_add_start_field\fR(struct tracefs_synth *\fIsynth\fR,
const char *\fIstart_field\fR,
const char *\fIname\fR);
int \fBtracefs_synth_add_end_field\fR(struct tracefs_synth *\fIsynth\fR,
const char *\fIend_field\fR,
const char *\fIname\fR);
int \fBtracefs_synth_append_start_filter\fR(struct tracefs_synth *\fIsynth\fR,
struct tracefs_filter \fItype\fR,
const char *\fIfield\fR,
enum tracefs_synth_compare \fIcompare\fR,
const char *\fIval\fR);
int \fBtracefs_synth_append_end_filter\fR(struct tracefs_synth *\fIsynth\fR,
struct tracefs_filter \fItype\fR,
const char *\fIfield\fR,
enum tracefs_synth_compare \fIcompare\fR,
const char *\fIval\fR);
void \fBtracefs_synth_free\fR(struct tracefs_synth *\fIsynth\fR);
int \fBtracefs_synth_create\fR(struct tracefs_synth *\fIsynth\fR);
int \fBtracefs_synth_destroy\fR(struct tracefs_synth *\fIsynth\fR);
int \fBtracefs_synth_echo_cmd\fR(struct trace_seq *\fIseq\fR, struct tracefs_synth *\fIsynth\fR);
bool \fBtracefs_synth_complete\fR(struct tracefs_synth *\fIsynth\fR);
struct tracefs_hist *\fBtracefs_synth_get_start_hist\fR(struct tracefs_synth *\fIsynth\fR);
int \fBtracefs_synth_trace\fR(struct tracefs_synth *\fIsynth\fR,
enum tracefs_synth_handler \fItype\fR, const char *\fIvar\fR);
int \fBtracefs_synth_snapshot\fR(struct tracefs_synth *\fIsynth\fR,
enum tracefs_synth_handler \fItype\fR, const char *\fIvar\fR);
int \fBtracefs_synth_save\fR(struct tracefs_synth *\fIsynth\fR,
enum tracefs_synth_handler \fItype\fR, const char *\fIvar\fR,
char **\fIsave_fields\fR);
const char *\fBtracefs_synth_get_name\fR(struct tracefs_synth *\fIsynth\fR);
int \fBtracefs_synth_raw_fmt\fR(struct trace_seq *\fIseq\fR, struct tracefs_synth *\fIsynth\fR);
const char *\fBtracefs_synth_show_event\fR(struct tracefs_synth *\fIsynth\fR);
const char *\fBtracefs_synth_show_start_hist\fR(struct tracefs_synth *\fIsynth\fR);
const char *\fBtracefs_synth_show_end_hist\fR(struct tracefs_synth *\fIsynth\fR);
struct tep_event *\fBtracefs_synth_get_event\fR(struct tep_handle *\fItep\fR, struct tracefs_synth *\fIsynth\fR);
Ftrace errors reporting:
char *\fBtracefs_error_last\fR(struct tracefs_instance *\fIinstance\fR);
char *\fBtracefs_error_all\fR(struct tracefs_instance *\fIinstance\fR);
int \fBtracefs_error_clear\fR(struct tracefs_instance *\fIinstance\fR);
Histograms:
struct tracefs_hist *\fBtracefs_hist_alloc\fR(struct tracefs_tep * \fItep\fR,
const char *\fIsystem\fR, const char *\fIevent\fR,
const char *\fIkey\fR, enum tracefs_hist_key_type \fItype\fR);
struct tracefs_hist *\fBtracefs_hist_alloc_2d\fR(struct tracefs_tep * \fItep\fR,
const char *\fIsystem\fR, const char *\fIevent\fR,
const char *\fIkey1\fR, enum tracefs_hist_key_type \fItype1\fR,
const char *\fIkey2\fR, enum tracefs_hist_key_type \fItype2\fR));
struct tracefs_hist *\fBtracefs_hist_alloc_nd\fR(struct tracefs_tep * \fItep\fR,
const char *\fIsystem\fR, const char *\fIevent\fR,
struct tracefs_hist_axis *\fIaxes\fR);
struct tracefs_hist *\fBtracefs_hist_alloc_nd_cnt\fR(struct tep_handle *\fItep\fR,
const char *\fIsystem\fR, const char *\fIevent_name\fR,
struct tracefs_hist_axis_cnt *\fIaxes\fR);
void \fBtracefs_hist_free\fR(struct tracefs_hist *\fIhist\fR);
int \fBtracefs_hist_add_key\fR(struct tracefs_hist *\fIhist\fR, const char *\fIkey\fR,
enum tracefs_hist_key_type \fItype\fR);
int \fBtracefs_hist_add_key_cnt\fR(struct tracefs_hist *\fIhist\fR, const char *\fIkey\fR,
enum tracefs_hist_key_type \fItype\fR, int \fIcnt\fR);
int \fBtracefs_hist_add_value\fR(struct tracefs_hist *\fIhist\fR, const char *\fIvalue\fR);
int \fBtracefs_hist_add_sort_key\fR(struct tracefs_hist *\fIhist\fR,
const char *\fIsort_key\fR);
int \fBtracefs_hist_set_sort_key\fR(struct tracefs_hist *\fIhist\fR,
const char *\fIsort_key\fR, \fI\&...\fR);
int \fBtracefs_hist_sort_key_direction\fR(struct tracefs_hist *\fIhist\fR,
const char *\fIsort_key\fR,
enum tracefs_hist_sort_direction \fIdir\fR);
int \fBtracefs_hist_add_name\fR(struct tracefs_hist *\fIhist\fR, const char *\fIname\fR);
int \fBtracefs_hist_append_filter\fR(struct tracefs_hist *\fIhist\fR,
enum tracefs_filter \fItype\fR,
const char *\fIfield\fR,
enum tracefs_compare \fIcompare\fR,
const char *\fIval\fR);
int \fBtracefs_hist_echo_cmd\fR(struct trace_seq *\fIs\fR, struct tracefs_instance *\fIinstance\fR,
struct tracefs_hist *\fIhist\fR,
enum tracefs_hist_command \fIcommand\fR);
int \fBtracefs_hist_command\fR(struct tracefs_instance *\fIinstance\fR,
struct tracefs_hist *\fIhist\fR,
enum tracefs_hist_command \fIcommand\fR);
const char *\fBtracefs_hist_get_name\fR(struct tracefs_hist *\fIhist\fR);
const char *\fBtracefs_hist_get_event\fR(struct tracefs_hist *\fIhist\fR);
const char *\fBtracefs_hist_get_system\fR(struct tracefs_hist *\fIhist\fR);
int \fBtracefs_hist_start\fR(struct tracefs_instance *\fIinstance\fR, struct tracefs_hist *\fIhist\fR);
int \fBtracefs_hist_destroy\fR(struct tracefs_instance *\fIinstance\fR, struct tracefs_hist *\fIhist\fR);
int \fBtracefs_hist_pause\fR(struct tracefs_instance *\fIinstance\fR, struct tracefs_hist *\fIhist\fR);
int \fBtracefs_hist_continue\fR(struct tracefs_instance *\fIinstance\fR, struct tracefs_hist *\fIhist\fR);
int \fBtracefs_hist_reset\fR(struct tracefs_instance *\fIinstance\fR, struct tracefs_hist *\fIhist\fR);
Recording of trace_pipe_raw files:
struct tracefs_cpu *\fBtracefs_cpu_open\fR(struct tracefs_instance *\fIinstance\fR,
int \fIcpu\fR, bool \fInonblock\fR);
struct tracefs_cpu *\fBtracefs_cpu_alloc_fd\fR(int \fIfd\fR, int \fIsubbuf_size\fR, bool \fInonblock\fR);
void \fBtracefs_cpu_close\fR(struct tracefs_cpu *\fItcpu\fR);
void \fBtracefs_cpu_free_fd\fR(struct tracefs_cpu *\fItcpu\fR);
int \fBtracefs_cpu_read_size\fR(struct tracefs_cpu *\fItcpu\fR);
int \fBtracefs_cpu_read\fR(struct tracefs_cpu *\fItcpu\fR, void *\fIbuffer\fR, bool \fInonblock\fR);
int \fBtracefs_cpu_buffered_read\fR(struct tracefs_cpu *\fItcpu\fR, void *\fIbuffer\fR, bool \fInonblock\fR);
int \fBtracefs_cpu_write\fR(struct tracefs_cpu *\fItcpu\fR, int \fIwfd\fR, bool \fInonblock\fR);
int \fBtracefs_cpu_stop\fR(struct tracefs_cpu *\fItcpu\fR);
int \fBtracefs_cpu_flush\fR(struct tracefs_cpu *\fItcpu\fR, void *\fIbuffer\fR);
int \fBtracefs_cpu_flush_write\fR(struct tracefs_cpu *\fItcpu\fR, int \fIwfd\fR);
int \fBtracefs_cpu_pipe\fR(struct tracefs_cpu *\fItcpu\fR, int \fIwfd\fR, bool \fInonblock\fR);
.fi
.SH "DESCRIPTION"
.sp
The libtracefs(3) library provides APIs to access kernel trace file system\&.
.SH "FILES"
.sp
.if n \{\
.RS 4
.\}
.nf
\fBtracefs\&.h\fR
Header file to include in order to have access to the library APIs\&.
\fB\-ltracefs\fR
Linker switch to add when building a program that uses the library\&.
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.sp
\fBlibtraceevent\fR(3), \fBtrace\-cmd\fR(1)
.SH "AUTHOR"
.sp
.if n \{\
.RS 4
.\}
.nf
\fBSteven Rostedt\fR <\m[blue]\fBrostedt@goodmis\&.org\fR\m[]\&\s-2\u[1]\d\s+2>
\fBTzvetomir Stoyanov\fR <\m[blue]\fBtz\&.stoyanov@gmail\&.com\fR\m[]\&\s-2\u[2]\d\s+2>
.fi
.if n \{\
.RE
.\}
.SH "REPORTING BUGS"
.sp
Report bugs to <\m[blue]\fBlinux\-trace\-devel@vger\&.kernel\&.org\fR\m[]\&\s-2\u[3]\d\s+2>
.SH "LICENSE"
.sp
libtracefs is Free Software licensed under the GNU LGPL 2\&.1
.SH "RESOURCES"
.sp
\m[blue]\fBhttps://git\&.kernel\&.org/pub/scm/libs/libtrace/libtracefs\&.git/\fR\m[]
.SH "COPYING"
.sp
Copyright (C) 2020 VMware, Inc\&. Free use of this software is granted under the terms of the GNU Public License (GPL)\&.
.SH "NOTES"
.IP " 1." 4
rostedt@goodmis.org
.RS 4
\%mailto:rostedt@goodmis.org
.RE
.IP " 2." 4
tz.stoyanov@gmail.com
.RS 4
\%mailto:tz.stoyanov@gmail.com
.RE
.IP " 3." 4
linux-trace-devel@vger.kernel.org
.RS 4
\%mailto:linux-trace-devel@vger.kernel.org
.RE