mirror of
https://github.com/netdata/libbpf.git
synced 2026-11-08 20:00:43 +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:
1 parent
80c7838600
commit
317ef1c295
3 files changed
+65
-22
No files matched your search
@@ -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