---
name: "tep_btf_list_args"
section: "3"
platform: "linux"
package: "libtraceevent"
version: "1:1.9.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/tep_btf_list_args"
---

# tep\_btf\_list\_args(3)

Show the arguments of a function from BTF

## NAME

tep\_btf\_list\_args - 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)](/trace_seq_init/3.md)**), 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)](/libtraceevent/3.md), [**trace-cmd**(1)](/trace-cmd/1.md)

## 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
