diff options
author | Andrii Nakryiko <andrii@kernel.org> | 2022-05-09 03:41:44 +0300 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2022-05-09 18:15:32 +0300 |
commit | 7715f549a9d80a82428a7925fa4a00518c53c35c (patch) | |
tree | 6da1158d453283f609e69c478b59225c6fb4491c /tools/lib | |
parent | 2a4ca46b7d2a6f7ba7359e8d7fafe9ad378fa18e (diff) | |
download | linux-7715f549a9d80a82428a7925fa4a00518c53c35c.tar.xz |
libbpf: Complete field-based CO-RE helpers with field offset helper
Add bpf_core_field_offset() helper to complete field-based CO-RE
helpers. This helper can be useful for feature-detection and for some
more advanced cases of field reading (e.g., reading flexible array members).
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20220509004148.1801791-6-andrii@kernel.org
Diffstat (limited to 'tools/lib')
-rw-r--r-- | tools/lib/bpf/bpf_core_read.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/lib/bpf/bpf_core_read.h b/tools/lib/bpf/bpf_core_read.h index 5ad415f9051f..fd48b1ff59ca 100644 --- a/tools/lib/bpf/bpf_core_read.h +++ b/tools/lib/bpf/bpf_core_read.h @@ -144,6 +144,18 @@ enum bpf_enum_value_kind { __builtin_preserve_field_info(___bpf_field_ref(field), BPF_FIELD_BYTE_SIZE) /* + * Convenience macro to get field's byte offset. + * + * Supports two forms: + * - field reference through variable access: + * bpf_core_field_offset(p->my_field); + * - field reference through type and field names: + * bpf_core_field_offset(struct my_type, my_field). + */ +#define bpf_core_field_offset(field...) \ + __builtin_preserve_field_info(___bpf_field_ref(field), BPF_FIELD_BYTE_OFFSET) + +/* * Convenience macro to get BTF type ID of a specified type, using a local BTF * information. Return 32-bit unsigned integer with type ID from program's own * BTF. Always succeeds. |