Lines Matching refs:nai

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);
728 static void necp_arena_info_retain(struct necp_arena_info *nai);
729 static void necp_arena_info_release(struct necp_arena_info *nai);
731 static void necp_arena_info_free(struct necp_arena_info *nai);
4862 struct necp_arena_info *nai = necp_fd_mredirect_stats_arena(client_fd, proc); in necp_defunct_client_fd_locked() local
4869 if (nai != NULL) { in necp_defunct_client_fd_locked()
4870 ASSERT((nai->nai_flags & (NAIF_REDIRECT | NAIF_DEFUNCT)) == NAIF_REDIRECT); in necp_defunct_client_fd_locked()
4871 ASSERT(nai->nai_arena != NULL); in necp_defunct_client_fd_locked()
4872 ASSERT(nai->nai_mmap.ami_mapref != NULL); in necp_defunct_client_fd_locked()
4874 int err = skmem_arena_defunct(nai->nai_arena); in necp_defunct_client_fd_locked()
4877 nai->nai_flags |= NAIF_DEFUNCT; in necp_defunct_client_fd_locked()
8866 necp_fd_insert_stats_arena(struct necp_fd_data *fd_data, struct necp_arena_info *nai) in necp_fd_insert_stats_arena() argument
8869 VERIFY(!(nai->nai_flags & NAIF_ATTACHED)); in necp_fd_insert_stats_arena()
8870 VERIFY(nai->nai_chain.le_next == NULL && nai->nai_chain.le_prev == NULL); in necp_fd_insert_stats_arena()
8872 LIST_INSERT_HEAD(&fd_data->stats_arena_list, nai, nai_chain); in necp_fd_insert_stats_arena()
8873 nai->nai_flags |= NAIF_ATTACHED; in necp_fd_insert_stats_arena()
8874 necp_arena_info_retain(nai); // for the list 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
8882 VERIFY(nai->nai_flags & NAIF_ATTACHED); in necp_fd_remove_stats_arena()
8883 VERIFY(nai->nai_use_count >= 1); in necp_fd_remove_stats_arena()
8885 LIST_REMOVE(nai, nai_chain); in necp_fd_remove_stats_arena()
8886 nai->nai_flags &= ~NAIF_ATTACHED; in necp_fd_remove_stats_arena()
8887 nai->nai_chain.le_next = NULL; in necp_fd_remove_stats_arena()
8888 nai->nai_chain.le_prev = NULL; in necp_fd_remove_stats_arena()
8889 necp_arena_info_release(nai); // for the list in necp_fd_remove_stats_arena()
8895 struct necp_arena_info *nai, *nai_ret = NULL; in necp_fd_mredirect_stats_arena() local
8902 if ((nai = fd_data->stats_arena_active) != NULL) { in necp_fd_mredirect_stats_arena()
8905 ASSERT(!(nai->nai_flags & (NAIF_REDIRECT | NAIF_DEFUNCT))); in necp_fd_mredirect_stats_arena()
8906 VERIFY(nai->nai_use_count >= 2); in necp_fd_mredirect_stats_arena()
8907 ASSERT(nai->nai_arena != NULL); in necp_fd_mredirect_stats_arena()
8908 ASSERT(nai->nai_mmap.ami_mapref != NULL); in necp_fd_mredirect_stats_arena()
8910 int err = skmem_arena_mredirect(nai->nai_arena, &nai->nai_mmap, proc, &need_defunct); in necp_fd_mredirect_stats_arena()
8915 nai->nai_flags |= NAIF_REDIRECT; in necp_fd_mredirect_stats_arena()
8916 nai_ret = nai; // return to caller in necp_fd_mredirect_stats_arena()
8918 necp_arena_info_release(nai); // for fd_data 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()
8925 ASSERT(nai->nai_use_count >= 1); in necp_fd_mredirect_stats_arena()
8926 ASSERT(nai->nai_flags & (NAIF_REDIRECT | NAIF_DEFUNCT)); in necp_fd_mredirect_stats_arena()
8934 necp_arena_info_retain(struct necp_arena_info *nai) in necp_arena_info_retain() argument
8936 nai->nai_use_count++; in necp_arena_info_retain()
8937 VERIFY(nai->nai_use_count != 0); in necp_arena_info_retain()
8941 necp_arena_info_release(struct necp_arena_info *nai) in necp_arena_info_release() argument
8943 VERIFY(nai->nai_use_count > 0); in necp_arena_info_release()
8944 if (--nai->nai_use_count == 0) { in necp_arena_info_release()
8945 necp_arena_info_free(nai); in necp_arena_info_release()
8956 necp_arena_info_free(struct necp_arena_info *nai) in necp_arena_info_free() argument
8958 VERIFY(nai->nai_chain.le_next == NULL && nai->nai_chain.le_prev == NULL); in necp_arena_info_free()
8959 VERIFY(nai->nai_use_count == 0); in necp_arena_info_free()
8963 if (nai->nai_arena != NULL) { in necp_arena_info_free()
8964 skmem_arena_munmap(nai->nai_arena, &nai->nai_mmap); in necp_arena_info_free()
8965 skmem_arena_release(nai->nai_arena); in necp_arena_info_free()
8967 nai->nai_arena = NULL; in necp_arena_info_free()
8968 nai->nai_roff = 0; in necp_arena_info_free()
8971 ASSERT(nai->nai_arena == NULL); in necp_arena_info_free()
8972 ASSERT(nai->nai_mmap.ami_mapref == NULL); in necp_arena_info_free()
8973 ASSERT(nai->nai_mmap.ami_arena == NULL); in necp_arena_info_free()
8974 ASSERT(nai->nai_mmap.ami_maptask == TASK_NULL); in necp_arena_info_free()
8976 zfree(necp_arena_info_zone, nai); in necp_arena_info_free()
8984 struct necp_arena_info *nai; in necp_arena_create() local
9007 nai = necp_arena_info_alloc(); in necp_arena_create()
9009 nai->nai_proc_pid = fd_data->proc_pid; in necp_arena_create()
9011 nai->nai_arena = skmem_arena_create_for_necp(name, &srp_ustats, &srp_kstats, &error); in necp_arena_create()
9012 ASSERT(nai->nai_arena != NULL || error != 0); in necp_arena_create()
9021 nai->nai_roff = skmem_arena_get_region_offset(nai->nai_arena, SKMEM_REGION_USTATS); in necp_arena_create()
9026 error = skmem_arena_mmap(nai->nai_arena, p, &nai->nai_mmap); in necp_arena_create()
9033 fd_data->stats_arena_active = nai; in necp_arena_create()
9034 necp_arena_info_retain(nai); // for fd_data in necp_arena_create()
9035 necp_fd_insert_stats_arena(fd_data, nai); in necp_arena_create()
9038 necp_arena_info_free(nai); in necp_arena_create()
9137 struct necp_arena_info *nai, *nai_tmp; in necp_stats_arenas_destroy() local
9143 if ((nai = fd_data->stats_arena_active) != NULL && (closing || nai->nai_use_count == 2)) { in necp_stats_arenas_destroy()
9144 VERIFY(nai->nai_use_count >= 2); in necp_stats_arenas_destroy()
9145 necp_arena_info_release(nai); // for fd_data in necp_stats_arenas_destroy()
9150 LIST_FOREACH_SAFE(nai, &fd_data->stats_arena_list, nai_chain, nai_tmp) { in necp_stats_arenas_destroy()
9152 if (closing || nai->nai_use_count == 1) { in necp_stats_arenas_destroy()
9153 VERIFY(nai->nai_use_count >= 1); in necp_stats_arenas_destroy()
9155 necp_fd_remove_stats_arena(fd_data, nai); in necp_stats_arenas_destroy()
10449 struct necp_arena_info *nai = container_of(arena_info, struct necp_arena_info, nai_mmap); in necp_client_get_proc_pid_from_arena_info() local
10450 return nai->nai_proc_pid; in necp_client_get_proc_pid_from_arena_info()