mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-01 06:09:06 +08:00
libbpf: Make btf_dump work with modifiable BTF
Ensure that btf_dump can accommodate new BTF types being appended to BTF instance after struct btf_dump was created. This came up during attemp to use btf_dump for raw type dumping in selftests, but given changes are not excessive, it's good to not have any gotchas in API usage, so I decided to support such use case in general. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200929232843.1249318-2-andriin@fb.com
This commit is contained in:
committed by
Andrii Nakryiko
parent
80c7838600
commit
317ef1c295
17
src/btf.c
17
src/btf.c
@@ -146,6 +146,23 @@ void *btf_add_mem(void **data, size_t *cap_cnt, size_t elem_sz,
|
||||
return new_data + cur_cnt * elem_sz;
|
||||
}
|
||||
|
||||
/* Ensure given dynamically allocated memory region has enough allocated space
|
||||
* to accommodate *need_cnt* elements of size *elem_sz* bytes each
|
||||
*/
|
||||
int btf_ensure_mem(void **data, size_t *cap_cnt, size_t elem_sz, size_t need_cnt)
|
||||
{
|
||||
void *p;
|
||||
|
||||
if (need_cnt <= *cap_cnt)
|
||||
return 0;
|
||||
|
||||
p = btf_add_mem(data, cap_cnt, elem_sz, *cap_cnt, SIZE_MAX, need_cnt - *cap_cnt);
|
||||
if (!p)
|
||||
return -ENOMEM;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int btf_add_type_idx_entry(struct btf *btf, __u32 type_off)
|
||||
{
|
||||
__u32 *p;
|
||||
|
||||
Reference in New Issue
Block a user