Lines Matching refs:pcp

240 dp_pcache_poll(pollfd_t *pfdp, pollcache_t *pcp, nfds_t nfds, int *fdcntp)  in dp_pcache_poll()  argument
252 ASSERT(MUTEX_HELD(&pcp->pc_lock)); in dp_pcache_poll()
253 if (pcp->pc_bitmap == NULL) { in dp_pcache_poll()
261 start = ostart = pcp->pc_mapstart; in dp_pcache_poll()
262 end = pcp->pc_mapend; in dp_pcache_poll()
284 fd = bt_getlowbit(pcp->pc_bitmap, start, end); in dp_pcache_poll()
298 pdp = pcache_lookup_fd(pcp, fd); in dp_pcache_poll()
353 curthread->t_pollcache = pcp; in dp_pcache_poll()
374 ASSERT(BT_TEST(pcp->pc_bitmap, fd)); in dp_pcache_poll()
395 ((pcp->pc_flag & T_POLLWAKE) == 0)) { in dp_pcache_poll()
396 BT_CLEAR(pcp->pc_bitmap, fd); in dp_pcache_poll()
424 pcp->pc_mapstart = start; in dp_pcache_poll()
437 pollcache_t *pcp; in dpopen() local
478 pcp = pcache_alloc(); in dpopen()
479 dpep->dpe_pcache = pcp; in dpopen()
480 pcp->pc_pid = curproc->p_pid; in dpopen()
500 pollcache_t *pcp; in dpwrite() local
517 pcp = dpep->dpe_pcache; in dpwrite()
518 if (curproc->p_pid != pcp->pc_pid) { in dpwrite()
570 mutex_enter(&pcp->pc_lock); in dpwrite()
571 if (pcp->pc_bitmap == NULL) { in dpwrite()
572 pcache_create(pcp, pollfdnum); in dpwrite()
578 pdp = pcache_lookup_fd(pcp, fd); in dpwrite()
583 pdp->pd_pcache = pcp; in dpwrite()
584 pcache_insert_fd(pcp, pdp, pollfdnum); in dpwrite()
587 ASSERT(pdp->pd_pcache == pcp); in dpwrite()
588 if (fd >= pcp->pc_mapsize) { in dpwrite()
589 mutex_exit(&pcp->pc_lock); in dpwrite()
590 pcache_grow_map(pcp, fd); in dpwrite()
591 mutex_enter(&pcp->pc_lock); in dpwrite()
593 if (fd > pcp->pc_mapend) { in dpwrite()
594 pcp->pc_mapend = fd; in dpwrite()
603 BT_SET(pcp->pc_bitmap, fd); in dpwrite()
634 curthread->t_pollcache = pcp; in dpwrite()
645 BT_SET(pcp->pc_bitmap, fd); in dpwrite()
679 BT_CLEAR(pcp->pc_bitmap, fd); in dpwrite()
682 mutex_exit(&pcp->pc_lock); in dpwrite()
699 pollcache_t *pcp; in dpioctl() local
715 pcp = dpep->dpe_pcache; in dpioctl()
716 if (curproc->p_pid != pcp->pc_pid) in dpioctl()
805 mutex_enter(&pcp->pc_lock); in dpioctl()
807 pcp->pc_flag = 0; in dpioctl()
808 error = dp_pcache_poll(ps->ps_dpbuf, pcp, nfds, &fdcnt); in dpioctl()
815 if (pcp->pc_flag & T_POLLWAKE) in dpioctl()
825 error = cv_timedwait_sig_hrtime(&pcp->pc_cv, in dpioctl()
826 &pcp->pc_lock, deadline); in dpioctl()
838 mutex_exit(&pcp->pc_lock); in dpioctl()
862 mutex_enter(&pcp->pc_lock); in dpioctl()
863 if (pcp->pc_hash == NULL) { in dpioctl()
868 mutex_exit(&pcp->pc_lock); in dpioctl()
873 mutex_exit(&pcp->pc_lock); in dpioctl()
876 pdp = pcache_lookup_fd(pcp, pollfd.fd); in dpioctl()
881 mutex_exit(&pcp->pc_lock); in dpioctl()
887 mutex_exit(&pcp->pc_lock); in dpioctl()
923 pollcache_t *pcp; in dpclose() local
935 pcp = dpep->dpe_pcache; in dpclose()
936 ASSERT(pcp != NULL); in dpclose()
942 hashtbl = pcp->pc_hash; in dpclose()
943 for (i = 0; i < pcp->pc_hashsize; i++) { in dpclose()
956 mutex_enter(&pcp->pc_no_exit); in dpclose()
957 ASSERT(pcp->pc_busy >= 0); in dpclose()
958 while (pcp->pc_busy > 0) in dpclose()
959 cv_wait(&pcp->pc_busy_cv, &pcp->pc_no_exit); in dpclose()
960 mutex_exit(&pcp->pc_no_exit); in dpclose()
961 pcache_destroy(pcp); in dpclose()