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

# tracefs\_print\_init(3)

Open, close and write formated strings in the trace buffer.

## NAME

tracefs\_print\_init, tracefs\_print\_close, tracefs\_printf, tracefs\_vprintf - Open, close and write formated strings in the trace buffer.

## SYNOPSIS

```
#include <tracefs.h>
int tracefs_print_init(struct tracefs_instance *instance);
int tracefs_printf(struct tracefs_instance *instance, const char *fmt, ...);
int tracefs_vprintf(struct tracefs_instance *instance, const char *fmt, va_list ap);
void tracefs_print_close(struct tracefs_instance *instance);
```

## DESCRIPTION

Set of functions to write formated strings in the trace buffer. See Documentation/trace/ftrace.rst from the Linux kernel tree for more information about writing data from user space in the trace buffer. All these APIs have *instance* as a first argument. If NULL is passed as *instance*, the top trace instance is used.

The **tracefs\_print\_init()** function initializes the library for writing into the trace buffer of the selected *instance*. It is not mandatory to call this API before writing strings, any of the printf APIs will call it automatically, if the library is not yet initialized. But calling **tracefs\_print\_init()** in advance will speed up the writing.

The **tracefs\_printf()** function writes a formatted string in the trace buffer of the selected *instance*. The *fmt* argument is a string in printf format, followed by variable arguments *...*.

The **tracefs\_vprintf()** function writes a formatted string in the trace buffer of the selected *instance*. The *fmt* argument is a string in printf format, followed by list *ap* of arguments.

The **tracefs\_print\_close()** function closes the resources, used by the library for writing in the trace buffer of the selected instance.

## RETURN VALUE

The **tracefs\_print\_init()**, **tracefs\_printf()**, and **tracefs\_vprintf()** functions return 0 if the operation is successful, or -1 in case of an error.

## EXAMPLE

```
#include <tracefs.h>
if (tracefs_print_init(NULL) < 0) {
 /* Failed to initialize the library for writing in the trace buffer of the top trace instance */
}
void foo_print(char *format, ...)
{
        va_list ap;
        va_start(ap, format);
        if (tracefs_vprintf(NULL, format, ap) < 0) {
                /* Failed to print in the trace buffer */
        }
        va_end(ap);
}
void foo_print_string(char *message)
{
        if (tracefs_printf(NULL, "Message from user space: %s", message) < 0) {
                /* Failed to print in the trace buffer */
        }
}
tracefs_print_close();
```

## FILES

```
tracefs.h
        Header file to include in order to have access to the library APIs.
-ltracefs
        Linker switch to add when building a program that uses the library.
```

## SEE ALSO

[**libtracefs**(3)](/libtracefs/3.md), [**libtraceevent**(3)](/libtraceevent/3.md), [**trace-cmd**(1)](/trace-cmd/1.md), Documentation/trace/ftrace.rst from the Linux kernel tree

## AUTHOR

```
Steven Rostedt <rostedt@goodmis.org[1]>
Tzvetomir Stoyanov <tz.stoyanov@gmail.com[2]>
```

## REPORTING BUGS

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

## LICENSE

libtracefs is Free Software licensed under the GNU LGPL 2.1

## RESOURCES

**https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/**

## COPYING

Copyright (C) 2021 VMware, Inc. Free use of this software is granted under the terms of the GNU Public License (GPL).

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