Add pmap locking to pmap_is_prefaultable().

This commit is contained in:
Alan Cox 2004-06-20 06:11:00 +00:00
parent 4c5f10a672
commit 1ec4b75936
2 changed files with 18 additions and 12 deletions

View File

@ -2566,14 +2566,17 @@ pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr)
{
pd_entry_t *pde;
pt_entry_t *pte;
boolean_t rv;
rv = FALSE;
PMAP_LOCK(pmap);
pde = pmap_pde(pmap, addr);
if (pde == NULL || (*pde & PG_V) == 0)
return (FALSE);
pte = vtopte(addr);
if (*pte & PG_V)
return (FALSE);
return (TRUE);
if (pde != NULL && (*pde & PG_V)) {
pte = vtopte(addr);
rv = (*pte & PG_V) == 0;
}
PMAP_UNLOCK(pmap);
return (rv);
}
/*

View File

@ -2641,13 +2641,16 @@ boolean_t
pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr)
{
pt_entry_t *pte;
boolean_t rv;
if ((*pmap_pde(pmap, addr)) == 0)
return (FALSE);
pte = vtopte(addr);
if (*pte)
return (FALSE);
return (TRUE);
rv = FALSE;
PMAP_LOCK(pmap);
if (*pmap_pde(pmap, addr)) {
pte = vtopte(addr);
rv = *pte == 0;
}
PMAP_UNLOCK(pmap);
return (rv);
}
/*