tep_btf_list_args - Man Page

Show the arguments of a function from BTF

Synopsis

#include <event-parse​.h>

int tep_btf_list_args(struct tep_handle *tep, struct trace_seq *s, const char *func);

Description

If the Linux kernel has BTF configured, then a binary file will exist in the path of /sys/kernel/btf/vmlinux​. If this file is read into memory and passed to tep_load_btf() function, then it can be used to read the arguments of a given function, if that function data is found within the BTF file​.

The tep_btf_print_args() takes a tep handle, a trace_seq s pointer (that was initialized by trace_seq_init(3)), and a func string that is the name of the function to find the BTF information to use to print the function’s prototype​. If BTF is not loaded or the func name is not found it will return a negative​.

Return Value

tep_btf_list_args() returns the number of arguments read on success and -1 on failure (for example, if the function is not found)​.

Example

#include <stdlib​.h>
#include <stdio​.h>
#include <fcntl​.h>
#include <event-parse​.h>
#include <sys/stat​.h>
#include <unistd​.h>

#define BTF_FILE "/sys/kernel/btf/vmlinux"

int main(int argc, char **argv)
{
        struct tep_handle *tep;
        struct trace_seq s;
        struct stat st;
        char *buf;
        int fd, r, z;

        if (argc < 2)
                exit(-1);

        if (stat(BTF_FILE, &st) < 0) {
                perror(BTF_FILE);
                exit(-1);
        }

        buf = malloc(st​.st_size);
        if (!buf)
                exit(-1);
        fd = open(BTF_FILE, O_RDONLY);
        if (fd < 0) {
                perror(BTF_FILE);
                exit(-1);
        }
        for (z = 0; z < st​.st_size; ) {
                r = read(fd, buf + z, st​.st_size - z);
                if (r <= 0)
                        break;
                z += r;
        }
        close(fd);
        tep = tep_alloc();
        if (!tep)
                exit(-1);

        tep_load_btf(tep, buf, z);
        free(buf);

        trace_seq_init(&s);
        tep_btf_list_args(tep, &s, argv[1]);
        printf("%s(", argv[1]);
        trace_seq_do_printf(&s);
        printf(")\n");
        exit(0);
}

Files

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

tep_btf_load(3), tep_btf_print_args(3), libtraceevent(3), trace-cmd(1)

Author

Steven Rostedt <rostedt@goodmis​.org​[1]>, author of libtraceevent​.

Reporting Bugs

Report bugs to <linux-trace-devel@vger​.kernel​.org​[2]>

License

libtraceevent is Free Software licensed under the GNU LGPL 2​.1

Resources

https://git​.kernel​.org/pub/scm/libs/libtrace/libtraceevent​.git/

Notes

  1. rostedt@goodmis.org
    mailto:rostedt@goodmis.org
  2. linux-trace-devel@vger.kernel.org
    mailto:linux-trace-devel@vger.kernel.org

Info

10/02/2026 libtraceevent 1.9.0 libtraceevent Manual