diff --git a/headers/private/kernel/vm/VMCache.h b/headers/private/kernel/vm/VMCache.h index 924d8c9139..65ef81460d 100644 --- a/headers/private/kernel/vm/VMCache.h +++ b/headers/private/kernel/vm/VMCache.h @@ -153,6 +153,9 @@ public: virtual void AcquireStoreRef(); virtual void ReleaseStoreRef(); + virtual bool DebugHasPage(off_t offset); + vm_page* DebugLookupPage(off_t offset); + public: VMArea* areas; list_link consumer_link; diff --git a/src/system/kernel/vm/VMAnonymousCache.h b/src/system/kernel/vm/VMAnonymousCache.h index d985ae28fa..c4a4671f6f 100644 --- a/src/system/kernel/vm/VMAnonymousCache.h +++ b/src/system/kernel/vm/VMAnonymousCache.h @@ -40,6 +40,7 @@ public: virtual status_t Commit(off_t size, int priority); virtual bool HasPage(off_t offset); + virtual bool DebugHasPage(off_t offset); virtual status_t Read(off_t offset, const iovec* vecs, size_t count, uint32 flags, diff --git a/src/system/kernel/vm/VMCache.cpp b/src/system/kernel/vm/VMCache.cpp index 4f943674cb..efc17c539b 100644 --- a/src/system/kernel/vm/VMCache.cpp +++ b/src/system/kernel/vm/VMCache.cpp @@ -1239,6 +1239,27 @@ VMCache::ReleaseStoreRef() } +/*! Kernel debugger version of HasPage(). + Does not do any locking. +*/ +bool +VMCache::DebugHasPage(off_t offset) +{ + // default that works for all subclasses that don't lock anyway + return HasPage(offset); +} + + +/*! Kernel debugger version of LookupPage(). + Does not do any locking. +*/ +vm_page* +VMCache::DebugLookupPage(off_t offset) +{ + return pages.Lookup((page_num_t)(offset >> PAGE_SHIFT)); +} + + /*! Wakes up threads waiting for page events. \param page The page for which events occurred. \param events The mask of events that occurred.