Lines Matching refs:man
258 struct usdt_manager *man; in usdt_manager_new() local
268 man = calloc(1, sizeof(*man)); in usdt_manager_new()
269 if (!man) in usdt_manager_new()
272 man->specs_map = specs_map; in usdt_manager_new()
273 man->ip_to_spec_id_map = ip_to_spec_id_map; in usdt_manager_new()
279 man->has_bpf_cookie = kernel_supports(obj, FEAT_BPF_COOKIE); in usdt_manager_new()
285 man->has_sema_refcnt = faccessat(AT_FDCWD, ref_ctr_sysfs_path, F_OK, AT_EACCESS) == 0; in usdt_manager_new()
287 return man; in usdt_manager_new()
290 void usdt_manager_free(struct usdt_manager *man) in usdt_manager_free() argument
292 if (IS_ERR_OR_NULL(man)) in usdt_manager_free()
295 free(man->free_spec_ids); in usdt_manager_free()
296 free(man); in usdt_manager_free()
572 static int collect_usdt_targets(struct usdt_manager *man, Elf *elf, const char *path, pid_t pid, in collect_usdt_targets() argument
681 if (ehdr.e_type == ET_DYN && !man->has_bpf_cookie) { in collect_usdt_targets()
729 if (!man->has_sema_refcnt) { in collect_usdt_targets()
816 struct usdt_manager *man = usdt_link->usdt_man; in bpf_link_usdt_detach() local
828 if (!man->has_bpf_cookie) { in bpf_link_usdt_detach()
830 (void)bpf_map_delete_elem(bpf_map__fd(man->ip_to_spec_id_map), in bpf_link_usdt_detach()
838 if (!man->free_spec_ids) { in bpf_link_usdt_detach()
840 man->free_spec_ids = usdt_link->spec_ids; in bpf_link_usdt_detach()
841 man->free_spec_cnt = usdt_link->spec_cnt; in bpf_link_usdt_detach()
845 size_t new_cnt = man->free_spec_cnt + usdt_link->spec_cnt; in bpf_link_usdt_detach()
848 new_free_ids = libbpf_reallocarray(man->free_spec_ids, new_cnt, in bpf_link_usdt_detach()
857 memcpy(new_free_ids + man->free_spec_cnt, usdt_link->spec_ids, in bpf_link_usdt_detach()
859 man->free_spec_ids = new_free_ids; in bpf_link_usdt_detach()
860 man->free_spec_cnt = new_cnt; in bpf_link_usdt_detach()
886 static int allocate_spec_id(struct usdt_manager *man, struct hashmap *specs_hash, in allocate_spec_id() argument
910 if (man->free_spec_cnt) { in allocate_spec_id()
911 *spec_id = man->free_spec_ids[man->free_spec_cnt - 1]; in allocate_spec_id()
918 man->free_spec_cnt--; in allocate_spec_id()
921 if (man->next_free_spec_id >= bpf_map__max_entries(man->specs_map)) in allocate_spec_id()
924 *spec_id = man->next_free_spec_id; in allocate_spec_id()
931 man->next_free_spec_id++; in allocate_spec_id()
941 struct bpf_link *usdt_manager_attach_usdt(struct usdt_manager *man, const struct bpf_program *prog, in usdt_manager_attach_usdt() argument
954 spec_map_fd = bpf_map__fd(man->specs_map); in usdt_manager_attach_usdt()
955 ip_map_fd = bpf_map__fd(man->ip_to_spec_id_map); in usdt_manager_attach_usdt()
985 err = collect_usdt_targets(man, elf, path, pid, usdt_provider, usdt_name, in usdt_manager_attach_usdt()
1004 link->usdt_man = man; in usdt_manager_attach_usdt()
1028 err = allocate_spec_id(man, specs_hash, link, target, &spec_id, &is_new); in usdt_manager_attach_usdt()
1038 if (!man->has_bpf_cookie && in usdt_manager_attach_usdt()
1053 opts.bpf_cookie = man->has_bpf_cookie ? spec_id : 0; in usdt_manager_attach_usdt()