---
name: "tracefs_get_tracing_file"
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_get_tracing_file"
---

# tracefs\_get\_tracing\_file(3)

Find and set locations of trace directory and files.

## NAME

tracefs\_get\_tracing\_file, tracefs\_put\_tracing\_file, tracefs\_tracing\_dir, tracefs\_debug\_dir, tracefs\_set\_tracing\_dir, tracefs\_tracing\_dir\_is\_mounted - Find and set locations of trace directory and files.

## SYNOPSIS

```
#include <tracefs.h>
char *tracefs_get_tracing_file(const char *name);
void tracefs_put_tracing_file(char *name);
const char *tracefs_tracing_dir(void);
const char *tracefs_debug_dir(void);
int tracefs_set_tracing_dir(char *tracing_dir)
int tracefs_tracing_dir_is_mounted(bool mount, const char **path);
```

## DESCRIPTION

This set of APIs can be used to find the full path of the trace file system mount point and trace files in it.

The **tracefs\_set\_tracing\_dir()** function sets a custom location of the system’s tracing directory mount point. Usually, the library auto detects it using the information from the /proc/mounts file. Use this API only if the mount point is not standard and cannot be detected by the library. The *tracing\_dir* argument can be NULL, in that case the custom location is deleted and the library auto detection logic is used.

The **tracefs\_get\_tracing\_file()** function returns the full path of the file with given *name* in the trace file system. The function works only with files in the tracefs main directory, it is not trace instance aware. It is recommended to use **tracefs\_instance\_get\_file()** and **tracefs\_instance\_get\_dir()** instead. The returned string must be freed with **tracefs\_put\_tracing\_file()**.

The **tracefs\_put\_tracing\_file()** function frees trace file name, returned by **tracefs\_get\_tracing\_file()**.

The **tracefs\_tracing\_dir()** function returns the full path to the trace file system. In the first function call, the mount point of the tracing file system is located, cached and returned. It will mount it, if it is not mounted. On any subsequent call the cached path is returned. The return string must *not* be freed.

The **tracefs\_debug\_dir()** is similar to **tracefs\_tracing\_dir()** except that it will return where the debugfs file system is mounted. If it is not mounted it will try to mount it. The return string must *not* be freed.

**tracefs\_tracing\_dir\_is\_mounted()** returns 1 if the tracing directory is already mounted and 0 if it is not. If *mount* is true, it will try to mount it if it is not, and returns 0 if it succesfully mounted it and -1 if it did not. If *path* is set, it will be assigned to the path where it mounted it. *path* is internal and should not be freed.

## RETURN VALUE

The **tracefs\_set\_tracing\_dir()** function returns 0 on success, -1 otherwise.

The **tracefs\_get\_tracing\_file()** function returns a string or NULL in case of an error. The returned string must be freed with **tracefs\_put\_tracing\_file()**.

The **tracefs\_tracing\_dir()** function returns a constant string or NULL in case of an error. The returned string must *not* be freed.

The **tracefs\_debug\_dir()** function returns a constant string or NULL in case of an error. The returned string must *not* be freed.

The **tracefs\_tracing\_dir\_is\_mounted()** returns 1 if the tracing directory is already mounted, 0 if it is not, and -1 on error.

## EXAMPLE

```
#include <tracefs.h>
...
char *trace_on = tracefs_get_tracing_file("tracing_on");
        if (trace_on) {
                ...
                tracefs_put_tracing_file(trace_on);
        }
...
const char *trace_dir = tracefs_tracing_dir();
```

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

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