X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86_64%2Fmm_phys.c;h=893fb5b17b93bda62a3b84feacfb5273cc142144;hb=58c7107eb0a5ae254c135f2eaa6263751f1ebe67;hp=eb495b3310ff97aee77d54d5fc7b77cb35a1049d;hpb=2ebf89999759fc9d1ece6f98dfd439170995bb28;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86_64/mm_phys.c b/Kernel/arch/x86_64/mm_phys.c index eb495b33..893fb5b1 100644 --- a/Kernel/arch/x86_64/mm_phys.c +++ b/Kernel/arch/x86_64/mm_phys.c @@ -461,7 +461,7 @@ tPAddr MM_AllocPhys(void) if( gaiStaticAllocPages[i] ) { tPAddr ret = gaiStaticAllocPages[i]; gaiStaticAllocPages[i] = 0; - Log("MM_AllocPhys: Return %x, static alloc %i", ret, i); + Log("MM_AllocPhys: Return %P, static alloc %i", ret, i); return ret; } } @@ -536,6 +536,23 @@ void MM_DerefPhys(tPAddr PAddr) } } +int MM_GetRefCount( tPAddr PAddr ) +{ + PAddr >>= 12; + + if( PAddr >> 12 > giMaxPhysPage ) return 0; + + if( gaMultiBitmap[ PAddr >> 6 ] & (1LL << (PAddr&63)) ) { + return gaiPageReferences[PAddr]; + } + + if( gaMainBitmap[ PAddr >> 6 ] & (1LL << (PAddr&63)) ) + { + return 1; + } + return 0; +} + /** * \brief Takes a physical address and returns the ID of its range * \param Addr Physical address of page