X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86%2Fmm_virt.c;h=44e186517b726d42f5f84dcbc011c6dd0ffc4b61;hb=04b368645c34cc3853fc13f93e33ac7878be8479;hp=c8061b284c1e2ea228a74fd34b6c8c6d3021f819;hpb=574bd1d04d98f1b75c42eb45a2cdb49788cceb01;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86/mm_virt.c b/Kernel/arch/x86/mm_virt.c index c8061b28..44e18651 100644 --- a/Kernel/arch/x86/mm_virt.c +++ b/Kernel/arch/x86/mm_virt.c @@ -327,6 +327,22 @@ tPAddr MM_GetPhysAddr(tVAddr Addr) return (gaPageTable[Addr >> 12] & ~0xFFF) | (Addr & 0xFFF); } + +/** + * \fn int MM_IsUser(tVAddr Addr) + * \brief Checks if a page is user accessable + */ +int MM_IsUser(tVAddr Addr) +{ + if( !(gaPageDir[Addr >> 22] & 1) ) + return 0; + if( !(gaPageTable[Addr >> 12] & 1) ) + return 0; + if( !(gaPageTable[Addr >> 12] & PF_USER) ) + return 0; + return 1; +} + /** * \fn void MM_SetCR3(tPAddr CR3) * \brief Sets the current process space