From a12cc0e489010872ec01f215235e43ac1f17141c Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Mon, 18 Nov 2002 04:05:22 +0000 Subject: [PATCH] Remove vm_page_protect(). Instead, use pmap_page_protect() directly. --- sys/vm/swap_pager.c | 2 +- sys/vm/vm_object.c | 8 ++++---- sys/vm/vm_page.c | 23 +---------------------- sys/vm/vm_page.h | 1 - sys/vm/vm_pageout.c | 4 ++-- 5 files changed, 8 insertions(+), 30 deletions(-) diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index 3917f5b39498..de203e23a635 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -1597,7 +1597,7 @@ swp_pager_async_iodone(bp) vm_page_undirty(m); vm_page_io_finish(m); if (!vm_page_count_severe() || !vm_page_try_to_cache(m)) - vm_page_protect(m, VM_PROT_READ); + pmap_page_protect(m, VM_PROT_READ); } } vm_page_unlock_queues(); diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index a56b881dbb1d..ec59e9b09267 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -754,7 +754,7 @@ vm_object_page_clean(vm_object_t object, vm_pindex_t start, vm_pindex_t end, int if ((flags & OBJPC_NOSYNC) && (p->flags & PG_NOSYNC)) clearobjflags = 0; else - vm_page_protect(p, VM_PROT_READ); + pmap_page_protect(p, VM_PROT_READ); } if (clearobjflags && (tstart == 0) && (tend == object->size)) { @@ -924,7 +924,7 @@ vm_object_page_collect_flush(vm_object_t object, vm_page_t p, int curgeneration, vm_pageout_flush(ma, runlen, pagerflags); for (i = 0; i < runlen; i++) { if (ma[i]->valid & ma[i]->dirty) { - vm_page_protect(ma[i], VM_PROT_READ); + pmap_page_protect(ma[i], VM_PROT_READ); vm_page_flag_set(ma[i], PG_CLEANCHK); /* @@ -950,7 +950,7 @@ vm_object_page_collect_flush(vm_object_t object, vm_page_t p, int curgeneration, * is converted to copy-on-write. * * NOTE: If the page is already at VM_PROT_NONE, calling - * vm_page_protect will have no effect. + * pmap_page_protect will have no effect. */ void vm_object_pmap_copy_1(vm_object_t object, vm_pindex_t start, vm_pindex_t end) @@ -967,7 +967,7 @@ vm_object_pmap_copy_1(vm_object_t object, vm_pindex_t start, vm_pindex_t end) p = vm_page_lookup(object, idx); if (p == NULL) continue; - vm_page_protect(p, VM_PROT_READ); + pmap_page_protect(p, VM_PROT_READ); } } #endif diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 0e541b8f371b..bcd92bf28dd7 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -370,27 +370,6 @@ vm_page_unhold(vm_page_t mem) vm_page_free_toq(mem); } -/* - * vm_page_protect: - * - * Reduce the protection of a page. This routine never raises the - * protection and therefore can be safely called if the page is already - * at VM_PROT_NONE (it will be a NOP effectively ). - */ -void -vm_page_protect(vm_page_t mem, int prot) -{ - if (prot == VM_PROT_NONE) { - if (pmap_page_is_mapped(mem) || (mem->flags & PG_WRITEABLE)) { - pmap_remove_all(mem); - vm_page_flag_clear(mem, PG_WRITEABLE); - } - } else if ((prot == VM_PROT_READ) && (mem->flags & PG_WRITEABLE)) { - pmap_page_protect(mem, VM_PROT_READ); - vm_page_flag_clear(mem, PG_WRITEABLE); - } -} - /* * vm_page_copy: * @@ -1822,7 +1801,7 @@ vm_page_cowsetup(vm_page_t m) mtx_assert(&vm_page_queue_mtx, MA_OWNED); m->cow++; - vm_page_protect(m, VM_PROT_READ); + pmap_page_protect(m, VM_PROT_READ); } #include "opt_ddb.h" diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h index 9a9f349a8d67..72cf4ebc651e 100644 --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -327,7 +327,6 @@ void vm_page_io_start(vm_page_t m); void vm_page_io_finish(vm_page_t m); void vm_page_hold(vm_page_t mem); void vm_page_unhold(vm_page_t mem); -void vm_page_protect(vm_page_t mem, int prot); void vm_page_copy(vm_page_t src_m, vm_page_t dest_m); void vm_page_free(vm_page_t m); void vm_page_free_zero(vm_page_t m); diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index f73290c6e9c2..1f024e7cf83e 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -384,7 +384,7 @@ vm_pageout_flush(mc, count, flags) for (i = 0; i < count; i++) { KASSERT(mc[i]->valid == VM_PAGE_BITS_ALL, ("vm_pageout_flush page %p index %d/%d: partially invalid page", mc[i], i, count)); vm_page_io_start(mc[i]); - vm_page_protect(mc[i], VM_PROT_READ); + pmap_page_protect(mc[i], VM_PROT_READ); } object = mc[0]->object; vm_page_unlock_queues(); @@ -437,7 +437,7 @@ vm_pageout_flush(mc, count, flags) vm_object_pip_wakeup(object); vm_page_io_finish(mt); if (!vm_page_count_severe() || !vm_page_try_to_cache(mt)) - vm_page_protect(mt, VM_PROT_READ); + pmap_page_protect(mt, VM_PROT_READ); } } return numpagedout;