Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/pmap.c
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 8,561 Lines • ▼ Show 20 Lines | |||||
boolean_t | boolean_t | ||||
pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr) | pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr) | ||||
{ | { | ||||
pd_entry_t *pde; | pd_entry_t *pde; | ||||
pt_entry_t *pte, PG_V; | pt_entry_t *pte, PG_V; | ||||
boolean_t rv; | boolean_t rv; | ||||
PG_V = pmap_valid_bit(pmap); | PG_V = pmap_valid_bit(pmap); | ||||
/* | |||||
* Return TRUE if and only if the PTE for the specified virtual | |||||
* address is allocated but invalid. | |||||
*/ | |||||
rv = FALSE; | rv = FALSE; | ||||
PMAP_LOCK(pmap); | PMAP_LOCK(pmap); | ||||
pde = pmap_pde(pmap, addr); | pde = pmap_pde(pmap, addr); | ||||
if (pde != NULL && (*pde & (PG_PS | PG_V)) == PG_V) { | if (pde != NULL && (*pde & (PG_PS | PG_V)) == PG_V) { | ||||
pte = pmap_pde_to_pte(pde, addr); | pte = pmap_pde_to_pte(pde, addr); | ||||
rv = (*pte & PG_V) == 0; | rv = (*pte & PG_V) == 0; | ||||
} | } | ||||
PMAP_UNLOCK(pmap); | PMAP_UNLOCK(pmap); | ||||
▲ Show 20 Lines • Show All 3,371 Lines • Show Last 20 Lines |