---
name: "tep_record_print_selected_fields"
section: "3"
platform: "linux"
package: "libtraceevent-doc"
version: "1:1.8.4-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/tep_print_field_content"
---

# tep\_record\_print\_selected\_fields(3)

Print the field content.

Part of [tep\_print\_field\_content(3)](/tep_print_field_content/3.md).

## NAME

tep\_print\_field\_content, tep\_print\_fields, tep\_print\_num\_field, tep\_print\_func\_field, tep\_record\_print\_fields, tep\_record\_print\_selected\_fields - Print the field content.

## SYNOPSIS

```
#include <event-parse.h>
#include <trace-seq.h>
void tep_print_field_content(struct trace_seq *s, void *data, int size, struct tep_format_field *field);
void tep_print_fields(struct trace_seq *s, void *data, int size, struct tep_event *event);
int tep_print_num_field(struct trace_seq *s, const char *fmt, struct tep_event *event, const char *name, struct tep_record *record, int err);
int tep_print_func_field(struct trace_seq *s, const char *fmt, struct tep_event *event, const char *name, struct tep_record *record, int err);
void tep_record_print_fields(struct trace_seq *s, struct tep_record *record, struct tep_event *event);
void tep_record_print_selected_fields(struct trace_seq *s, struct tep_record *record, struct tep_event *event, int select_mask);
```

## DESCRIPTION

These functions print recorded field’s data, according to the field’s type.

The **tep\_print\_field\_content()** function extracts from the recorded raw *data* value of the *field* and prints it into *s*, according to the field type.

The **tep\_print\_fields()** prints each field name followed by the record’s field value according to the field’s type:

```
"field1_name=field1_value field2_name=field2_value ..."
```

It iterates all fields of the *event*, and calls **tep\_print\_field\_content()** for each of them.

The **tep\_print\_num\_field()** function prints a numeric field with given format string. A search is performed in the *event* for a field with *name*. If such field is found, its value is extracted from the *record* and is printed in the *s*, according to the given format string *fmt*. If the argument *err* is non-zero, and an error occures - it is printed in the *s*.

The **tep\_print\_func\_field()** function prints a function field with given format string. A search is performed in the *event* for a field with *name*. If such field is found, its value is extracted from the *record*. The value is assumed to be a function address, and a search is perform to find the name of this function. The function name (if found) and its address are printed in the *s*, according to the given format string *fmt*. If the argument *err* is non-zero, and an error occures - it is printed in *s*.

The **tep\_record\_print\_fields()** prints the field’s name followed by its value for all record’s field.

The **tep\_record\_print\_selected\_fields()** prints the field’s name followed by its value for selected subset of record field. The fields to be printed are defined by the *select\_mask* bit mask.

## RETURN VALUE

The **tep\_print\_num\_field()** and **tep\_print\_func\_field()** functions return 1 on success, -1 in case of an error or 0 if the print buffer *s* is full.

## EXAMPLE

```
#include <event-parse.h>
#include <trace-seq.h>
...
struct tep_handle *tep = tep_alloc();
...
struct trace_seq seq;
trace_seq_init(&seq);
struct tep_event *event = tep_find_event_by_name(tep, "timer", "hrtimer_start");
...
void process_record(struct tep_record *record)
{
        struct tep_format_field *field_pid = tep_find_common_field(event, "common_pid");
        trace_seq_reset(&seq);
        /* Print the value of "common_pid" */
        tep_print_field_content(&seq, record->data, record->size, field_pid);
        /* Print all fields of the "hrtimer_start" event */
        tep_print_fields(&seq, record->data, record->size, event);
        /* Print the value of "expires" field with custom format string */
        tep_print_num_field(&seq, " timer expires in %llu ", event, "expires", record, 0);
        /* Print the address and the name of "function" field with custom format string */
        tep_print_func_field(&seq, " timer function is %s ", event, "function", record, 0);
 }
 ...
```

## FILES

```
event-parse.h
        Header file to include in order to have access to the library APIs.
trace-seq.h
        Header file to include in order to have access to trace sequences related APIs.
        Trace sequences are used to allow a function to call several other functions
        to create a string of data to use.
-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
