Lines Matching refs:pp
91 #define PAGE_IO_MUTEX(pp) \ argument
92 &pio_mutex[(((uintptr_t)pp) >> PIO_SHIFT) & (PIO_TABLE_SIZE - 1)]
101 #define PAGE_SE_MUTEX(pp) &pse_mutex[ \ argument
102 ((((uintptr_t)(pp) >> pse_shift) ^ ((uintptr_t)(pp))) >> 7) & \
243 page_lock(page_t *pp, se_t se, kmutex_t *lock, reclaim_t reclaim) in page_lock() argument
245 return (page_lock_es(pp, se, lock, reclaim, 0)); in page_lock()
294 page_lock_es(page_t *pp, se_t se, kmutex_t *lock, reclaim_t reclaim, int es) in page_lock_es() argument
297 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_lock_es()
313 if (PP_RETIRED(pp) && !(es & SE_RETIRED)) { in page_lock_es()
319 if (se == SE_SHARED && es == 1 && pp->p_selock == 0) { in page_lock_es()
323 if ((reclaim == P_RECLAIM) && (PP_ISFREE(pp))) { in page_lock_es()
358 if (!(es & SE_EXCL_WANTED) && (pp->p_selock & SE_EWANTED)) { in page_lock_es()
365 } else if ((pp->p_selock & ~SE_EWANTED) == 0) { in page_lock_es()
368 pp->p_selock = SE_WRITER; in page_lock_es()
374 pp->p_selock |= SE_EWANTED; in page_lock_es()
380 if (pp->p_selock >= 0) { in page_lock_es()
381 if ((pp->p_selock & SE_EWANTED) == 0) { in page_lock_es()
382 pp->p_selock += SE_READER; in page_lock_es()
389 if ((pp->p_selock & ~SE_EWANTED) == SE_DELETED) { in page_lock_es()
410 cv_wait(&pp->p_cv, pse); in page_lock_es()
439 ((PP_ISFREE(pp)) && PAGE_EXCL(pp)) : 1); in page_lock_es()
454 if (!page_reclaim(pp, lock)) { in page_lock_es()
460 page_downgrade(pp); in page_lock_es()
477 page_lock_clr_exclwanted(page_t *pp) in page_lock_clr_exclwanted() argument
479 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_lock_clr_exclwanted()
482 pp->p_selock &= ~SE_EWANTED; in page_lock_clr_exclwanted()
483 if (CV_HAS_WAITERS(&pp->p_cv)) in page_lock_clr_exclwanted()
484 cv_broadcast(&pp->p_cv); in page_lock_clr_exclwanted()
502 page_try_reclaim_lock(page_t *pp, se_t se, int es) in page_try_reclaim_lock() argument
504 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_try_reclaim_lock()
509 old = pp->p_selock; in page_try_reclaim_lock()
514 if (PP_RETIRED(pp) && !(es & SE_RETIRED)) { in page_try_reclaim_lock()
525 if (!PP_ISFREE(pp)) { in page_try_reclaim_lock()
531 pp->p_selock = old + SE_READER; in page_try_reclaim_lock()
554 pp->p_selock = SE_WRITER; in page_try_reclaim_lock()
561 pp->p_selock |= SE_EWANTED; in page_try_reclaim_lock()
572 page_trylock(page_t *pp, se_t se) in page_trylock() argument
574 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_trylock()
577 if (pp->p_selock & SE_EWANTED || PP_RETIRED(pp) || in page_trylock()
578 (se == SE_SHARED && PP_PR_NOSHARE(pp))) { in page_trylock()
590 if (pp->p_selock == 0) { in page_trylock()
591 pp->p_selock = SE_WRITER; in page_trylock()
596 if (pp->p_selock >= 0) { in page_trylock()
597 pp->p_selock += SE_READER; in page_trylock()
613 page_unlock_nocapture(page_t *pp) in page_unlock_nocapture() argument
615 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_unlock_nocapture()
620 old = pp->p_selock; in page_unlock_nocapture()
622 pp->p_selock = old & ~SE_READER; in page_unlock_nocapture()
623 if (CV_HAS_WAITERS(&pp->p_cv)) in page_unlock_nocapture()
624 cv_broadcast(&pp->p_cv); in page_unlock_nocapture()
626 panic("page_unlock_nocapture: page %p is deleted", (void *)pp); in page_unlock_nocapture()
628 pp->p_selock &= SE_EWANTED; in page_unlock_nocapture()
629 if (CV_HAS_WAITERS(&pp->p_cv)) in page_unlock_nocapture()
630 cv_broadcast(&pp->p_cv); in page_unlock_nocapture()
632 pp->p_selock = old - SE_READER; in page_unlock_nocapture()
635 (void *)pp); in page_unlock_nocapture()
646 page_unlock(page_t *pp) in page_unlock() argument
648 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_unlock()
653 old = pp->p_selock; in page_unlock()
655 pp->p_selock = old & ~SE_READER; in page_unlock()
656 if (CV_HAS_WAITERS(&pp->p_cv)) in page_unlock()
657 cv_broadcast(&pp->p_cv); in page_unlock()
659 panic("page_unlock: page %p is deleted", (void *)pp); in page_unlock()
661 pp->p_selock &= SE_EWANTED; in page_unlock()
662 if (CV_HAS_WAITERS(&pp->p_cv)) in page_unlock()
663 cv_broadcast(&pp->p_cv); in page_unlock()
665 pp->p_selock = old - SE_READER; in page_unlock()
667 panic("page_unlock: page %p is not locked", (void *)pp); in page_unlock()
670 if (pp->p_selock == 0) { in page_unlock()
677 if ((pp->p_toxic & PR_CAPTURE) && in page_unlock()
679 !PP_RETIRED(pp)) { in page_unlock()
680 pp->p_selock = SE_WRITER; in page_unlock()
682 page_unlock_capture(pp); in page_unlock()
701 page_tryupgrade(page_t *pp) in page_tryupgrade() argument
703 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_tryupgrade()
706 if (!(pp->p_selock & SE_EWANTED)) { in page_tryupgrade()
708 if (pp->p_selock == SE_READER) { in page_tryupgrade()
710 pp->p_selock = SE_WRITER; in page_tryupgrade()
724 page_downgrade(page_t *pp) in page_downgrade() argument
726 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_downgrade()
729 ASSERT((pp->p_selock & ~SE_EWANTED) != SE_DELETED); in page_downgrade()
730 ASSERT(PAGE_EXCL(pp)); in page_downgrade()
733 excl_waiting = pp->p_selock & SE_EWANTED; in page_downgrade()
734 pp->p_selock = SE_READER | excl_waiting; in page_downgrade()
735 if (CV_HAS_WAITERS(&pp->p_cv)) in page_downgrade()
736 cv_broadcast(&pp->p_cv); in page_downgrade()
741 page_lock_delete(page_t *pp) in page_lock_delete() argument
743 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_lock_delete()
745 ASSERT(PAGE_EXCL(pp)); in page_lock_delete()
746 ASSERT(pp->p_vnode == NULL); in page_lock_delete()
747 ASSERT(pp->p_offset == (u_offset_t)-1); in page_lock_delete()
748 ASSERT(!PP_ISFREE(pp)); in page_lock_delete()
751 pp->p_selock = SE_DELETED; in page_lock_delete()
752 if (CV_HAS_WAITERS(&pp->p_cv)) in page_lock_delete()
753 cv_broadcast(&pp->p_cv); in page_lock_delete()
758 page_deleted(page_t *pp) in page_deleted() argument
760 return (pp->p_selock == SE_DELETED); in page_deleted()
767 page_iolock_init(page_t *pp) in page_iolock_init() argument
769 pp->p_iolock_state = 0; in page_iolock_init()
770 cv_init(&pp->p_io_cv, NULL, CV_DEFAULT, NULL); in page_iolock_init()
777 page_io_lock(page_t *pp) in page_io_lock() argument
781 pio = PAGE_IO_MUTEX(pp); in page_io_lock()
783 while (pp->p_iolock_state & PAGE_IO_INUSE) { in page_io_lock()
784 cv_wait(&(pp->p_io_cv), pio); in page_io_lock()
786 pp->p_iolock_state |= PAGE_IO_INUSE; in page_io_lock()
794 page_io_unlock(page_t *pp) in page_io_unlock() argument
798 pio = PAGE_IO_MUTEX(pp); in page_io_unlock()
800 cv_broadcast(&pp->p_io_cv); in page_io_unlock()
801 pp->p_iolock_state &= ~PAGE_IO_INUSE; in page_io_unlock()
810 page_io_trylock(page_t *pp) in page_io_trylock() argument
814 if (pp->p_iolock_state & PAGE_IO_INUSE) in page_io_trylock()
817 pio = PAGE_IO_MUTEX(pp); in page_io_trylock()
820 if (pp->p_iolock_state & PAGE_IO_INUSE) { in page_io_trylock()
824 pp->p_iolock_state |= PAGE_IO_INUSE; in page_io_trylock()
834 page_io_wait(page_t *pp) in page_io_wait() argument
838 pio = PAGE_IO_MUTEX(pp); in page_io_wait()
840 while (pp->p_iolock_state & PAGE_IO_INUSE) { in page_io_wait()
841 cv_wait(&(pp->p_io_cv), pio); in page_io_wait()
850 page_io_locked(page_t *pp) in page_io_locked() argument
852 return (pp->p_iolock_state & PAGE_IO_INUSE); in page_io_locked()
860 page_iolock_assert(page_t *pp) in page_iolock_assert() argument
862 return (page_io_locked(pp)); in page_iolock_assert()
896 page_se_mutex(page_t *pp) in page_se_mutex() argument
898 return (PAGE_SE_MUTEX(pp)); in page_se_mutex()
926 page_szc_lock(page_t *pp) in page_szc_lock() argument
932 uint_t pszc = pp->p_szc; in page_szc_lock()
934 ASSERT(pp != NULL); in page_szc_lock()
935 ASSERT(PAGE_LOCKED(pp)); in page_szc_lock()
936 ASSERT(!PP_ISFREE(pp)); in page_szc_lock()
937 ASSERT(pp->p_vnode != NULL); in page_szc_lock()
938 ASSERT(!IS_SWAPFSVP(pp->p_vnode)); in page_szc_lock()
939 ASSERT(!PP_ISKAS(pp)); in page_szc_lock()
949 rootpp = PP_GROUPLEADER(pp, pszc); in page_szc_lock()
960 if (pp == rootpp || (rszc = rootpp->p_szc) == pszc) { in page_szc_lock()
970 szc = pp->p_szc; in page_szc_lock()
993 page_szc_lock_assert(page_t *pp) in page_szc_lock_assert() argument
995 page_t *rootpp = PP_PAGEROOT(pp); in page_szc_lock_assert()