Add a new parameter to pmap_extract_and_hold() that is needed to eliminate

Giant from vmapbuf().

Idea from:	tegge
This commit is contained in:
Alan Cox 2003-09-12 07:07:49 +00:00
parent 2f8d7c56da
commit b9850eb224
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=119999
6 changed files with 17 additions and 11 deletions

View File

@ -815,10 +815,11 @@ pmap_extract(pmap, va)
* Routine: pmap_extract_and_hold
* Function:
* Atomically extract and hold the physical page
* with the given pmap and virtual address.
* with the given pmap and virtual address pair
* if that mapping permits the given protection.
*/
vm_page_t
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va)
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
{
vm_paddr_t pa;
vm_page_t m;

View File

@ -753,10 +753,11 @@ pmap_extract(pmap, va)
* Routine: pmap_extract_and_hold
* Function:
* Atomically extract and hold the physical page
* with the given pmap and virtual address.
* with the given pmap and virtual address pair
* if that mapping permits the given protection.
*/
vm_page_t
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va)
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
{
vm_paddr_t pa;
vm_page_t m;

View File

@ -865,10 +865,11 @@ pmap_extract(pmap, va)
* Routine: pmap_extract_and_hold
* Function:
* Atomically extract and hold the physical page
* with the given pmap and virtual address.
* with the given pmap and virtual address pair
* if that mapping permits the given protection.
*/
vm_page_t
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va)
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
{
vm_paddr_t pa;
vm_page_t m;

View File

@ -1106,10 +1106,11 @@ pmap_extract(pmap, va)
* Routine: pmap_extract_and_hold
* Function:
* Atomically extract and hold the physical page
* with the given pmap and virtual address.
* with the given pmap and virtual address pair
* if that mapping permits the given protection.
*/
vm_page_t
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va)
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
{
vm_paddr_t pa;
vm_page_t m;

View File

@ -622,10 +622,11 @@ pmap_extract(pmap_t pm, vm_offset_t va)
/*
* Atomically extract and hold the physical page with the given
* pmap and virtual address pair.
* pmap and virtual address pair if that mapping permits the given
* protection.
*/
vm_page_t
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va)
pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
{
vm_paddr_t pa;
vm_page_t m;

View File

@ -106,7 +106,8 @@ void pmap_enter(pmap_t, vm_offset_t, vm_page_t, vm_prot_t,
vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m,
vm_page_t mpte);
vm_paddr_t pmap_extract(pmap_t pmap, vm_offset_t va);
vm_page_t pmap_extract_and_hold(pmap_t pmap, vm_offset_t va);
vm_page_t pmap_extract_and_hold(pmap_t pmap, vm_offset_t va,
vm_prot_t prot);
void pmap_growkernel(vm_offset_t);
void pmap_init(vm_paddr_t, vm_paddr_t);
boolean_t pmap_is_modified(vm_page_t m);