| libtraceevent(3) |
| ================ |
| |
| NAME |
| ---- |
| tep_parse_saved_cmdlines, tep_parse_printk_formats, tep_parse_kallsyms |
| - Parsing functions to load mappings |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| -- |
| *#include <event-parse.h>* |
| |
| int *tep_parse_saved_cmdlines*(struct tep_handle pass:[*]_tep_, const char pass:[*]_buf_); |
| int *tep_parse_printk_formats*(struct tep_handle pass:[*]_tep_, const char pass:[*]_buf_); |
| int *tep_parse_kallsyms*(struct tep_handle pass:[*]_tep_, const char pass:[*]_buf_); |
| -- |
| |
| DESCRIPTION |
| ----------- |
| *tep_parse_saved_cmdlines()* is a helper function to parse content in the tracefs |
| file system of the "saved_cmdlines" file (stored in a string buffer passed in by _buf_) |
| and loads the mapping of the process IDs (pid) to the comm names in the |
| _tep_ handler. The events store the pid and this is used to be able to show the |
| process names associated to those process ids. It parses the string _buf_ that |
| holds the content of saved_cmdlines and ends with a nul character ('\0'). |
| |
| *tep_parse_printk_formats()* is a helper function to parse content in the tracefs |
| file system of the "printk_formats" file (stored in a string buffer passed in by _buf_) |
| and loads the mapping of addresses of strings that may be referenced by events. |
| Events only store the address of constant strings in the kernel, and the mapping |
| of their address to the string is exported to user space in the printk_formats |
| file. It parses the string _buf_ that holds the content of printk_formats and |
| ends with a nul character ('\0'). |
| |
| *tep_parse_kallsyms()* is a helper function to parse the Linux kernel /proc/kallsyms format |
| (stored in a string buffer passed in by _buf_) and load the functions into the |
| _tep_ handler such that function IP addresses can be mapped to their name when |
| parsing events with %pS in the print format field. It parses the string _buf_ that |
| holds the content of /proc/kallsyms and ends with a nul character ('\0'). |
| |
| RETURN VALUE |
| ------------ |
| The *tep_parse_saved_cmdlines*() function returns 0 in case of success, or -1 |
| in case of an error. |
| |
| The *tep_parse_printk_formats*() function returns 0 in case of success, or -1 |
| in case of an error. |
| |
| The *tep_parse_kallsyms*() function returns 0 in case of success, or -1 |
| in case of an error. |
| |
| EXAMPLE |
| ------- |
| [source,c] |
| -- |
| ... |
| #include <event-parse.h> |
| #include <tracefs.h> |
| #include <stdlib.h> |
| |
| int load_cmdlines(struct tep_handle *tep) |
| { |
| char *buf = NULL; |
| int r; |
| |
| buf = tracefs_instance_file_read(NULL, "saved_cmdlines", NULL); |
| if (!buf) |
| return -1; |
| r = tep_parse_saved_cmdlines(tep, buf); |
| free(buf); |
| return r; |
| } |
| |
| int load_print_strings(struct tep_handle *tep) |
| { |
| char *buf = NULL; |
| int r; |
| |
| buf = tracefs_instance_file_read(NULL, "printk_formats", NULL); |
| if (!buf) |
| return -1; |
| r = tep_parse_printk_formats(tep, buf); |
| free(buf); |
| return r; |
| } |
| |
| int load_kallsyms(struct tep_handle *tep) |
| { |
| char *line = NULL; |
| char *buf = NULL; |
| size_t sz = 0; |
| FILE *fp; |
| int len = 0; |
| int r; |
| |
| fp = fopen("/proc/kallsyms", "r"); |
| while ((r = getline(&line, &sz, fp)) >= 0) { |
| buf = realloc(buf, len + r + 1); |
| memcpy(buf + len, line, r); |
| len += r; |
| } |
| free(line); |
| fclose(fp); |
| if (!buf) |
| return -1; |
| buf[len] = 0; |
| |
| r = tep_parse_kallsyms(tep, buf); |
| free(buf); |
| return r; |
| } |
| ... |
| -- |
| |
| FILES |
| ----- |
| [verse] |
| -- |
| *event-parse.h* |
| Header file to include in order to have access to the library APIs. |
| *-ltraceevent* |
| Linker switch to add when building a program that uses the library. |
| -- |
| |
| SEE ALSO |
| -------- |
| *libtraceevent*(3), *trace-cmd*(1), *tep_register_comm*(3), *tep_register_function*(3), |
| *tep_register_print_string*(3) |
| |
| AUTHOR |
| ------ |
| [verse] |
| -- |
| *Steven Rostedt* <rostedt@goodmis.org>, author of *libtraceevent*. |
| *Tzvetomir Stoyanov* <tz.stoyanov@gmail.com>, coauthor of *libtraceevent*. |
| -- |
| REPORTING BUGS |
| -------------- |
| Report bugs to <linux-trace-devel@vger.kernel.org> |
| |
| LICENSE |
| ------- |
| libtraceevent is Free Software licensed under the GNU LGPL 2.1 |
| |
| RESOURCES |
| --------- |
| https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ |