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