Lines Matching refs:fd_data

724 static void necp_fd_insert_stats_arena(struct necp_fd_data *fd_data, struct necp_arena_info *nai);
725 static void necp_fd_remove_stats_arena(struct necp_fd_data *fd_data, struct necp_arena_info *nai);
726 static struct necp_arena_info *necp_fd_mredirect_stats_arena(struct necp_fd_data *fd_data, struct p…
733 static int necp_arena_initialize(struct necp_fd_data *fd_data, bool locked);
734 static int necp_stats_initialize(struct necp_fd_data *fd_data, struct necp_client *client,
736 static int necp_arena_create(struct necp_fd_data *fd_data, size_t obj_size, size_t obj_cnt, struct …
737 static int necp_arena_stats_obj_alloc(struct necp_fd_data *fd_data, mach_vm_offset_t *off, struct n…
738 static void necp_arena_stats_obj_free(struct necp_fd_data *fd_data, struct necp_arena_info *stats_a…
739 static void necp_stats_arenas_destroy(struct necp_fd_data *fd_data, boolean_t closing);
741 static int necp_sysctl_arena_initialize(struct necp_fd_data *fd_data, bool locked);
742 static void necp_sysctl_arena_destroy(struct necp_fd_data *fd_data);
743 static void *necp_arena_sysctls_obj(struct necp_fd_data *fd_data, mach_vm_offset_t *off, size_t *si…
762 necp_fd_notify(struct necp_fd_data *fd_data, bool locked) in necp_fd_notify() argument
764 struct selinfo *si = &fd_data->si; in necp_fd_notify()
767 NECP_FD_LOCK(fd_data); in necp_fd_notify()
777 NECP_FD_UNLOCK(fd_data); in necp_fd_notify()
795 necp_fd_poll(struct necp_fd_data *fd_data, int events, void *wql, struct proc *p, int is_kevent) in necp_fd_poll() argument
802 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necp_fd_poll()
804 if (!TAILQ_EMPTY(&fd_data->update_list)) { in necp_fd_poll()
811 RB_FOREACH(client, _necp_client_tree, &fd_data->clients) { in necp_fd_poll()
945 struct necp_fd_data *fd_data = NULL; in necpop_select() local
950 fd_data = (struct necp_fd_data *)fp_get_data(fp); in necpop_select()
951 if (fd_data == NULL) { in necpop_select()
968 NECP_FD_LOCK(fd_data); in necpop_select()
969 revents = necp_fd_poll(fd_data, events, wql, procp, 0); in necpop_select()
970 NECP_FD_UNLOCK(fd_data); in necpop_select()
978 struct necp_fd_data *fd_data = (struct necp_fd_data *)kn->kn_hook; in necp_fd_knrdetach() local
979 struct selinfo *si = &fd_data->si; in necp_fd_knrdetach()
981 NECP_FD_LOCK(fd_data); in necp_fd_knrdetach()
983 NECP_FD_UNLOCK(fd_data); in necp_fd_knrdetach()
996 struct necp_fd_data *fd_data; in necp_fd_knrprocess() local
1000 fd_data = (struct necp_fd_data *)kn->kn_hook; in necp_fd_knrprocess()
1002 NECP_FD_LOCK(fd_data); in necp_fd_knrprocess()
1003 revents = necp_fd_poll(fd_data, POLLIN, NULL, current_proc(), 1); in necp_fd_knrprocess()
1008 NECP_FD_UNLOCK(fd_data); in necp_fd_knrprocess()
1016 struct necp_fd_data *fd_data; in necp_fd_knrtouch() local
1019 fd_data = (struct necp_fd_data *)kn->kn_hook; in necp_fd_knrtouch()
1021 NECP_FD_LOCK(fd_data); in necp_fd_knrtouch()
1022 revents = necp_fd_poll(fd_data, POLLIN, NULL, current_proc(), 1); in necp_fd_knrtouch()
1023 NECP_FD_UNLOCK(fd_data); in necp_fd_knrtouch()
1040 struct necp_fd_data *fd_data = NULL; in necpop_kqfilter() local
1049 fd_data = (struct necp_fd_data *)fp_get_data(fp); in necpop_kqfilter()
1050 if (fd_data == NULL) { in necpop_kqfilter()
1056 NECP_FD_LOCK(fd_data); in necpop_kqfilter()
1058 kn->kn_hook = fd_data; in necpop_kqfilter()
1059 KNOTE_ATTACH(&fd_data->si.si_note, kn); in necpop_kqfilter()
1061 revents = necp_fd_poll(fd_data, POLLIN, NULL, current_proc(), 1); in necpop_kqfilter()
1063 NECP_FD_UNLOCK(fd_data); in necpop_kqfilter()
1179 necp_destroy_flow_stats(struct necp_fd_data *fd_data, in necp_destroy_flow_stats() argument
1184 NECP_FD_ASSERT_LOCKED(fd_data); in necp_destroy_flow_stats()
1212 …necp_arena_stats_obj_free(fd_data, flow_registration->stats_arena, &flow_registration->kstats_kadd… in necp_destroy_flow_stats()
1745 struct necp_fd_data *fd_data = NULL; in necpop_close() local
1748 fd_data = (struct necp_fd_data *)fg_get_data(fg); in necpop_close()
1751 if (fd_data != NULL) { in necpop_close()
1756 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necpop_close()
1758 LIST_REMOVE(fd_data, chain); in necpop_close()
1762 LIST_REMOVE(fd_data, chain); in necpop_close()
1766 NECP_FD_LOCK(fd_data); in necpop_close()
1767 pid_t pid = fd_data->proc_pid; in necpop_close()
1772 (void)necp_defunct_client_fd_locked_inner(fd_data, &defunct_list, false); in necpop_close()
1776 RB_FOREACH_SAFE(flow_registration, _necp_fd_flow_tree, &fd_data->flows, temp_flow_registration) { in necpop_close()
1778 necp_destroy_flow_stats(fd_data, flow_registration, NULL, TRUE); in necpop_close()
1783 RB_REMOVE(_necp_fd_flow_tree, &fd_data->flows, flow_registration); in necpop_close()
1788 RB_FOREACH_SAFE(client, _necp_client_tree, &fd_data->clients, temp_client) { in necpop_close()
1792 RB_REMOVE(_necp_client_tree, &fd_data->clients, client); in necpop_close()
1798 TAILQ_FOREACH_SAFE(client_update, &fd_data->update_list, chain, temp_update) { in necpop_close()
1800 TAILQ_REMOVE(&fd_data->update_list, client_update, chain); in necpop_close()
1803 fd_data->update_count = 0; in necpop_close()
1807 necp_stats_arenas_destroy(fd_data, TRUE); in necpop_close()
1808 ASSERT(fd_data->stats_arena_active == NULL); in necpop_close()
1809 ASSERT(LIST_EMPTY(&fd_data->stats_arena_list)); in necpop_close()
1812 necp_sysctl_arena_destroy(fd_data); in necpop_close()
1813 ASSERT(fd_data->sysctl_arena == NULL); in necpop_close()
1816 NECP_FD_UNLOCK(fd_data); in necpop_close()
1818 selthreadclear(&fd_data->si); in necpop_close()
1820 lck_mtx_destroy(&fd_data->fd_lock, &necp_fd_mtx_grp); in necpop_close()
1822 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necpop_close()
1828 zfree(necp_client_fd_zone, fd_data); in necpop_close()
1829 fd_data = NULL; in necpop_close()
1853 struct fileproc **fpp, struct necp_fd_data **fd_data) in necp_find_fd_data() argument
1859 *fd_data = (struct necp_fd_data *)fp_get_data(fp); in necp_find_fd_data()
1862 if ((*fd_data)->necp_fd_type != necp_fd_type_client) { in necp_find_fd_data()
3177 necp_client_create_flow_registration(struct necp_fd_data *fd_data, struct necp_client *client) in necp_client_create_flow_registration() argument
3179 NECP_FD_ASSERT_LOCKED(fd_data); in necp_client_create_flow_registration()
3198 RB_INSERT(_necp_fd_flow_tree, &fd_data->flows, new_registration); in necp_client_create_flow_registration()
6584 struct necp_fd_data *fd_data = NULL; in necp_open() local
6610 if ((fd_data = zalloc(necp_client_fd_zone)) == NULL) { in necp_open()
6615 memset(fd_data, 0, sizeof(*fd_data)); in necp_open()
6617 fd_data->necp_fd_type = necp_fd_type_client; in necp_open()
6618 fd_data->flags = uap->flags; in necp_open()
6619 RB_INIT(&fd_data->clients); in necp_open()
6620 RB_INIT(&fd_data->flows); in necp_open()
6621 TAILQ_INIT(&fd_data->update_list); in necp_open()
6622 lck_mtx_init(&fd_data->fd_lock, &necp_fd_mtx_grp, &necp_fd_mtx_attr); in necp_open()
6623 klist_init(&fd_data->si.si_note); in necp_open()
6624 fd_data->proc_pid = proc_pid(p); in necp_open()
6626 LIST_INIT(&fd_data->stats_arena_list); in necp_open()
6632 fp_set_data(fp, fd_data); in necp_open()
6641 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necp_open()
6643 LIST_INSERT_HEAD(&necp_fd_observer_list, fd_data, chain); in necp_open()
6652 necp_client_update_observer_add_internal(fd_data, existing_client); in necp_open()
6653 necp_client_update_observer_update_internal(fd_data, existing_client); in necp_open()
6659 LIST_INSERT_HEAD(&necp_fd_list, fd_data, chain); in necp_open()
6672 if (fd_data != NULL) { in necp_open()
6673 zfree(necp_client_fd_zone, fd_data); in necp_open()
6674 fd_data = NULL; in necp_open()
6687 necp_client_add(struct proc *p, struct necp_fd_data *fd_data, struct necp_client_action_args *uap, … in necp_client_add() argument
6693 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necp_client_add()
6717 client->proc_pid = fd_data->proc_pid; // Save off proc pid in case the client will persist past fd in necp_client_add()
6718 client->agent_handle = (void *)fd_data; in necp_client_add()
6848 NECP_FD_LOCK(fd_data); in necp_client_add()
6849 parent = necp_client_fd_find_client_unlocked(fd_data, parsed_parameters.parent_uuid); in necp_client_add()
6853 NECP_FD_UNLOCK(fd_data); in necp_client_add()
6863 NECP_FD_LOCK(fd_data); in necp_client_add()
6864 RB_INSERT(_necp_client_tree, &fd_data->clients, client); in necp_client_add()
6872 (void)necp_update_client_result(current_proc(), fd_data, client, NULL); in necp_client_add()
6874 NECP_FD_UNLOCK(fd_data); in necp_client_add()
6892 necp_client_claim(struct proc *p, struct necp_fd_data *fd_data, struct necp_client_action_args *uap… in necp_client_claim() argument
6940 client->proc_pid = fd_data->proc_pid; // Transfer client to claiming pid in necp_client_claim()
6941 client->agent_handle = (void *)fd_data; in necp_client_claim()
6947 NECP_FD_LOCK(fd_data); in necp_client_claim()
6948 RB_INSERT(_necp_client_tree, &fd_data->clients, client); in necp_client_claim()
6950 (void)necp_update_client_result(current_proc(), fd_data, client, NULL); in necp_client_claim()
6952 NECP_FD_UNLOCK(fd_data); in necp_client_claim()
6963 necp_client_remove(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retval) in necp_client_remove() argument
6993 NECP_FD_LOCK(fd_data); in necp_client_remove()
6995 pid_t pid = fd_data->proc_pid; in necp_client_remove()
6996 struct necp_client *client = necp_client_fd_find_client_unlocked(fd_data, client_id); in necp_client_remove()
7004 RB_FOREACH_SAFE(flow_registration, _necp_fd_flow_tree, &fd_data->flows, temp_flow_registration) { in necp_client_remove()
7007 necp_destroy_flow_stats(fd_data, flow_registration, NULL, TRUE); in necp_client_remove()
7012 RB_REMOVE(_necp_fd_flow_tree, &fd_data->flows, flow_registration); in necp_client_remove()
7028 RB_REMOVE(_necp_client_tree, &fd_data->clients, client); in necp_client_remove()
7036 if ((fd_data->stats_arena_active != NULL && fd_data->stats_arena_active->nai_use_count == 3) || in necp_client_remove()
7037 (fd_data->stats_arena_active == NULL && !LIST_EMPTY(&fd_data->stats_arena_list))) { in necp_client_remove()
7048 NECP_FD_UNLOCK(fd_data); in necp_client_remove()
7079 necp_client_remove_flow(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *ret… in necp_client_remove_flow() argument
7108 NECP_FD_LOCK(fd_data); in necp_client_remove_flow()
7110 …struct necp_client_flow_registration *flow_registration = necp_client_fd_find_flow(fd_data, flow_i… in necp_client_remove_flow()
7114 necp_destroy_flow_stats(fd_data, flow_registration, &flow_ifnet_stats, TRUE); in necp_client_remove_flow()
7119 RB_REMOVE(_necp_fd_flow_tree, &fd_data->flows, flow_registration); in necp_client_remove_flow()
7126 NECP_FD_UNLOCK(fd_data); in necp_client_remove_flow()
7133 necp_destroy_client_flow_registration(client, flow_registration, fd_data->proc_pid, false); in necp_client_remove_flow()
7529 necp_client_copy(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retval) in necp_client_copy() argument
7563 NECP_FD_LOCK(fd_data); in necp_client_copy()
7568 RB_FOREACH(find_client, _necp_client_tree, &fd_data->clients) { in necp_client_copy()
7579 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_copy()
7589 NECP_FD_UNLOCK(fd_data); in necp_client_copy()
7592 if (fd_data->flags & NECP_OPEN_FLAG_OBSERVER) { in necp_client_copy()
7625 necp_client_copy_client_update(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, i… in necp_client_copy_client_update() argument
7631 if (!(fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER)) { in necp_client_copy_client_update()
7646 NECP_FD_LOCK(fd_data); in necp_client_copy_client_update()
7647 struct necp_client_update *client_update = TAILQ_FIRST(&fd_data->update_list); in necp_client_copy_client_update()
7649 TAILQ_REMOVE(&fd_data->update_list, client_update, chain); in necp_client_copy_client_update()
7650 VERIFY(fd_data->update_count > 0); in necp_client_copy_client_update()
7651 fd_data->update_count--; in necp_client_copy_client_update()
7653 NECP_FD_UNLOCK(fd_data); in necp_client_copy_client_update()
7753 necp_client_list(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retval) in necp_client_list() argument
7767 if (!(fd_data->flags & NECP_OPEN_FLAG_OBSERVER)) { in necp_client_list()
7843 necp_client_add_flow(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retval) in necp_client_add_flow() argument
7899 NECP_FD_LOCK(fd_data); in necp_client_add_flow()
7900 pid_t pid = fd_data->proc_pid; in necp_client_add_flow()
7903 NECP_FD_UNLOCK(fd_data); in necp_client_add_flow()
7909 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_add_flow()
7912 NECP_FD_UNLOCK(fd_data); in necp_client_add_flow()
7922 …client_flow_registration *new_registration = necp_client_create_flow_registration(fd_data, client); in necp_client_add_flow()
7926 NECP_FD_UNLOCK(fd_data); in necp_client_add_flow()
7995 …if (!necp_assign_client_result_locked(proc, fd_data, client, new_registration, add_request->agent_… in necp_client_add_flow()
8004 …if (error == 0 && add_request->stats_request_count > 0 && necp_arena_initialize(fd_data, true) == … in necp_client_add_flow()
8015 (void)necp_stats_initialize(fd_data, client, new_registration, &bufreq); in necp_client_add_flow()
8064 necp_destroy_flow_stats(fd_data, new_registration, NULL, false); in necp_client_add_flow()
8069 RB_REMOVE(_necp_fd_flow_tree, &fd_data->flows, new_registration); in necp_client_add_flow()
8070 necp_destroy_client_flow_registration(client, new_registration, fd_data->proc_pid, true); in necp_client_add_flow()
8075 NECP_FD_UNLOCK(fd_data); in necp_client_add_flow()
8108 necp_client_request_nexus(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *r… in necp_client_request_nexus() argument
8128 NECP_FD_LOCK(fd_data); in necp_client_request_nexus()
8129 pid_t pid = fd_data->proc_pid; in necp_client_request_nexus()
8132 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
8138 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_request_nexus()
8140 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
8181 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
8188 …client_flow_registration *new_registration = necp_client_create_flow_registration(fd_data, client); in necp_client_request_nexus()
8192 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
8215 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
8224 if (!necp_assign_client_result_locked(proc, fd_data, client, new_registration, nexus_uuid, in necp_client_request_nexus()
8231 necp_arena_initialize(fd_data, true) == 0) { in necp_client_request_nexus()
8237 (void)necp_stats_initialize(fd_data, client, new_registration, &bufreq); in necp_client_request_nexus()
8247 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
8300 necp_client_agent_action(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *re… in necp_client_agent_action() argument
8340 NECP_FD_LOCK(fd_data); in necp_client_agent_action()
8341 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_agent_action()
8387 fd_data->proc_pid, in necp_client_agent_action()
8418 fd_data->proc_pid, in necp_client_agent_action()
8439 fd_data->proc_pid, in necp_client_agent_action()
8457 NECP_FD_UNLOCK(fd_data); in necp_client_agent_action()
8474 necp_client_copy_agent(__unused struct necp_fd_data *fd_data, struct necp_client_action_args *uap, … in necp_client_copy_agent() argument
8505 necp_client_agent_use(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retva… in necp_client_agent_use() argument
8531 NECP_FD_LOCK(fd_data); in necp_client_agent_use()
8532 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_agent_use()
8540 NECP_FD_UNLOCK(fd_data); in necp_client_agent_use()
8557 necp_client_acquire_agent_token(__unused struct necp_fd_data *fd_data, struct necp_client_action_ar… in necp_client_acquire_agent_token() argument
8584 necp_client_copy_interface(__unused struct necp_fd_data *fd_data, struct necp_client_action_args *u… in necp_client_copy_interface() argument
8742 necp_client_get_interface_address(__unused struct necp_fd_data *fd_data, struct necp_client_action_… in necp_client_get_interface_address() argument
8866 necp_fd_insert_stats_arena(struct necp_fd_data *fd_data, struct necp_arena_info *nai) in necp_fd_insert_stats_arena() argument
8868 NECP_FD_ASSERT_LOCKED(fd_data); in necp_fd_insert_stats_arena()
8872 LIST_INSERT_HEAD(&fd_data->stats_arena_list, nai, nai_chain); in necp_fd_insert_stats_arena()
8878 necp_fd_remove_stats_arena(struct necp_fd_data *fd_data, struct necp_arena_info *nai) in necp_fd_remove_stats_arena() argument
8880 #pragma unused(fd_data) in necp_fd_remove_stats_arena()
8881 NECP_FD_ASSERT_LOCKED(fd_data); in necp_fd_remove_stats_arena()
8893 necp_fd_mredirect_stats_arena(struct necp_fd_data *fd_data, struct proc *proc) in necp_fd_mredirect_stats_arena() argument
8897 NECP_FD_ASSERT_LOCKED(fd_data); in necp_fd_mredirect_stats_arena()
8902 if ((nai = fd_data->stats_arena_active) != NULL) { in necp_fd_mredirect_stats_arena()
8919 fd_data->stats_arena_active = nai = NULL; in necp_fd_mredirect_stats_arena()
8924 LIST_FOREACH(nai, &fd_data->stats_arena_list, nai_chain) { in necp_fd_mredirect_stats_arena()
8980 necp_arena_create(struct necp_fd_data *fd_data, size_t obj_size, size_t obj_cnt, struct proc *p) in necp_arena_create() argument
8988 NECP_FD_ASSERT_LOCKED(fd_data); in necp_arena_create()
8989 ASSERT(fd_data->stats_arena_active == NULL); in necp_arena_create()
8991 ASSERT(proc_pid(p) == fd_data->proc_pid); in necp_arena_create()
9009 nai->nai_proc_pid = fd_data->proc_pid; in necp_arena_create()
9010 …snprintf(name, sizeof(name), "stats-%u.%s.%d", fd_data->stats_arena_gencnt, proc_name_address(p), in necp_arena_create()
9014 NECPLOG(LOG_ERR, "failed to create stats arena for pid %d\n", fd_data->proc_pid); in necp_arena_create()
9028 NECPLOG(LOG_ERR, "failed to map stats arena for pid %d\n", fd_data->proc_pid); in necp_arena_create()
9033 fd_data->stats_arena_active = nai; in necp_arena_create()
9035 necp_fd_insert_stats_arena(fd_data, nai); in necp_arena_create()
9036 ++fd_data->stats_arena_gencnt; in necp_arena_create()
9045 necp_arena_stats_obj_alloc(struct necp_fd_data *fd_data, in necp_arena_stats_obj_alloc() argument
9061 NECP_FD_ASSERT_LOCKED(fd_data); in necp_arena_stats_obj_alloc()
9062 ASSERT(fd_data->stats_arena_active != NULL); in necp_arena_stats_obj_alloc()
9063 ASSERT(fd_data->stats_arena_active->nai_arena != NULL); in necp_arena_stats_obj_alloc()
9065 kstats_cp = skmem_arena_necp(fd_data->stats_arena_active->nai_arena)->arc_kstats_cache; in necp_arena_stats_obj_alloc()
9078 *stats_arena = fd_data->stats_arena_active; in necp_arena_stats_obj_alloc()
9081 *off = fd_data->stats_arena_active->nai_roff + SKMEM_OBJ_ROFF(&kstats_oi); in necp_arena_stats_obj_alloc()
9087 necp_arena_stats_obj_free(struct necp_fd_data *fd_data, struct necp_arena_info *stats_arena, void *… in necp_arena_stats_obj_free() argument
9089 #pragma unused(fd_data) in necp_arena_stats_obj_free()
9090 NECP_FD_ASSERT_LOCKED(fd_data); in necp_arena_stats_obj_free()
9106 necp_arena_sysctls_obj(struct necp_fd_data *fd_data, mach_vm_offset_t *off, size_t *size) in necp_arena_sysctls_obj() argument
9110 NECP_FD_ASSERT_LOCKED(fd_data); in necp_arena_sysctls_obj()
9111 ASSERT(fd_data->sysctl_arena != NULL); in necp_arena_sysctls_obj()
9114 objaddr = skmem_arena_system_sysctls_obj_addr(fd_data->sysctl_arena); in necp_arena_sysctls_obj()
9123 *off = fd_data->system_sysctls_roff; in necp_arena_sysctls_obj()
9127 *size = skmem_arena_system_sysctls_obj_size(fd_data->sysctl_arena); in necp_arena_sysctls_obj()
9135 necp_stats_arenas_destroy(struct necp_fd_data *fd_data, boolean_t closing) in necp_stats_arenas_destroy() argument
9139 NECP_FD_ASSERT_LOCKED(fd_data); in necp_stats_arenas_destroy()
9143 if ((nai = fd_data->stats_arena_active) != NULL && (closing || nai->nai_use_count == 2)) { in necp_stats_arenas_destroy()
9146 fd_data->stats_arena_active = NULL; in necp_stats_arenas_destroy()
9150 LIST_FOREACH_SAFE(nai, &fd_data->stats_arena_list, nai_chain, nai_tmp) { in necp_stats_arenas_destroy()
9155 necp_fd_remove_stats_arena(fd_data, nai); in necp_stats_arenas_destroy()
9161 necp_sysctl_arena_destroy(struct necp_fd_data *fd_data) in necp_sysctl_arena_destroy() argument
9163 NECP_FD_ASSERT_LOCKED(fd_data); in necp_sysctl_arena_destroy()
9167 if (fd_data->sysctl_arena != NULL) { in necp_sysctl_arena_destroy()
9168 skmem_arena_munmap(fd_data->sysctl_arena, &fd_data->sysctl_mmap); in necp_sysctl_arena_destroy()
9169 skmem_arena_release(fd_data->sysctl_arena); in necp_sysctl_arena_destroy()
9171 fd_data->sysctl_arena = NULL; in necp_sysctl_arena_destroy()
9172 fd_data->system_sysctls_roff = 0; in necp_sysctl_arena_destroy()
9177 necp_arena_initialize(struct necp_fd_data *fd_data, bool locked) in necp_arena_initialize() argument
9183 NECP_FD_LOCK(fd_data); in necp_arena_initialize()
9185 if (fd_data->stats_arena_active == NULL) { in necp_arena_initialize()
9186 error = necp_arena_create(fd_data, stats_obj_size, in necp_arena_initialize()
9191 NECP_FD_UNLOCK(fd_data); in necp_arena_initialize()
9198 necp_sysctl_arena_initialize(struct necp_fd_data *fd_data, bool locked) in necp_sysctl_arena_initialize() argument
9203 NECP_FD_LOCK(fd_data); in necp_sysctl_arena_initialize()
9206 NECP_FD_ASSERT_LOCKED(fd_data); in necp_sysctl_arena_initialize()
9208 if (fd_data->sysctl_arena == NULL) { in necp_sysctl_arena_initialize()
9213 ASSERT(proc_pid(p) == fd_data->proc_pid); in necp_sysctl_arena_initialize()
9215 (void) snprintf(name, sizeof(name), "sysctl.%s.%d", proc_name_address(p), fd_data->proc_pid); in necp_sysctl_arena_initialize()
9216 fd_data->sysctl_arena = skmem_arena_create_for_system(name, &error); in necp_sysctl_arena_initialize()
9217 ASSERT(fd_data->sysctl_arena != NULL || error != 0); in necp_sysctl_arena_initialize()
9219 NECPLOG(LOG_ERR, "failed to create arena for pid %d\n", fd_data->proc_pid); in necp_sysctl_arena_initialize()
9226fd_data->system_sysctls_roff = skmem_arena_get_region_offset(fd_data->sysctl_arena, SKMEM_REGION_S… in necp_sysctl_arena_initialize()
9231 error = skmem_arena_mmap(fd_data->sysctl_arena, p, &fd_data->sysctl_mmap); in necp_sysctl_arena_initialize()
9233 NECPLOG(LOG_ERR, "failed to map sysctl arena for pid %d\n", fd_data->proc_pid); in necp_sysctl_arena_initialize()
9234 necp_sysctl_arena_destroy(fd_data); in necp_sysctl_arena_initialize()
9240 NECP_FD_UNLOCK(fd_data); in necp_sysctl_arena_initialize()
9247 necp_client_stats_bufreq(struct necp_fd_data *fd_data, in necp_client_stats_bufreq() argument
9255 NECP_FD_ASSERT_LOCKED(fd_data); in necp_client_stats_bufreq()
9272 …error = necp_arena_stats_obj_alloc(fd_data, &off, &flow_registration->stats_arena, &flow_registrat… in necp_client_stats_bufreq()
9372 necp_stats_initialize(struct necp_fd_data *fd_data, in necp_stats_initialize() argument
9381 NECP_FD_ASSERT_LOCKED(fd_data); in necp_stats_initialize()
9382 VERIFY(fd_data->stats_arena_active != NULL); in necp_stats_initialize()
9383 VERIFY(fd_data->stats_arena_active->nai_arena != NULL); in necp_stats_initialize()
9384 VERIFY(!(fd_data->stats_arena_active->nai_flags & (NAIF_REDIRECT | NAIF_DEFUNCT))); in necp_stats_initialize()
9391 error = necp_client_stats_bufreq(fd_data, client, flow_registration, bufreq, &stats_hdr); in necp_stats_initialize()
9408 necp_client_map_sysctls(__unused struct necp_fd_data *fd_data, struct necp_client_action_args *uap,… in necp_client_map_sysctls() argument
9422 *retval = necp_sysctl_arena_initialize(fd_data, false); in necp_client_map_sysctls()
9429 NECP_FD_LOCK(fd_data); in necp_client_map_sysctls()
9430 location = necp_arena_sysctls_obj(fd_data, &off, NULL); in necp_client_map_sysctls()
9431 NECP_FD_UNLOCK(fd_data); in necp_client_map_sysctls()
9438 uaddr = fd_data->sysctl_mmap.ami_mapaddr + off; in necp_client_map_sysctls()
9448 necp_client_copy_route_statistics(__unused struct necp_fd_data *fd_data, struct necp_client_action_… in necp_client_copy_route_statistics() argument
9468 NECP_FD_LOCK(fd_data); in necp_client_copy_route_statistics()
9469 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_copy_route_statistics()
9493 NECP_FD_UNLOCK(fd_data); in necp_client_copy_route_statistics()
9501 NECP_FD_UNLOCK(fd_data); in necp_client_copy_route_statistics()
9512 necp_client_update_cache(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *re… in necp_client_update_cache() argument
9529 NECP_FD_LOCK(fd_data); in necp_client_update_cache()
9530 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_update_cache()
9532 NECP_FD_UNLOCK(fd_data); in necp_client_update_cache()
9540 NECP_FD_UNLOCK(fd_data); in necp_client_update_cache()
9628 NECP_FD_UNLOCK(fd_data); in necp_client_update_cache()
9640 necp_client_sign(__unused struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *r… in necp_client_sign() argument
9753 struct necp_fd_data *fd_data = NULL; in necp_client_action() local
9755 error = necp_find_fd_data(p, uap->necp_fd, &fp, &fd_data); in necp_client_action()
9773 return_value = necp_client_add(p, fd_data, uap, retval); in necp_client_action()
9777 return_value = necp_client_claim(p, fd_data, uap, retval); in necp_client_action()
9781 return_value = necp_client_remove(fd_data, uap, retval); in necp_client_action()
9787 return_value = necp_client_copy(fd_data, uap, retval); in necp_client_action()
9791 return_value = necp_client_list(fd_data, uap, retval); in necp_client_action()
9795 return_value = necp_client_add_flow(fd_data, uap, retval); in necp_client_action()
9799 return_value = necp_client_remove_flow(fd_data, uap, retval); in necp_client_action()
9804 return_value = necp_client_request_nexus(fd_data, uap, retval); in necp_client_action()
9809 return_value = necp_client_agent_action(fd_data, uap, retval); in necp_client_action()
9813 return_value = necp_client_copy_agent(fd_data, uap, retval); in necp_client_action()
9817 return_value = necp_client_agent_use(fd_data, uap, retval); in necp_client_action()
9821 return_value = necp_client_acquire_agent_token(fd_data, uap, retval); in necp_client_action()
9825 return_value = necp_client_copy_interface(fd_data, uap, retval); in necp_client_action()
9830 return_value = necp_client_get_interface_address(fd_data, uap, retval); in necp_client_action()
9838 return_value = necp_client_map_sysctls(fd_data, uap, retval); in necp_client_action()
9843 return_value = necp_client_copy_route_statistics(fd_data, uap, retval); in necp_client_action()
9847 return_value = necp_client_update_cache(fd_data, uap, retval); in necp_client_action()
9851 return_value = necp_client_copy_client_update(fd_data, uap, retval); in necp_client_action()
9855 return_value = necp_client_sign(fd_data, uap, retval); in necp_client_action()
10452 struct necp_fd_data *fd_data = container_of(arena_info, struct necp_fd_data, sysctl_mmap); in necp_client_get_proc_pid_from_arena_info() local
10453 return fd_data->proc_pid; in necp_client_get_proc_pid_from_arena_info()