Lines Matching refs:fd_data
775 static void necp_fd_insert_stats_arena(struct necp_fd_data *fd_data, struct necp_arena_info *nai);
776 static void necp_fd_remove_stats_arena(struct necp_fd_data *fd_data, struct necp_arena_info *nai);
777 static struct necp_arena_info *necp_fd_mredirect_stats_arena(struct necp_fd_data *fd_data, struct p…
784 static int necp_arena_initialize(struct necp_fd_data *fd_data, bool locked);
785 static int necp_stats_initialize(struct necp_fd_data *fd_data, struct necp_client *client,
787 static int necp_arena_create(struct necp_fd_data *fd_data, size_t obj_size, size_t obj_cnt, struct …
788 static int necp_arena_stats_obj_alloc(struct necp_fd_data *fd_data, mach_vm_offset_t *off, struct n…
789 static void necp_arena_stats_obj_free(struct necp_fd_data *fd_data, struct necp_arena_info *stats_a…
790 static void necp_stats_arenas_destroy(struct necp_fd_data *fd_data, boolean_t closing);
792 static int necp_sysctl_arena_initialize(struct necp_fd_data *fd_data, bool locked);
793 static void necp_sysctl_arena_destroy(struct necp_fd_data *fd_data);
794 static void *necp_arena_sysctls_obj(struct necp_fd_data *fd_data, mach_vm_offset_t *off, size_t *si…
916 necp_fd_notify(struct necp_fd_data *fd_data, bool locked) in necp_fd_notify() argument
918 struct selinfo *si = &fd_data->si; in necp_fd_notify()
921 NECP_FD_LOCK(fd_data); in necp_fd_notify()
931 NECP_FD_UNLOCK(fd_data); in necp_fd_notify()
949 necp_fd_poll(struct necp_fd_data *fd_data, int events, void *wql, struct proc *p, int is_kevent) in necp_fd_poll() argument
956 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necp_fd_poll()
958 if (!TAILQ_EMPTY(&fd_data->update_list)) { in necp_fd_poll()
965 RB_FOREACH(client, _necp_client_tree, &fd_data->clients) { in necp_fd_poll()
976 if (has_unread_clients || fd_data->request_in_process_flow_divert) { in necp_fd_poll()
1099 struct necp_fd_data *fd_data = NULL; in necpop_select() local
1104 fd_data = (struct necp_fd_data *)fp_get_data(fp); in necpop_select()
1105 if (fd_data == NULL) { in necpop_select()
1122 NECP_FD_LOCK(fd_data); in necpop_select()
1123 revents = necp_fd_poll(fd_data, events, wql, procp, 0); in necpop_select()
1124 NECP_FD_UNLOCK(fd_data); in necpop_select()
1132 struct necp_fd_data *fd_data = (struct necp_fd_data *)knote_kn_hook_get_raw(kn); in necp_fd_knrdetach() local
1133 struct selinfo *si = &fd_data->si; in necp_fd_knrdetach()
1135 NECP_FD_LOCK(fd_data); in necp_fd_knrdetach()
1137 NECP_FD_UNLOCK(fd_data); in necp_fd_knrdetach()
1150 struct necp_fd_data *fd_data; in necp_fd_knrprocess() local
1154 fd_data = (struct necp_fd_data *)knote_kn_hook_get_raw(kn); in necp_fd_knrprocess()
1156 NECP_FD_LOCK(fd_data); in necp_fd_knrprocess()
1157 revents = necp_fd_poll(fd_data, POLLIN, NULL, current_proc(), 1); in necp_fd_knrprocess()
1162 NECP_FD_UNLOCK(fd_data); in necp_fd_knrprocess()
1170 struct necp_fd_data *fd_data; in necp_fd_knrtouch() local
1173 fd_data = (struct necp_fd_data *)knote_kn_hook_get_raw(kn); in necp_fd_knrtouch()
1175 NECP_FD_LOCK(fd_data); in necp_fd_knrtouch()
1176 revents = necp_fd_poll(fd_data, POLLIN, NULL, current_proc(), 1); in necp_fd_knrtouch()
1177 NECP_FD_UNLOCK(fd_data); in necp_fd_knrtouch()
1194 struct necp_fd_data *fd_data = NULL; in necpop_kqfilter() local
1203 fd_data = (struct necp_fd_data *)fp_get_data(fp); in necpop_kqfilter()
1204 if (fd_data == NULL) { in necpop_kqfilter()
1210 NECP_FD_LOCK(fd_data); in necpop_kqfilter()
1212 knote_kn_hook_set_raw(kn, fd_data); in necpop_kqfilter()
1213 KNOTE_ATTACH(&fd_data->si.si_note, kn); in necpop_kqfilter()
1215 revents = necp_fd_poll(fd_data, POLLIN, NULL, current_proc(), 1); in necpop_kqfilter()
1217 NECP_FD_UNLOCK(fd_data); in necpop_kqfilter()
1448 necp_destroy_flow_stats(struct necp_fd_data *fd_data, in necp_destroy_flow_stats() argument
1453 NECP_FD_ASSERT_LOCKED(fd_data); in necp_destroy_flow_stats()
1481 …necp_arena_stats_obj_free(fd_data, flow_registration->stats_arena, &flow_registration->kstats_kadd… in necp_destroy_flow_stats()
2020 struct necp_fd_data * __single fd_data = NULL; in necpop_close() local
2023 fd_data = (struct necp_fd_data *)fg_get_data(fg); in necpop_close()
2026 if (fd_data != NULL) { in necpop_close()
2031 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necpop_close()
2033 LIST_REMOVE(fd_data, chain); in necpop_close()
2037 LIST_REMOVE(fd_data, chain); in necpop_close()
2041 NECP_FD_LOCK(fd_data); in necpop_close()
2042 pid_t pid = fd_data->proc_pid; in necpop_close()
2047 (void)necp_defunct_client_fd_locked_inner(fd_data, &defunct_list, false); in necpop_close()
2051 RB_FOREACH_SAFE(flow_registration, _necp_fd_flow_tree, &fd_data->flows, temp_flow_registration) { in necpop_close()
2053 necp_destroy_flow_stats(fd_data, flow_registration, NULL, TRUE); in necpop_close()
2058 RB_REMOVE(_necp_fd_flow_tree, &fd_data->flows, flow_registration); in necpop_close()
2063 RB_FOREACH_SAFE(client, _necp_client_tree, &fd_data->clients, temp_client) { in necpop_close()
2072 RB_REMOVE(_necp_client_tree, &fd_data->clients, client); in necpop_close()
2078 TAILQ_FOREACH_SAFE(client_update, &fd_data->update_list, chain, temp_update) { in necpop_close()
2080 TAILQ_REMOVE(&fd_data->update_list, client_update, chain); in necpop_close()
2083 fd_data->update_count = 0; in necpop_close()
2087 necp_stats_arenas_destroy(fd_data, TRUE); in necpop_close()
2088 ASSERT(fd_data->stats_arena_active == NULL); in necpop_close()
2089 ASSERT(LIST_EMPTY(&fd_data->stats_arena_list)); in necpop_close()
2092 necp_sysctl_arena_destroy(fd_data); in necpop_close()
2093 ASSERT(fd_data->sysctl_arena == NULL); in necpop_close()
2096 NECP_FD_UNLOCK(fd_data); in necpop_close()
2098 selthreadclear(&fd_data->si); in necpop_close()
2100 lck_mtx_destroy(&fd_data->fd_lock, &necp_fd_mtx_grp); in necpop_close()
2102 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necpop_close()
2108 kfree_type(struct necp_fd_data, fd_data); in necpop_close()
2132 struct fileproc **fpp, struct necp_fd_data **fd_data) in necp_find_fd_data() argument
2138 *fd_data = (struct necp_fd_data *)fp_get_data(fp); in necp_find_fd_data()
2141 if ((*fd_data)->necp_fd_type != necp_fd_type_client) { in necp_find_fd_data()
3601 necp_client_create_flow_registration(struct necp_fd_data *fd_data, struct necp_client *client) in necp_client_create_flow_registration() argument
3603 NECP_FD_ASSERT_LOCKED(fd_data); in necp_client_create_flow_registration()
3617 RB_INSERT(_necp_fd_flow_tree, &fd_data->flows, new_registration); in necp_client_create_flow_registration()
7722 struct necp_fd_data * __single fd_data = NULL; in necp_open() local
7748 fd_data = kalloc_type(struct necp_fd_data, Z_WAITOK | Z_ZERO | Z_NOFAIL); in necp_open()
7750 fd_data->necp_fd_type = necp_fd_type_client; in necp_open()
7751 fd_data->flags = uap->flags; in necp_open()
7752 RB_INIT(&fd_data->clients); in necp_open()
7753 RB_INIT(&fd_data->flows); in necp_open()
7754 TAILQ_INIT(&fd_data->update_list); in necp_open()
7755 lck_mtx_init(&fd_data->fd_lock, &necp_fd_mtx_grp, &necp_fd_mtx_attr); in necp_open()
7756 klist_init(&fd_data->si.si_note); in necp_open()
7757 fd_data->proc_pid = proc_pid(p); in necp_open()
7759 LIST_INIT(&fd_data->stats_arena_list); in necp_open()
7765 fp_set_data(fp, fd_data); in necp_open()
7774 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necp_open()
7776 LIST_INSERT_HEAD(&necp_fd_observer_list, fd_data, chain); in necp_open()
7785 necp_client_update_observer_add_internal(fd_data, existing_client); in necp_open()
7786 necp_client_update_observer_update_internal(fd_data, existing_client); in necp_open()
7792 LIST_INSERT_HEAD(&necp_fd_list, fd_data, chain); in necp_open()
7805 if (fd_data != NULL) { in necp_open()
7806 kfree_type(struct necp_fd_data, fd_data); in necp_open()
7819 necp_client_add(struct proc *p, struct necp_fd_data *fd_data, struct necp_client_action_args *uap, … in necp_client_add() argument
7826 if (fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER) { in necp_client_add()
7850 client->proc_pid = fd_data->proc_pid; // Save off proc pid in case the client will persist past fd in necp_client_add()
7851 client->agent_handle = (void *)fd_data; in necp_client_add()
8009 NECP_FD_LOCK(fd_data); in necp_client_add()
8010 parent = necp_client_fd_find_client_unlocked(fd_data, parsed_parameters.parent_uuid); in necp_client_add()
8020 NECP_FD_UNLOCK(fd_data); in necp_client_add()
8088 NECP_FD_LOCK(fd_data); in necp_client_add()
8089 RB_INSERT(_necp_client_tree, &fd_data->clients, client); in necp_client_add()
8097 (void)necp_update_client_result(current_proc(), fd_data, client, NULL); in necp_client_add()
8100 NECP_FD_UNLOCK(fd_data); in necp_client_add()
8119 necp_client_claim(struct proc *p, struct necp_fd_data *fd_data, struct necp_client_action_args *uap… in necp_client_claim() argument
8174 client->proc_pid = fd_data->proc_pid; // Transfer client to claiming pid in necp_client_claim()
8175 client->agent_handle = (void *)fd_data; in necp_client_claim()
8181 NECP_FD_LOCK(fd_data); in necp_client_claim()
8182 RB_INSERT(_necp_client_tree, &fd_data->clients, client); in necp_client_claim()
8184 (void)necp_update_client_result(current_proc(), fd_data, client, NULL); in necp_client_claim()
8186 NECP_FD_UNLOCK(fd_data); in necp_client_claim()
8197 necp_client_remove(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retval) in necp_client_remove() argument
8227 NECP_FD_LOCK(fd_data); in necp_client_remove()
8229 pid_t pid = fd_data->proc_pid; in necp_client_remove()
8230 struct necp_client *client = necp_client_fd_find_client_unlocked(fd_data, client_id); in necp_client_remove()
8238 RB_FOREACH_SAFE(flow_registration, _necp_fd_flow_tree, &fd_data->flows, temp_flow_registration) { in necp_client_remove()
8241 necp_destroy_flow_stats(fd_data, flow_registration, NULL, TRUE); in necp_client_remove()
8246 RB_REMOVE(_necp_fd_flow_tree, &fd_data->flows, flow_registration); in necp_client_remove()
8262 RB_REMOVE(_necp_client_tree, &fd_data->clients, client); in necp_client_remove()
8270 if ((fd_data->stats_arena_active != NULL && fd_data->stats_arena_active->nai_use_count == 3) || in necp_client_remove()
8271 (fd_data->stats_arena_active == NULL && !LIST_EMPTY(&fd_data->stats_arena_list))) { in necp_client_remove()
8282 NECP_FD_UNLOCK(fd_data); in necp_client_remove()
8313 necp_client_remove_flow(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *ret… in necp_client_remove_flow() argument
8342 NECP_FD_LOCK(fd_data); in necp_client_remove_flow()
8344 …struct necp_client_flow_registration *flow_registration = necp_client_fd_find_flow(fd_data, flow_i… in necp_client_remove_flow()
8348 necp_destroy_flow_stats(fd_data, flow_registration, &flow_ifnet_stats, TRUE); in necp_client_remove_flow()
8353 RB_REMOVE(_necp_fd_flow_tree, &fd_data->flows, flow_registration); in necp_client_remove_flow()
8360 NECP_FD_UNLOCK(fd_data); in necp_client_remove_flow()
8368 necp_destroy_client_flow_registration(client, flow_registration, fd_data->proc_pid, abort); in necp_client_remove_flow()
8932 necp_client_copy(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retval) in necp_client_copy() argument
8967 NECP_FD_LOCK(fd_data); in necp_client_copy()
8975 RB_FOREACH(find_client, _necp_client_tree, &fd_data->clients) { in necp_client_copy()
8985 if (client == NULL && fd_data->request_in_process_flow_divert) { in necp_client_copy()
8991 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_copy()
9003 fd_data->request_in_process_flow_divert = false; in necp_client_copy()
9022 NECP_FD_UNLOCK(fd_data); in necp_client_copy()
9025 if (fd_data->flags & NECP_OPEN_FLAG_OBSERVER) { in necp_client_copy()
9058 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
9064 if (!(fd_data->flags & NECP_OPEN_FLAG_PUSH_OBSERVER)) { in necp_client_copy_client_update()
9079 NECP_FD_LOCK(fd_data); in necp_client_copy_client_update()
9080 struct necp_client_update *client_update = TAILQ_FIRST(&fd_data->update_list); in necp_client_copy_client_update()
9082 TAILQ_REMOVE(&fd_data->update_list, client_update, chain); in necp_client_copy_client_update()
9083 VERIFY(fd_data->update_count > 0); in necp_client_copy_client_update()
9084 fd_data->update_count--; in necp_client_copy_client_update()
9086 NECP_FD_UNLOCK(fd_data); in necp_client_copy_client_update()
9232 necp_client_list(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retval) in necp_client_list() argument
9246 if (!(fd_data->flags & NECP_OPEN_FLAG_OBSERVER)) { in necp_client_list()
9323 necp_client_add_flow(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retval) in necp_client_add_flow() argument
9379 NECP_FD_LOCK(fd_data); in necp_client_add_flow()
9380 pid_t pid = fd_data->proc_pid; in necp_client_add_flow()
9383 NECP_FD_UNLOCK(fd_data); in necp_client_add_flow()
9389 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_add_flow()
9392 NECP_FD_UNLOCK(fd_data); in necp_client_add_flow()
9402 …client_flow_registration *new_registration = necp_client_create_flow_registration(fd_data, client); in necp_client_add_flow()
9406 NECP_FD_UNLOCK(fd_data); in necp_client_add_flow()
9526 …if (!necp_assign_client_result_locked(proc, fd_data, client, new_registration, add_request->agent_… in necp_client_add_flow()
9557 …if (error == 0 && add_request->stats_request_count > 0 && necp_arena_initialize(fd_data, true) == … in necp_client_add_flow()
9568 (void)necp_stats_initialize(fd_data, client, new_registration, &bufreq); in necp_client_add_flow()
9624 necp_destroy_flow_stats(fd_data, new_registration, NULL, false); in necp_client_add_flow()
9629 RB_REMOVE(_necp_fd_flow_tree, &fd_data->flows, new_registration); in necp_client_add_flow()
9630 necp_destroy_client_flow_registration(client, new_registration, fd_data->proc_pid, true); in necp_client_add_flow()
9635 NECP_FD_UNLOCK(fd_data); in necp_client_add_flow()
9668 necp_client_request_nexus(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *r… in necp_client_request_nexus() argument
9688 NECP_FD_LOCK(fd_data); in necp_client_request_nexus()
9689 pid_t pid = fd_data->proc_pid; in necp_client_request_nexus()
9692 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
9698 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_request_nexus()
9700 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
9741 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
9748 …client_flow_registration *new_registration = necp_client_create_flow_registration(fd_data, client); in necp_client_request_nexus()
9752 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
9775 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
9784 if (!necp_assign_client_result_locked(proc, fd_data, client, new_registration, nexus_uuid, in necp_client_request_nexus()
9791 necp_arena_initialize(fd_data, true) == 0) { in necp_client_request_nexus()
9797 (void)necp_stats_initialize(fd_data, client, new_registration, &bufreq); in necp_client_request_nexus()
9807 NECP_FD_UNLOCK(fd_data); in necp_client_request_nexus()
9860 necp_client_agent_action(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *re… in necp_client_agent_action() argument
9900 NECP_FD_LOCK(fd_data); in necp_client_agent_action()
9901 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_agent_action()
9949 fd_data->proc_pid, in necp_client_agent_action()
9982 fd_data->proc_pid, in necp_client_agent_action()
10003 if (uuid_compare(agent_uuid, fd_data->reported_agents.agent_uuid[agent_i]) == 0) { in necp_client_agent_action()
10014 if (uuid_is_null(fd_data->reported_agents.agent_uuid[agent_i])) { in necp_client_agent_action()
10015 uuid_copy(fd_data->reported_agents.agent_uuid[agent_i], agent_uuid); in necp_client_agent_action()
10024 …uuid_copy(fd_data->reported_agents.agent_uuid[agent_i], fd_data->reported_agents.agent_uuid[agent_… in necp_client_agent_action()
10026 uuid_copy(fd_data->reported_agents.agent_uuid[agent_i], agent_uuid); in necp_client_agent_action()
10035 fd_data->proc_pid, in necp_client_agent_action()
10053 NECP_FD_UNLOCK(fd_data); in necp_client_agent_action()
10070 necp_client_copy_agent(__unused struct necp_fd_data *fd_data, struct necp_client_action_args *uap, … in necp_client_copy_agent() argument
10101 necp_client_agent_use(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *retva… in necp_client_agent_use() argument
10127 NECP_FD_LOCK(fd_data); in necp_client_agent_use()
10128 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_agent_use()
10136 NECP_FD_UNLOCK(fd_data); in necp_client_agent_use()
10153 necp_client_acquire_agent_token(__unused struct necp_fd_data *fd_data, struct necp_client_action_ar… in necp_client_acquire_agent_token() argument
10180 necp_client_copy_interface(__unused struct necp_fd_data *fd_data, struct necp_client_action_args *u… in necp_client_copy_interface() argument
10351 necp_client_get_interface_address(__unused struct necp_fd_data *fd_data, struct necp_client_action_… in necp_client_get_interface_address() argument
10475 necp_fd_insert_stats_arena(struct necp_fd_data *fd_data, struct necp_arena_info *nai) in necp_fd_insert_stats_arena() argument
10477 NECP_FD_ASSERT_LOCKED(fd_data); in necp_fd_insert_stats_arena()
10481 LIST_INSERT_HEAD(&fd_data->stats_arena_list, nai, nai_chain); in necp_fd_insert_stats_arena()
10487 necp_fd_remove_stats_arena(struct necp_fd_data *fd_data, struct necp_arena_info *nai) in necp_fd_remove_stats_arena() argument
10489 #pragma unused(fd_data) in necp_fd_remove_stats_arena()
10490 NECP_FD_ASSERT_LOCKED(fd_data); in necp_fd_remove_stats_arena()
10502 necp_fd_mredirect_stats_arena(struct necp_fd_data *fd_data, struct proc *proc) in necp_fd_mredirect_stats_arena() argument
10506 NECP_FD_ASSERT_LOCKED(fd_data); in necp_fd_mredirect_stats_arena()
10511 if ((nai = fd_data->stats_arena_active) != NULL) { in necp_fd_mredirect_stats_arena()
10528 fd_data->stats_arena_active = nai = NULL; in necp_fd_mredirect_stats_arena()
10533 LIST_FOREACH(nai, &fd_data->stats_arena_list, nai_chain) { in necp_fd_mredirect_stats_arena()
10589 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
10598 NECP_FD_ASSERT_LOCKED(fd_data); in necp_arena_create()
10599 ASSERT(fd_data->stats_arena_active == NULL); in necp_arena_create()
10601 ASSERT(proc_pid(p) == fd_data->proc_pid); in necp_arena_create()
10619 nai->nai_proc_pid = fd_data->proc_pid; in necp_arena_create()
10620 …snprintf(name, sizeof(name), "stats-%u.%s.%d", fd_data->stats_arena_gencnt, proc_name_address(p), … in necp_arena_create()
10624 NECPLOG(LOG_ERR, "failed to create stats arena for pid %d\n", fd_data->proc_pid); in necp_arena_create()
10638 NECPLOG(LOG_ERR, "failed to map stats arena for pid %d\n", fd_data->proc_pid); in necp_arena_create()
10643 fd_data->stats_arena_active = nai; in necp_arena_create()
10645 necp_fd_insert_stats_arena(fd_data, nai); in necp_arena_create()
10646 ++fd_data->stats_arena_gencnt; in necp_arena_create()
10655 necp_arena_stats_obj_alloc(struct necp_fd_data *fd_data, in necp_arena_stats_obj_alloc() argument
10674 NECP_FD_ASSERT_LOCKED(fd_data); in necp_arena_stats_obj_alloc()
10675 ASSERT(fd_data->stats_arena_active != NULL); in necp_arena_stats_obj_alloc()
10676 ASSERT(fd_data->stats_arena_active->nai_arena != NULL); in necp_arena_stats_obj_alloc()
10678 kstats_cp = skmem_arena_necp(fd_data->stats_arena_active->nai_arena)->arc_kstats_cache; in necp_arena_stats_obj_alloc()
10693 *stats_arena = fd_data->stats_arena_active; in necp_arena_stats_obj_alloc()
10696 *off = fd_data->stats_arena_active->nai_roff + SKMEM_OBJ_ROFF(&kstats_oi); in necp_arena_stats_obj_alloc()
10702 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
10704 #pragma unused(fd_data) in necp_arena_stats_obj_free()
10705 NECP_FD_ASSERT_LOCKED(fd_data); in necp_arena_stats_obj_free()
10721 necp_arena_sysctls_obj(struct necp_fd_data *fd_data, mach_vm_offset_t *off, size_t *size) in necp_arena_sysctls_obj() argument
10725 NECP_FD_ASSERT_LOCKED(fd_data); in necp_arena_sysctls_obj()
10726 ASSERT(fd_data->sysctl_arena != NULL); in necp_arena_sysctls_obj()
10729 objaddr = skmem_arena_system_sysctls_obj_addr(fd_data->sysctl_arena); in necp_arena_sysctls_obj()
10738 *off = fd_data->system_sysctls_roff; in necp_arena_sysctls_obj()
10742 *size = skmem_arena_system_sysctls_obj_size(fd_data->sysctl_arena); in necp_arena_sysctls_obj()
10750 necp_stats_arenas_destroy(struct necp_fd_data *fd_data, boolean_t closing) in necp_stats_arenas_destroy() argument
10754 NECP_FD_ASSERT_LOCKED(fd_data); in necp_stats_arenas_destroy()
10758 if ((nai = fd_data->stats_arena_active) != NULL && (closing || nai->nai_use_count == 2)) { in necp_stats_arenas_destroy()
10761 fd_data->stats_arena_active = NULL; in necp_stats_arenas_destroy()
10765 LIST_FOREACH_SAFE(nai, &fd_data->stats_arena_list, nai_chain, nai_tmp) { in necp_stats_arenas_destroy()
10770 necp_fd_remove_stats_arena(fd_data, nai); in necp_stats_arenas_destroy()
10776 necp_sysctl_arena_destroy(struct necp_fd_data *fd_data) in necp_sysctl_arena_destroy() argument
10778 NECP_FD_ASSERT_LOCKED(fd_data); in necp_sysctl_arena_destroy()
10782 if (fd_data->sysctl_arena != NULL) { in necp_sysctl_arena_destroy()
10783 skmem_arena_munmap(fd_data->sysctl_arena, &fd_data->sysctl_mmap); in necp_sysctl_arena_destroy()
10784 skmem_arena_release(fd_data->sysctl_arena); in necp_sysctl_arena_destroy()
10786 fd_data->sysctl_arena = NULL; in necp_sysctl_arena_destroy()
10787 fd_data->system_sysctls_roff = 0; in necp_sysctl_arena_destroy()
10792 necp_arena_initialize(struct necp_fd_data *fd_data, bool locked) in necp_arena_initialize() argument
10798 NECP_FD_LOCK(fd_data); in necp_arena_initialize()
10800 if (fd_data->stats_arena_active == NULL) { in necp_arena_initialize()
10801 error = necp_arena_create(fd_data, stats_obj_size, in necp_arena_initialize()
10806 NECP_FD_UNLOCK(fd_data); in necp_arena_initialize()
10813 necp_sysctl_arena_initialize(struct necp_fd_data *fd_data, bool locked) in necp_sysctl_arena_initialize() argument
10818 NECP_FD_LOCK(fd_data); in necp_sysctl_arena_initialize()
10821 NECP_FD_ASSERT_LOCKED(fd_data); in necp_sysctl_arena_initialize()
10823 if (fd_data->sysctl_arena == NULL) { in necp_sysctl_arena_initialize()
10829 ASSERT(proc_pid(p) == fd_data->proc_pid); in necp_sysctl_arena_initialize()
10831 name_ptr = tsnprintf(name, sizeof(name), "sysctl.%s.%d", proc_name_address(p), fd_data->proc_pid); in necp_sysctl_arena_initialize()
10832 fd_data->sysctl_arena = skmem_arena_create_for_system(name_ptr, &error); in necp_sysctl_arena_initialize()
10833 ASSERT(fd_data->sysctl_arena != NULL || error != 0); in necp_sysctl_arena_initialize()
10835 NECPLOG(LOG_ERR, "failed to create arena for pid %d\n", fd_data->proc_pid); in necp_sysctl_arena_initialize()
10842 …fd_data->system_sysctls_roff = skmem_arena_get_region_offset(fd_data->sysctl_arena, SKMEM_REGION_S… in necp_sysctl_arena_initialize()
10847 error = skmem_arena_mmap(fd_data->sysctl_arena, p, &fd_data->sysctl_mmap); in necp_sysctl_arena_initialize()
10849 NECPLOG(LOG_ERR, "failed to map sysctl arena for pid %d\n", fd_data->proc_pid); in necp_sysctl_arena_initialize()
10850 necp_sysctl_arena_destroy(fd_data); in necp_sysctl_arena_initialize()
10856 NECP_FD_UNLOCK(fd_data); in necp_sysctl_arena_initialize()
10863 necp_client_stats_bufreq(struct necp_fd_data *fd_data, in necp_client_stats_bufreq() argument
10871 NECP_FD_ASSERT_LOCKED(fd_data); in necp_client_stats_bufreq()
10888 …error = necp_arena_stats_obj_alloc(fd_data, &off, &flow_registration->stats_arena, &flow_registrat… in necp_client_stats_bufreq()
10989 necp_stats_initialize(struct necp_fd_data *fd_data, in necp_stats_initialize() argument
10998 NECP_FD_ASSERT_LOCKED(fd_data); in necp_stats_initialize()
10999 VERIFY(fd_data->stats_arena_active != NULL); in necp_stats_initialize()
11000 VERIFY(fd_data->stats_arena_active->nai_arena != NULL); in necp_stats_initialize()
11001 VERIFY(!(fd_data->stats_arena_active->nai_flags & (NAIF_REDIRECT | NAIF_DEFUNCT))); in necp_stats_initialize()
11008 error = necp_client_stats_bufreq(fd_data, client, flow_registration, bufreq, &stats_hdr); in necp_stats_initialize()
11070 necp_client_map_sysctls(__unused struct necp_fd_data *fd_data, struct necp_client_action_args *uap,… in necp_client_map_sysctls() argument
11084 *retval = necp_sysctl_arena_initialize(fd_data, false); in necp_client_map_sysctls()
11091 NECP_FD_LOCK(fd_data); in necp_client_map_sysctls()
11092 location = necp_arena_sysctls_obj(fd_data, &off, NULL); in necp_client_map_sysctls()
11093 NECP_FD_UNLOCK(fd_data); in necp_client_map_sysctls()
11100 uaddr = fd_data->sysctl_mmap.ami_mapaddr + off; in necp_client_map_sysctls()
11110 necp_client_copy_route_statistics(__unused struct necp_fd_data *fd_data, struct necp_client_action_… in necp_client_copy_route_statistics() argument
11130 NECP_FD_LOCK(fd_data); in necp_client_copy_route_statistics()
11131 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_copy_route_statistics()
11161 NECP_FD_UNLOCK(fd_data); in necp_client_copy_route_statistics()
11169 NECP_FD_UNLOCK(fd_data); in necp_client_copy_route_statistics()
11180 necp_client_update_cache(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *re… in necp_client_update_cache() argument
11197 NECP_FD_LOCK(fd_data); in necp_client_update_cache()
11198 client = necp_client_fd_find_client_and_lock(fd_data, client_id); in necp_client_update_cache()
11200 NECP_FD_UNLOCK(fd_data); in necp_client_update_cache()
11208 NECP_FD_UNLOCK(fd_data); in necp_client_update_cache()
11296 NECP_FD_UNLOCK(fd_data); in necp_client_update_cache()
11310 necp_client_sign(__unused struct necp_fd_data *fd_data, struct necp_client_action_args *uap, int *r… in necp_client_sign() argument
11447 necp_client_validate(__unused struct necp_fd_data *fd_data, struct necp_client_action_args *uap, in… in necp_client_validate() argument
11507 necp_client_get_signed_client_id(__unused struct necp_fd_data *fd_data, struct necp_client_action_a… in necp_client_get_signed_client_id() argument
11565 necp_client_set_signed_client_id(__unused struct necp_fd_data *fd_data, struct necp_client_action_a… in necp_client_set_signed_client_id() argument
11657 necp_client_get_flow_statistics(struct necp_fd_data *fd_data, struct necp_client_action_args *uap, … in necp_client_get_flow_statistics() argument
11693 NECP_FD_LOCK(fd_data); in necp_client_get_flow_statistics()
11695 …struct necp_client_flow_registration *flow_registration = necp_client_fd_find_flow(fd_data, flow_i… in necp_client_get_flow_statistics()
11702 NECP_FD_UNLOCK(fd_data); in necp_client_get_flow_statistics()
11735 struct necp_fd_data * __single fd_data = NULL; in necp_client_action() local
11737 error = necp_find_fd_data(p, uap->necp_fd, &fp, &fd_data); in necp_client_action()
11755 return_value = necp_client_add(p, fd_data, uap, retval); in necp_client_action()
11759 return_value = necp_client_claim(p, fd_data, uap, retval); in necp_client_action()
11763 return_value = necp_client_remove(fd_data, uap, retval); in necp_client_action()
11770 return_value = necp_client_copy(fd_data, uap, retval); in necp_client_action()
11774 return_value = necp_client_list(fd_data, uap, retval); in necp_client_action()
11778 return_value = necp_client_add_flow(fd_data, uap, retval); in necp_client_action()
11782 return_value = necp_client_remove_flow(fd_data, uap, retval); in necp_client_action()
11787 return_value = necp_client_request_nexus(fd_data, uap, retval); in necp_client_action()
11792 return_value = necp_client_agent_action(fd_data, uap, retval); in necp_client_action()
11796 return_value = necp_client_copy_agent(fd_data, uap, retval); in necp_client_action()
11800 return_value = necp_client_agent_use(fd_data, uap, retval); in necp_client_action()
11804 return_value = necp_client_acquire_agent_token(fd_data, uap, retval); in necp_client_action()
11808 return_value = necp_client_copy_interface(fd_data, uap, retval); in necp_client_action()
11813 return_value = necp_client_get_interface_address(fd_data, uap, retval); in necp_client_action()
11821 return_value = necp_client_map_sysctls(fd_data, uap, retval); in necp_client_action()
11826 return_value = necp_client_copy_route_statistics(fd_data, uap, retval); in necp_client_action()
11830 return_value = necp_client_update_cache(fd_data, uap, retval); in necp_client_action()
11834 return_value = necp_client_copy_client_update(fd_data, uap, retval); in necp_client_action()
11838 return_value = necp_client_sign(fd_data, uap, retval); in necp_client_action()
11842 return_value = necp_client_validate(fd_data, uap, retval); in necp_client_action()
11846 return_value = necp_client_get_signed_client_id(fd_data, uap, retval); in necp_client_action()
11850 return_value = necp_client_set_signed_client_id(fd_data, uap, retval); in necp_client_action()
11854 return_value = necp_client_get_flow_statistics(fd_data, uap, retval); in necp_client_action()
12554 …struct necp_fd_data * __single fd_data = __unsafe_forge_single(struct necp_fd_data *, container_of… in necp_client_get_proc_pid_from_arena_info() local
12555 return fd_data->proc_pid; in necp_client_get_proc_pid_from_arena_info()