--- a/kernel/eka/memmodel/epoc/flexible/mmu/mmanager.h Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mmanager.h Fri Jun 11 15:02:23 2010 +0300
@@ -359,11 +359,37 @@
virtual void Unpin(DMemoryObject* aMemory, DMemoryMappingBase* aMapping, TPinArgs& aPinArgs) =0;
/**
- @todo
+ Attempt to move the page specified to a new physical location. The new physical
+ location for the page to be moved to is allocated by this method. However,
+ aBlockZoneId and aBlockRest can be used to control which RAM zone the new
+ location is in.
+
+ @param aMemory The memory object that owns the page.
+ @param aOldPageInfo The page info for the physical page to move.
+ @param aNewPage On success this will hold the physical address of the new
+ location for the page.
+ @param aBlockZoneId The ID of a RAM zone not to allocate the new page into.
+ @param aBlockRest When set to ETrue the search for a new page will stop if it
+ ever needs to look at aBlockZoneId.
+ @return KErrNone on success, KErrInUse if the page couldn't be moved,
+ or KErrNoMemory if it wasn't possible to allocate a new page.
*/
virtual TInt MovePage(DMemoryObject* aMemory, SPageInfo* aOldPageInfo, TPhysAddr& aNewPage, TUint aBlockZoneId, TBool aBlockRest);
/**
+ Move the page specified to a new physical location and mark the page as
+ allocated as type aPageType.
+
+ @param aMemory The memory object that owns the page.
+ @param aPageInfo The page info for the physical page to move.
+ @param aPageType The type of the page to allocate into the orignal physical
+ location of the page to move.
+ @return KErrNone on success, KErrInUse if the page couldn't be moved,
+ or KErrNoMemory if it wasn't possible to allocate a new page.
+ */
+ virtual TInt MoveAndAllocPage(DMemoryObject* aMemory, SPageInfo* aPageInfo, TZonePageType aPageType);
+
+ /**
Return the TZonePageType of the pages that the memory manager can allocate and free.
*/
virtual TZonePageType PageType();