Lines Matching refs:ps

300 	pollstate_t *ps;  in poll_common()  local
376 if ((ps = t->t_pollstate) == NULL) { in poll_common()
378 ps = t->t_pollstate; in poll_common()
381 if (ps->ps_pcache == NULL) in poll_common()
382 ps->ps_pcache = pcache_alloc(); in poll_common()
383 pcp = ps->ps_pcache; in poll_common()
393 old_nfds = ps->ps_nfds; in poll_common()
396 kmem_free(ps->ps_pollfd, old_nfds * sizeof (pollfd_t)); in poll_common()
398 ps->ps_pollfd = pollfdp; in poll_common()
399 ps->ps_nfds = nfds; in poll_common()
402 pollfdp = ps->ps_pollfd; in poll_common()
428 mutex_enter(&ps->ps_lock); in poll_common()
429 pcp = ps->ps_pcache; in poll_common()
436 error = pcacheset_cache_list(ps, fds, &fdcnt, cacheindex); in poll_common()
438 mutex_exit(&ps->ps_lock); in poll_common()
442 pollcacheset_t *pcset = ps->ps_pcacheset; in poll_common()
448 for (cacheindex = 0; cacheindex < ps->ps_nsets; cacheindex++) { in poll_common()
454 pcacheset_reset_count(ps, cacheindex); in poll_common()
464 error = pcacheset_resolve(ps, nfds, &fdcnt, in poll_common()
467 mutex_exit(&ps->ps_lock); in poll_common()
485 error = pcacheset_cache_list(ps, fds, &fdcnt, in poll_common()
488 mutex_exit(&ps->ps_lock); in poll_common()
494 if (cacheindex == ps->ps_nsets) { in poll_common()
500 cacheindex = pcacheset_replace(ps); in poll_common()
501 ASSERT(cacheindex < ps->ps_nsets); in poll_common()
503 error = pcacheset_resolve(ps, nfds, &fdcnt, cacheindex); in poll_common()
505 mutex_exit(&ps->ps_lock); in poll_common()
524 error = pcache_poll(pollfdp, ps, nfds, &fdcnt, cacheindex); in poll_common()
527 mutex_exit(&ps->ps_lock); in poll_common()
547 mutex_exit(&ps->ps_lock); in poll_common()
567 mutex_enter(&ps->ps_lock); in poll_common()
675 pollstate_t *ps = curthread->t_pollstate; in pollcleanup() local
678 if (ps == NULL) in pollcleanup()
680 pcp = ps->ps_pcache; in pollcleanup()
690 ASSERT(MUTEX_NOT_HELD(&ps->ps_lock)); in pollcleanup()
697 mutex_enter(&ps->ps_lock); in pollcleanup()
699 mutex_exit(&ps->ps_lock); in pollcleanup()
719 pollstate_destroy(ps); in pollcleanup()
1205 pcacheset_invalidate(pollstate_t *ps, polldat_t *pdp) in pcacheset_invalidate() argument
1214 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_invalidate()
1216 for (i = 0; i < ps->ps_nsets; i++) { in pcacheset_invalidate()
1224 pcsp = &ps->ps_pcacheset[i]; in pcacheset_invalidate()
1258 pcache_insert(pollstate_t *ps, file_t *fp, pollfd_t *pollfdp, int *fdcntp, in pcache_insert() argument
1261 pollcache_t *pcp = ps->ps_pcache; in pcache_insert()
1269 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcache_insert()
1298 ASSERT(ps->ps_nsets > 0); in pcache_insert()
1299 pdp = pcache_alloc_fd(ps->ps_nsets); in pcache_insert()
1307 pcacheset_invalidate(ps, pdp); in pcache_insert()
1366 ASSERT(pollfdp->fd == ps->ps_pollfd[refp->xf_position].fd); in pcache_insert()
1375 pcache_insert_fd(ps->ps_pcache, pdp, ps->ps_nfds); in pcache_insert()
1414 pcache_delete_fd(pollstate_t *ps, int fd, size_t pos, int which, uint_t cevent) in pcache_delete_fd() argument
1416 pollcache_t *pcp = ps->ps_pcache; in pcache_delete_fd()
1421 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcache_delete_fd()
1459 pcacheset_invalidate(ps, pdp); in pcache_delete_fd()
1509 pollchecksanity(pollstate_t *ps, nfds_t nfds) in pollchecksanity() argument
1513 pollcache_t *pcp = ps->ps_pcache; in pollchecksanity()
1515 pollfd_t *pollfdp = ps->ps_pollfd; in pollchecksanity()
1518 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pollchecksanity()
1547 pcacheset_resolve(pollstate_t *ps, nfds_t nfds, int *fdcntp, int which) in pcacheset_resolve() argument
1550 pollcache_t *pcp = ps->ps_pcache; in pcacheset_resolve()
1552 pollfd_t *current = ps->ps_pollfd; in pcacheset_resolve()
1567 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_resolve()
1569 checkpolldat(ps); in pcacheset_resolve()
1571 pcsp = &ps->ps_pcacheset[which]; in pcacheset_resolve()
1632 if (pcache_delete_fd(ps, tmpfd, count, which, in pcacheset_resolve()
1685 error = pcache_insert(ps, fp, in pcacheset_resolve()
1777 error = pcache_insert(ps, fp, &current[i], &cnt, in pcacheset_resolve()
1786 pcacheset_remove_list(ps, current, old_nfds, in pcacheset_resolve()
1797 pcacheset_remove_list(ps, pcsp->pcs_pollfd, nfds, old_nfds, in pcacheset_resolve()
1824 ASSERT(pollchecksanity(ps, nfds)); in pcacheset_resolve()
1829 ASSERT(pollcheckxref(ps, which)); in pcacheset_resolve()
1835 checkpolldat(ps); in pcacheset_resolve()
1868 pcache_poll(pollfd_t *pollfdp, pollstate_t *ps, nfds_t nfds, int *fdcntp, in pcache_poll() argument
1883 pcp = ps->ps_pcache; in pcache_poll()
1884 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcache_poll()
1899 ASSERT(pollcheckrevents(ps, begin, fd, which)); in pcache_poll()
1948 pcacheset_invalidate(ps, pdp); in pcache_poll()
2038 error = plist_chkdupfd(fp, pdp, ps, in pcache_poll()
2087 error = plist_chkdupfd(fp, pdp, ps, in pcache_poll()
2101 ASSERT(pollcheckrevents(ps, begin, end + 1, which)); in pcache_poll()
2116 pcacheset_cache_list(pollstate_t *ps, pollfd_t *fds, int *fdcntp, int which) in pcacheset_cache_list() argument
2118 pollfd_t *pollfdp = ps->ps_pollfd; in pcacheset_cache_list()
2119 pollcacheset_t *pcacheset = ps->ps_pcacheset; in pcacheset_cache_list()
2126 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_cache_list()
2127 ASSERT(which < ps->ps_nsets); in pcacheset_cache_list()
2130 newfdlist = kmem_alloc(ps->ps_nfds * sizeof (pollfd_t), KM_SLEEP); in pcacheset_cache_list()
2134 bcopy(pollfdp, newfdlist, sizeof (pollfd_t) * ps->ps_nfds); in pcacheset_cache_list()
2137 pcacheset[which].pcs_nfds = ps->ps_nfds; in pcacheset_cache_list()
2146 for (i = 0; i < ps->ps_nfds; i++) { in pcacheset_cache_list()
2172 error = pcache_insert(ps, fp, &pollfdp[i], fdcntp, (ssize_t)i, in pcacheset_cache_list()
2180 pcacheset_remove_list(ps, pollfdp, 0, i, which, 0); in pcacheset_cache_list()
2181 kmem_free(newfdlist, ps->ps_nfds * sizeof (pollfd_t)); in pcacheset_cache_list()
2197 pcache_clean_entry(pollstate_t *ps, int fd) in pcache_clean_entry() argument
2203 ASSERT(ps != NULL); in pcache_clean_entry()
2204 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcache_clean_entry()
2205 pcp = ps->ps_pcache; in pcache_clean_entry()
2223 for (i = 0; i < ps->ps_nsets; i++) { in pcache_clean_entry()
2230 pcsp = &ps->ps_pcacheset[i]; in pcache_clean_entry()
2266 pollstate_t *ps; in pollstate_create() local
2268 ps = kmem_zalloc(sizeof (pollstate_t), KM_SLEEP); in pollstate_create()
2269 ps->ps_nsets = POLLFDSETS; in pollstate_create()
2270 ps->ps_pcacheset = pcacheset_create(ps->ps_nsets); in pollstate_create()
2271 return (ps); in pollstate_create()
2275 pollstate_destroy(pollstate_t *ps) in pollstate_destroy() argument
2277 if (ps->ps_pollfd != NULL) { in pollstate_destroy()
2278 kmem_free(ps->ps_pollfd, ps->ps_nfds * sizeof (pollfd_t)); in pollstate_destroy()
2279 ps->ps_pollfd = NULL; in pollstate_destroy()
2281 if (ps->ps_pcache != NULL) { in pollstate_destroy()
2282 pcache_destroy(ps->ps_pcache); in pollstate_destroy()
2283 ps->ps_pcache = NULL; in pollstate_destroy()
2285 pcacheset_destroy(ps->ps_pcacheset, ps->ps_nsets); in pollstate_destroy()
2286 ps->ps_pcacheset = NULL; in pollstate_destroy()
2287 if (ps->ps_dpbuf != NULL) { in pollstate_destroy()
2288 kmem_free(ps->ps_dpbuf, ps->ps_dpbufsize * sizeof (pollfd_t)); in pollstate_destroy()
2289 ps->ps_dpbuf = NULL; in pollstate_destroy()
2291 mutex_destroy(&ps->ps_lock); in pollstate_destroy()
2292 kmem_free(ps, sizeof (pollstate_t)); in pollstate_destroy()
2326 pollstate_t *ps = fpip->fp_thread->t_pollstate; in pollcacheclean() local
2327 pollcache_t *pcp = ps->ps_pcache; in pollcacheclean()
2329 mutex_enter(&ps->ps_lock); in pollcacheclean()
2330 pcache_clean_entry(ps, fd); in pollcacheclean()
2331 mutex_exit(&ps->ps_lock); in pollcacheclean()
2355 pcacheset_reset_count(pollstate_t *ps, int index) in pcacheset_reset_count() argument
2359 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_reset_count()
2360 for (i = 0; i < ps->ps_nsets; i++) { in pcacheset_reset_count()
2361 if (ps->ps_pcacheset[i].pcs_pollfd != NULL) { in pcacheset_reset_count()
2362 ps->ps_pcacheset[i].pcs_count = 0; in pcacheset_reset_count()
2365 ps->ps_pcacheset[index].pcs_count = 1; in pcacheset_reset_count()
2373 pcacheset_replace(pollstate_t *ps) in pcacheset_replace() argument
2378 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_replace()
2379 for (i = 1; i < ps->ps_nsets; i++) { in pcacheset_replace()
2380 if (ps->ps_pcacheset[index].pcs_count > in pcacheset_replace()
2381 ps->ps_pcacheset[i].pcs_count) { in pcacheset_replace()
2385 ps->ps_pcacheset[index].pcs_count = 0; in pcacheset_replace()
2418 pollstate_t *ps; in pollhead_clean() local
2434 ps = pdp->pd_thread->t_pollstate; in pollhead_clean()
2435 ASSERT(ps != NULL); in pollhead_clean()
2445 mutex_enter(&ps->ps_lock); in pollhead_clean()
2458 mutex_exit(&ps->ps_lock); in pollhead_clean()
2480 pcacheset_remove_list(pollstate_t *ps, pollfd_t *pollfdp, int start, int end, in pcacheset_remove_list() argument
2485 ASSERT(MUTEX_HELD(&ps->ps_lock)); in pcacheset_remove_list()
2489 if (pcache_delete_fd(ps, pollfdp[i].fd, i, cacheindex, in pcacheset_remove_list()
2497 ps->ps_pcache, fd, in pcacheset_remove_list()
2548 pollcheckxref(pollstate_t *ps, int cacheindex) in pollcheckxref() argument
2550 pollfd_t *pollfdp = ps->ps_pcacheset[cacheindex].pcs_pollfd; in pollcheckxref()
2551 pollcache_t *pcp = ps->ps_pcache; in pollcheckxref()
2556 for (i = 0; i < ps->ps_pcacheset[cacheindex].pcs_nfds; i++) { in pollcheckxref()
2572 j < ps->ps_pcacheset[cacheindex].pcs_nfds; in pollcheckxref()
2590 checkpolldat(pollstate_t *ps) in checkpolldat() argument
2592 pollcache_t *pcp = ps->ps_pcache; in checkpolldat()
2608 for (j = 0; j < ps->ps_nsets; j++) { in checkpolldat()
2611 pcsp = &ps->ps_pcacheset[j]; in checkpolldat()
2656 pollcheckrevents(pollstate_t *ps, int begin, int end, int cacheindex) in pollcheckrevents() argument
2658 pollcache_t *pcp = ps->ps_pcache; in pollcheckrevents()
2659 pollfd_t *pollfdp = ps->ps_pollfd; in pollcheckrevents()
2682 for (j = entry + 1; j < ps->ps_nfds; j++) { in pollcheckrevents()