Skip to content

Helper function bpf_snprintf_btf

v5.10

Definition

Copyright (c) 2015 The Libbpf Authors. All rights reserved.

Use BTF to store a string representation of ptr->ptr in str, using ptr->type_id. This value should specify the type that ptr->ptr points to. LLVM __builtin_btf_type_id(type, 1) can be used to look up vmlinux BTF type ids. Traversing the data structure using BTF, the type information and values are stored in the first str_size - 1 bytes of str. Safe copy of the pointer data is carried out to avoid kernel crashes during operation. Smaller types can use string space on the stack; larger programs can use map data to store the string representation.

The string can be subsequently shared with userspace via bpf_perf_event_output() or ring buffer interfaces. bpf_trace_printk() is to be avoided as it places too small a limit on string size to be useful.

flags is a combination of

BTF_F_COMPACT

    no formatting around type information

BTF_F_NONAME

    no struct/union member names/types

BTF_F_PTR_RAW

    show raw (unobfuscated) pointer values; equivalent to printk specifier %px.

BTF_F_ZERO

    show zero-valued struct/union members; they are not displayed by default

    

Returns

The number of bytes that were written (or would have been written if output had to be truncated due to string size), or a negative error in cases of failure.

static long (* const bpf_snprintf_btf)(char *str, __u32 str_size, struct btf_ptr *ptr, __u32 btf_ptr_size, __u64 flags) = (void *) 149;

Usage

Docs could be improved

This part of the docs is incomplete, contributions are very welcome

Program types

This helper call can be used in the following program types:

Example

Docs could be improved

This part of the docs is incomplete, contributions are very welcome