Lines Matching refs:pp

90 #define	PAGE_IO_MUTEX(pp) \  argument
91 &pio_mutex[(((uintptr_t)pp) >> PIO_SHIFT) & (PIO_TABLE_SIZE - 1)]
100 #define PAGE_SE_MUTEX(pp) &pse_mutex[ \ argument
101 ((((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()
369 pp->p_selock = SE_WRITER; in page_lock_es()
375 pp->p_selock |= SE_EWANTED; in page_lock_es()
381 if (pp->p_selock >= 0) { in page_lock_es()
382 if ((pp->p_selock & SE_EWANTED) == 0) { in page_lock_es()
383 pp->p_selock += SE_READER; in page_lock_es()
390 if ((pp->p_selock & ~SE_EWANTED) == SE_DELETED) { in page_lock_es()
411 cv_wait(&pp->p_cv, pse); in page_lock_es()
440 ((PP_ISFREE(pp)) && PAGE_EXCL(pp)) : 1); in page_lock_es()
455 if (!page_reclaim(pp, lock)) { in page_lock_es()
461 page_downgrade(pp); in page_lock_es()
478 page_lock_clr_exclwanted(page_t *pp) in page_lock_clr_exclwanted() argument
480 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_lock_clr_exclwanted()
483 pp->p_selock &= ~SE_EWANTED; in page_lock_clr_exclwanted()
484 if (CV_HAS_WAITERS(&pp->p_cv)) in page_lock_clr_exclwanted()
485 cv_broadcast(&pp->p_cv); in page_lock_clr_exclwanted()
503 page_try_reclaim_lock(page_t *pp, se_t se, int es) in page_try_reclaim_lock() argument
505 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_try_reclaim_lock()
510 old = pp->p_selock; in page_try_reclaim_lock()
515 if (PP_RETIRED(pp) && !(es & SE_RETIRED)) { in page_try_reclaim_lock()
526 if (!PP_ISFREE(pp)) { in page_try_reclaim_lock()
532 pp->p_selock = old + SE_READER; in page_try_reclaim_lock()
556 pp->p_selock = SE_WRITER; in page_try_reclaim_lock()
563 pp->p_selock |= SE_EWANTED; in page_try_reclaim_lock()
574 page_trylock(page_t *pp, se_t se) in page_trylock() argument
576 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_trylock()
579 if (pp->p_selock & SE_EWANTED || PP_RETIRED(pp) || in page_trylock()
580 (se == SE_SHARED && PP_PR_NOSHARE(pp))) { in page_trylock()
592 if (pp->p_selock == 0) { in page_trylock()
594 pp->p_selock = SE_WRITER; in page_trylock()
599 if (pp->p_selock >= 0) { in page_trylock()
600 pp->p_selock += SE_READER; in page_trylock()
616 page_unlock_nocapture(page_t *pp) in page_unlock_nocapture() argument
618 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_unlock_nocapture()
623 old = pp->p_selock; in page_unlock_nocapture()
625 pp->p_selock = old & ~SE_READER; in page_unlock_nocapture()
626 if (CV_HAS_WAITERS(&pp->p_cv)) in page_unlock_nocapture()
627 cv_broadcast(&pp->p_cv); in page_unlock_nocapture()
629 panic("page_unlock_nocapture: page %p is deleted", (void *)pp); in page_unlock_nocapture()
632 pp->p_selock &= SE_EWANTED; in page_unlock_nocapture()
633 if (CV_HAS_WAITERS(&pp->p_cv)) in page_unlock_nocapture()
634 cv_broadcast(&pp->p_cv); in page_unlock_nocapture()
636 pp->p_selock = old - SE_READER; in page_unlock_nocapture()
639 (void *)pp); in page_unlock_nocapture()
650 page_unlock(page_t *pp) in page_unlock() argument
652 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_unlock()
657 old = pp->p_selock; in page_unlock()
659 pp->p_selock = old & ~SE_READER; in page_unlock()
660 if (CV_HAS_WAITERS(&pp->p_cv)) in page_unlock()
661 cv_broadcast(&pp->p_cv); in page_unlock()
663 panic("page_unlock: page %p is deleted", (void *)pp); in page_unlock()
666 pp->p_selock &= SE_EWANTED; in page_unlock()
667 if (CV_HAS_WAITERS(&pp->p_cv)) in page_unlock()
668 cv_broadcast(&pp->p_cv); in page_unlock()
670 pp->p_selock = old - SE_READER; in page_unlock()
672 panic("page_unlock: page %p is not locked", (void *)pp); in page_unlock()
675 if (pp->p_selock == 0) { in page_unlock()
682 if ((pp->p_toxic & PR_CAPTURE) && in page_unlock()
684 !PP_RETIRED(pp)) { in page_unlock()
686 pp->p_selock = SE_WRITER; in page_unlock()
688 page_unlock_capture(pp); in page_unlock()
707 page_tryupgrade(page_t *pp) in page_tryupgrade() argument
709 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_tryupgrade()
712 if (!(pp->p_selock & SE_EWANTED)) { in page_tryupgrade()
714 if (pp->p_selock == SE_READER) { in page_tryupgrade()
717 pp->p_selock = SE_WRITER; in page_tryupgrade()
731 page_downgrade(page_t *pp) in page_downgrade() argument
733 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_downgrade()
736 ASSERT((pp->p_selock & ~SE_EWANTED) != SE_DELETED); in page_downgrade()
737 ASSERT(PAGE_EXCL(pp)); in page_downgrade()
740 excl_waiting = pp->p_selock & SE_EWANTED; in page_downgrade()
742 pp->p_selock = SE_READER | excl_waiting; in page_downgrade()
743 if (CV_HAS_WAITERS(&pp->p_cv)) in page_downgrade()
744 cv_broadcast(&pp->p_cv); in page_downgrade()
749 page_lock_delete(page_t *pp) in page_lock_delete() argument
751 kmutex_t *pse = PAGE_SE_MUTEX(pp); in page_lock_delete()
753 ASSERT(PAGE_EXCL(pp)); in page_lock_delete()
754 ASSERT(pp->p_vnode == NULL); in page_lock_delete()
755 ASSERT(pp->p_offset == (u_offset_t)-1); in page_lock_delete()
756 ASSERT(!PP_ISFREE(pp)); in page_lock_delete()
760 pp->p_selock = SE_DELETED; in page_lock_delete()
761 if (CV_HAS_WAITERS(&pp->p_cv)) in page_lock_delete()
762 cv_broadcast(&pp->p_cv); in page_lock_delete()
767 page_deleted(page_t *pp) in page_deleted() argument
769 return (pp->p_selock == SE_DELETED); in page_deleted()
776 page_iolock_init(page_t *pp) in page_iolock_init() argument
778 pp->p_iolock_state = 0; in page_iolock_init()
779 cv_init(&pp->p_io_cv, NULL, CV_DEFAULT, NULL); in page_iolock_init()
786 page_io_lock(page_t *pp) in page_io_lock() argument
790 pio = PAGE_IO_MUTEX(pp); in page_io_lock()
792 while (pp->p_iolock_state & PAGE_IO_INUSE) { in page_io_lock()
793 cv_wait(&(pp->p_io_cv), pio); in page_io_lock()
795 pp->p_iolock_state |= PAGE_IO_INUSE; in page_io_lock()
803 page_io_unlock(page_t *pp) in page_io_unlock() argument
807 pio = PAGE_IO_MUTEX(pp); in page_io_unlock()
809 cv_broadcast(&pp->p_io_cv); in page_io_unlock()
810 pp->p_iolock_state &= ~PAGE_IO_INUSE; in page_io_unlock()
819 page_io_trylock(page_t *pp) in page_io_trylock() argument
823 if (pp->p_iolock_state & PAGE_IO_INUSE) in page_io_trylock()
826 pio = PAGE_IO_MUTEX(pp); in page_io_trylock()
829 if (pp->p_iolock_state & PAGE_IO_INUSE) { in page_io_trylock()
833 pp->p_iolock_state |= PAGE_IO_INUSE; in page_io_trylock()
843 page_io_wait(page_t *pp) in page_io_wait() argument
847 pio = PAGE_IO_MUTEX(pp); in page_io_wait()
849 while (pp->p_iolock_state & PAGE_IO_INUSE) { in page_io_wait()
850 cv_wait(&(pp->p_io_cv), pio); in page_io_wait()
859 page_io_locked(page_t *pp) in page_io_locked() argument
861 return (pp->p_iolock_state & PAGE_IO_INUSE); in page_io_locked()
869 page_iolock_assert(page_t *pp) in page_iolock_assert() argument
871 return (page_io_locked(pp)); in page_iolock_assert()
905 page_se_mutex(page_t *pp) in page_se_mutex() argument
907 return (PAGE_SE_MUTEX(pp)); in page_se_mutex()
935 page_szc_lock(page_t *pp) in page_szc_lock() argument
941 uint_t pszc = pp->p_szc; in page_szc_lock()
943 ASSERT(pp != NULL); in page_szc_lock()
944 ASSERT(PAGE_LOCKED(pp)); in page_szc_lock()
945 ASSERT(!PP_ISFREE(pp)); in page_szc_lock()
946 ASSERT(pp->p_vnode != NULL); in page_szc_lock()
947 ASSERT(!IS_SWAPFSVP(pp->p_vnode)); in page_szc_lock()
948 ASSERT(!PP_ISKAS(pp)); in page_szc_lock()
958 rootpp = PP_GROUPLEADER(pp, pszc); in page_szc_lock()
969 if (pp == rootpp || (rszc = rootpp->p_szc) == pszc) { in page_szc_lock()
979 szc = pp->p_szc; in page_szc_lock()
1002 page_szc_lock_assert(page_t *pp) in page_szc_lock_assert() argument
1004 page_t *rootpp = PP_PAGEROOT(pp); in page_szc_lock_assert()