Lines Matching refs:ps
251 pollstate_t *ps = curthread->t_pollstate; in pollunlock() local
260 if (ps != NULL && ps->ps_depth > 1) { in pollunlock()
261 ps->ps_flags |= POLLSTATE_ULFAIL; in pollunlock()
272 pcp = ps->ps_pcache; in pollunlock()
288 pollstate_t *ps = curthread->t_pollstate; in pollrelock() local
301 pcp = ps->ps_pcache; in pollrelock()
334 pollstate_t *ps; in poll_common() local
410 ps = pollstate_create(); in poll_common()
412 if (ps->ps_pcache == NULL) in poll_common()
413 ps->ps_pcache = pcache_alloc(); in poll_common()
414 pcp = ps->ps_pcache; in poll_common()
424 old_nfds = ps->ps_nfds; in poll_common()
427 kmem_free(ps->ps_pollfd, old_nfds * sizeof (pollfd_t)); in poll_common()
429 ps->ps_pollfd = pollfdp; in poll_common()
430 ps->ps_nfds = nfds; in poll_common()
433 pollfdp = ps->ps_pollfd; in poll_common()
459 mutex_enter(&ps->ps_lock); in poll_common()
460 pcp = ps->ps_pcache; in poll_common()
467 error = pcacheset_cache_list(ps, fds, &fdcnt, cacheindex); in poll_common()
469 mutex_exit(&ps->ps_lock); in poll_common()
473 pollcacheset_t *pcset = ps->ps_pcacheset; in poll_common()
479 for (cacheindex = 0; cacheindex < ps->ps_nsets; cacheindex++) { in poll_common()
485 pcacheset_reset_count(ps, cacheindex); in poll_common()
495 error = pcacheset_resolve(ps, nfds, &fdcnt, in poll_common()
498 mutex_exit(&ps->ps_lock); in poll_common()
516 error = pcacheset_cache_list(ps, fds, &fdcnt, in poll_common()
519 mutex_exit(&ps->ps_lock); in poll_common()
525 if (cacheindex == ps->ps_nsets) { in poll_common()
531 cacheindex = pcacheset_replace(ps); in poll_common()
532 ASSERT(cacheindex < ps->ps_nsets); in poll_common()
534 error = pcacheset_resolve(ps, nfds, &fdcnt, cacheindex); in poll_common()
536 mutex_exit(&ps->ps_lock); in poll_common()
555 error = pcache_poll(pollfdp, ps, nfds, &fdcnt, cacheindex); in poll_common()
558 mutex_exit(&ps->ps_lock); in poll_common()
578 mutex_exit(&ps->ps_lock); in poll_common()
598 mutex_enter(&ps->ps_lock); in poll_common()
706 pollstate_t *ps = curthread->t_pollstate; in pollcleanup() local
709 if (ps == NULL) in pollcleanup()
711 pcp = ps->ps_pcache; in pollcleanup()
721 ASSERT(MUTEX_NOT_HELD(&ps->ps_lock)); in pollcleanup()
728 mutex_enter(&ps->ps_lock); in pollcleanup()
730 mutex_exit(&ps->ps_lock); in pollcleanup()
750 pollstate_destroy(ps); in pollcleanup()
1237 pcacheset_invalidate(pollstate_t *ps, polldat_t *pdp) in pcacheset_invalidate() argument
1246 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_invalidate()
1248 for (i = 0; i < ps->ps_nsets; i++) { in pcacheset_invalidate()
1256 pcsp = &ps->ps_pcacheset[i]; in pcacheset_invalidate()
1290 pcache_insert(pollstate_t *ps, file_t *fp, pollfd_t *pollfdp, int *fdcntp, in pcache_insert() argument
1293 pollcache_t *pcp = ps->ps_pcache; in pcache_insert()
1301 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcache_insert()
1330 ASSERT(ps->ps_nsets > 0); in pcache_insert()
1331 pdp = pcache_alloc_fd(ps->ps_nsets); in pcache_insert()
1339 pcacheset_invalidate(ps, pdp); in pcache_insert()
1398 ASSERT(pollfdp->fd == ps->ps_pollfd[refp->xf_position].fd); in pcache_insert()
1407 pcache_insert_fd(ps->ps_pcache, pdp, ps->ps_nfds); in pcache_insert()
1446 pcache_delete_fd(pollstate_t *ps, int fd, size_t pos, int which, uint_t cevent) in pcache_delete_fd() argument
1448 pollcache_t *pcp = ps->ps_pcache; in pcache_delete_fd()
1453 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcache_delete_fd()
1491 pcacheset_invalidate(ps, pdp); in pcache_delete_fd()
1541 pollchecksanity(pollstate_t *ps, nfds_t nfds) in pollchecksanity() argument
1545 pollcache_t *pcp = ps->ps_pcache; in pollchecksanity()
1547 pollfd_t *pollfdp = ps->ps_pollfd; in pollchecksanity()
1550 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pollchecksanity()
1579 pcacheset_resolve(pollstate_t *ps, nfds_t nfds, int *fdcntp, int which) in pcacheset_resolve() argument
1582 pollcache_t *pcp = ps->ps_pcache; in pcacheset_resolve()
1584 pollfd_t *current = ps->ps_pollfd; in pcacheset_resolve()
1599 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_resolve()
1601 checkpolldat(ps); in pcacheset_resolve()
1603 pcsp = &ps->ps_pcacheset[which]; in pcacheset_resolve()
1664 if (pcache_delete_fd(ps, tmpfd, count, which, in pcacheset_resolve()
1717 error = pcache_insert(ps, fp, in pcacheset_resolve()
1809 error = pcache_insert(ps, fp, ¤t[i], &cnt, in pcacheset_resolve()
1818 pcacheset_remove_list(ps, current, old_nfds, in pcacheset_resolve()
1829 pcacheset_remove_list(ps, pcsp->pcs_pollfd, nfds, old_nfds, in pcacheset_resolve()
1856 ASSERT(pollchecksanity(ps, nfds)); in pcacheset_resolve()
1861 ASSERT(pollcheckxref(ps, which)); in pcacheset_resolve()
1867 checkpolldat(ps); in pcacheset_resolve()
1900 pcache_poll(pollfd_t *pollfdp, pollstate_t *ps, nfds_t nfds, int *fdcntp, in pcache_poll() argument
1915 pcp = ps->ps_pcache; in pcache_poll()
1916 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcache_poll()
1931 ASSERT(pollcheckrevents(ps, begin, fd, which)); in pcache_poll()
1980 pcacheset_invalidate(ps, pdp); in pcache_poll()
2070 error = plist_chkdupfd(fp, pdp, ps, in pcache_poll()
2119 error = plist_chkdupfd(fp, pdp, ps, in pcache_poll()
2133 ASSERT(pollcheckrevents(ps, begin, end + 1, which)); in pcache_poll()
2148 pcacheset_cache_list(pollstate_t *ps, pollfd_t *fds, int *fdcntp, int which) in pcacheset_cache_list() argument
2150 pollfd_t *pollfdp = ps->ps_pollfd; in pcacheset_cache_list()
2151 pollcacheset_t *pcacheset = ps->ps_pcacheset; in pcacheset_cache_list()
2158 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_cache_list()
2159 ASSERT(which < ps->ps_nsets); in pcacheset_cache_list()
2162 newfdlist = kmem_alloc(ps->ps_nfds * sizeof (pollfd_t), KM_SLEEP); in pcacheset_cache_list()
2166 bcopy(pollfdp, newfdlist, sizeof (pollfd_t) * ps->ps_nfds); in pcacheset_cache_list()
2169 pcacheset[which].pcs_nfds = ps->ps_nfds; in pcacheset_cache_list()
2178 for (i = 0; i < ps->ps_nfds; i++) { in pcacheset_cache_list()
2204 error = pcache_insert(ps, fp, &pollfdp[i], fdcntp, (ssize_t)i, in pcacheset_cache_list()
2212 pcacheset_remove_list(ps, pollfdp, 0, i, which, 0); in pcacheset_cache_list()
2213 kmem_free(newfdlist, ps->ps_nfds * sizeof (pollfd_t)); in pcacheset_cache_list()
2229 pcache_clean_entry(pollstate_t *ps, int fd) in pcache_clean_entry() argument
2235 ASSERT(ps != NULL); in pcache_clean_entry()
2236 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcache_clean_entry()
2237 pcp = ps->ps_pcache; in pcache_clean_entry()
2255 for (i = 0; i < ps->ps_nsets; i++) { in pcache_clean_entry()
2262 pcsp = &ps->ps_pcacheset[i]; in pcache_clean_entry()
2314 pollstate_t *ps = curthread->t_pollstate; in pollstate_create() local
2316 if (ps == NULL) { in pollstate_create()
2321 ps = kmem_zalloc(sizeof (pollstate_t), KM_SLEEP); in pollstate_create()
2322 ps->ps_nsets = POLLFDSETS; in pollstate_create()
2323 ps->ps_pcacheset = pcacheset_create(ps->ps_nsets); in pollstate_create()
2324 curthread->t_pollstate = ps; in pollstate_create()
2326 ASSERT(ps->ps_depth == 0); in pollstate_create()
2327 ASSERT(ps->ps_flags == 0); in pollstate_create()
2328 ASSERT(ps->ps_pc_stack[0] == 0); in pollstate_create()
2330 return (ps); in pollstate_create()
2334 pollstate_destroy(pollstate_t *ps) in pollstate_destroy() argument
2336 if (ps->ps_pollfd != NULL) { in pollstate_destroy()
2337 kmem_free(ps->ps_pollfd, ps->ps_nfds * sizeof (pollfd_t)); in pollstate_destroy()
2338 ps->ps_pollfd = NULL; in pollstate_destroy()
2340 if (ps->ps_pcache != NULL) { in pollstate_destroy()
2341 pcache_destroy(ps->ps_pcache); in pollstate_destroy()
2342 ps->ps_pcache = NULL; in pollstate_destroy()
2344 pcacheset_destroy(ps->ps_pcacheset, ps->ps_nsets); in pollstate_destroy()
2345 ps->ps_pcacheset = NULL; in pollstate_destroy()
2346 if (ps->ps_dpbuf != NULL) { in pollstate_destroy()
2347 kmem_free(ps->ps_dpbuf, ps->ps_dpbufsize); in pollstate_destroy()
2348 ps->ps_dpbuf = NULL; in pollstate_destroy()
2350 mutex_destroy(&ps->ps_lock); in pollstate_destroy()
2351 kmem_free(ps, sizeof (pollstate_t)); in pollstate_destroy()
2355 pollstate_contend(pollstate_t *ps, pollcache_t *pcp) in pollstate_contend() argument
2374 depth_total = ps->ps_depth; in pollstate_contend()
2392 for (j = 0; j < ps->ps_depth; j++) { in pollstate_contend()
2393 if (rem->ps_contend_pc == ps->ps_pc_stack[j]) { in pollstate_contend()
2439 ps->ps_contend_pc = pcp; in pollstate_contend()
2440 ps->ps_contend_nextp = pollstate_contenders; in pollstate_contend()
2441 ps->ps_contend_pnextp = &pollstate_contenders; in pollstate_contend()
2444 &ps->ps_contend_nextp; in pollstate_contend()
2446 pollstate_contenders = ps; in pollstate_contend()
2457 if ((ps->ps_flags & POLLSTATE_STALEMATE) != 0) { in pollstate_contend()
2459 ps->ps_flags &= ~POLLSTATE_STALEMATE; in pollstate_contend()
2464 if (ps->ps_contend_nextp != NULL) { in pollstate_contend()
2465 ps->ps_contend_nextp->ps_contend_pnextp = in pollstate_contend()
2466 ps->ps_contend_pnextp; in pollstate_contend()
2468 *ps->ps_contend_pnextp = ps->ps_contend_nextp; in pollstate_contend()
2469 ps->ps_contend_pc = NULL; in pollstate_contend()
2470 ps->ps_contend_nextp = NULL; in pollstate_contend()
2471 ps->ps_contend_pnextp = NULL; in pollstate_contend()
2481 pollstate_t *ps = curthread->t_pollstate; in pollstate_enter() local
2484 if (ps == NULL) { in pollstate_enter()
2492 if (ps->ps_depth >= POLLMAXDEPTH) { in pollstate_enter()
2499 for (i = 0; i < ps->ps_depth; i++) { in pollstate_enter()
2500 if (ps->ps_pc_stack[i] == pcp) { in pollstate_enter()
2504 ASSERT(ps->ps_pc_stack[i] == NULL); in pollstate_enter()
2506 if (ps->ps_depth == 0) { in pollstate_enter()
2510 if (pollstate_contend(ps, pcp) != 0) { in pollstate_enter()
2516 ps->ps_pc_stack[ps->ps_depth++] = pcp; in pollstate_enter()
2523 pollstate_t *ps = curthread->t_pollstate; in pollstate_exit() local
2525 VERIFY(ps != NULL); in pollstate_exit()
2526 VERIFY(ps->ps_pc_stack[ps->ps_depth - 1] == pcp); in pollstate_exit()
2529 ps->ps_pc_stack[--ps->ps_depth] = NULL; in pollstate_exit()
2530 VERIFY(ps->ps_depth >= 0); in pollstate_exit()
2565 pollstate_t *ps = fpip->fp_thread->t_pollstate; in pollcacheclean() local
2566 pollcache_t *pcp = ps->ps_pcache; in pollcacheclean()
2568 mutex_enter(&ps->ps_lock); in pollcacheclean()
2569 pcache_clean_entry(ps, fd); in pollcacheclean()
2570 mutex_exit(&ps->ps_lock); in pollcacheclean()
2594 pcacheset_reset_count(pollstate_t *ps, int index) in pcacheset_reset_count() argument
2598 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_reset_count()
2599 for (i = 0; i < ps->ps_nsets; i++) { in pcacheset_reset_count()
2600 if (ps->ps_pcacheset[i].pcs_pollfd != NULL) { in pcacheset_reset_count()
2601 ps->ps_pcacheset[i].pcs_count = 0; in pcacheset_reset_count()
2604 ps->ps_pcacheset[index].pcs_count = 1; in pcacheset_reset_count()
2612 pcacheset_replace(pollstate_t *ps) in pcacheset_replace() argument
2617 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_replace()
2618 for (i = 1; i < ps->ps_nsets; i++) { in pcacheset_replace()
2619 if (ps->ps_pcacheset[index].pcs_count > in pcacheset_replace()
2620 ps->ps_pcacheset[i].pcs_count) { in pcacheset_replace()
2624 ps->ps_pcacheset[index].pcs_count = 0; in pcacheset_replace()
2657 pollstate_t *ps; in pollhead_clean() local
2673 ps = pdp->pd_thread->t_pollstate; in pollhead_clean()
2674 ASSERT(ps != NULL); in pollhead_clean()
2684 mutex_enter(&ps->ps_lock); in pollhead_clean()
2697 mutex_exit(&ps->ps_lock); in pollhead_clean()
2719 pcacheset_remove_list(pollstate_t *ps, pollfd_t *pollfdp, int start, int end, in pcacheset_remove_list() argument
2724 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_remove_list()
2728 if (pcache_delete_fd(ps, pollfdp[i].fd, i, cacheindex, in pcacheset_remove_list()
2736 ps->ps_pcache, fd, in pcacheset_remove_list()
2787 pollcheckxref(pollstate_t *ps, int cacheindex) in pollcheckxref() argument
2789 pollfd_t *pollfdp = ps->ps_pcacheset[cacheindex].pcs_pollfd; in pollcheckxref()
2790 pollcache_t *pcp = ps->ps_pcache; in pollcheckxref()
2795 for (i = 0; i < ps->ps_pcacheset[cacheindex].pcs_nfds; i++) { in pollcheckxref()
2811 j < ps->ps_pcacheset[cacheindex].pcs_nfds; in pollcheckxref()
2829 checkpolldat(pollstate_t *ps) in checkpolldat() argument
2831 pollcache_t *pcp = ps->ps_pcache; in checkpolldat()
2847 for (j = 0; j < ps->ps_nsets; j++) { in checkpolldat()
2850 pcsp = &ps->ps_pcacheset[j]; in checkpolldat()
2895 pollcheckrevents(pollstate_t *ps, int begin, int end, int cacheindex) in pollcheckrevents() argument
2897 pollcache_t *pcp = ps->ps_pcache; in pollcheckrevents()
2898 pollfd_t *pollfdp = ps->ps_pollfd; in pollcheckrevents()
2921 for (j = entry + 1; j < ps->ps_nfds; j++) { in pollcheckrevents()