---
name: "tep_alloc"
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_alloc"
---

# tep\_alloc(3)

Create, destroy, manage references of trace event parser context.

## NAME

tep\_alloc, tep\_free, tep\_ref, tep\_unref, tep\_get\_ref, tep\_kbuffer - Create, destroy, manage references of trace event parser context.

## SYNOPSIS

```
#include <event-parse.h>
struct tep_handle *tep_alloc(void);
void tep_free(struct tep_handle *tep);
void tep_ref(struct tep_handle *tep);
void tep_unref(struct tep_handle *tep);
int tep_get_ref(struct tep_handle *tep);
struct kbuffer *tep_kbuffer(struct tep_handle *tep);
```

## DESCRIPTION

These are the main functions to create and destroy tep\_handle - the main structure, representing the trace event parser context. This context is used as the input parameter of most library APIs.

The **tep\_alloc()** function allocates and initializes the tep context.

The **tep\_free()** function will decrement the reference of the *tep* handler. When there is no more references, then it will free the handler, as well as clean up all its resources that it had used. The argument *tep* is the pointer to the trace event parser context.

The **tep\_ref()** function adds a reference to the *tep* handler.

The **tep\_unref()** function removes a reference from the *tep* handler. When the last reference is removed, the *tep* is destroyed, and all resources that it had used are cleaned up.

The **tep\_ref\_get()** functions gets the current references of the *tep* handler.

The **tep\_kbuffer()** function allocates a kbuffer descriptor that can be used to parse raw data that is represented by the *tep* handle descriptor. It must be freed with **kbuf\_free(3)**.

## RETURN VALUE

**tep\_alloc()** returns a pointer to a newly created tep\_handle structure. NULL is returned in case there is not enough free memory to allocate it.

**tep\_ref\_get()** returns the current references of *tep*. If *tep* is NULL, 0 is returned.

**tep\_kbuffer()** returns a kbuffer descriptor that can parse the raw data that represents the tep handle. Must be freed with **kbuf\_free(3)**.

## EXAMPLE

```
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
int ref = tep_get_ref(tep);
tep_ref(tep);
if ( (ref+1) != tep_get_ref(tep)) {
        /* Something wrong happened, the counter is not incremented by 1 */
}
tep_unref(tep);
...
tep_free(tep);
...
```

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

[**libtraceevent**(3)](/libtraceevent/3.md), [**trace-cmd**(1)](/trace-cmd/1.md)

## AUTHOR

```
Steven Rostedt <rostedt@goodmis.org[1]>, author of libtraceevent.
Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>, author of this man page.
```

## REPORTING BUGS

Report bugs to \<**linux-trace-devel@vger.kernel.org**\[3\]\>

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

  tz.stoyanov@gmail.com

  mailto:tz.stoyanov@gmail.com

- 3\.

  linux-trace-devel@vger.kernel.org

  mailto:linux-trace-devel@vger.kernel.org
