void DMemModelProcess::DecommitDllData(TLinAddr aBase, TInt aSize) { __KTRACE_OPT(KDLL,Kern::Printf("DMemModelProcess %O DecommitDllData %08x+%x",this,aBase,aSize)); Mmu& m = Mmu::Get(); TLinAddr dll_data_base=(iAttributes & EFixedAddress) ? (TLinAddr)iDllDataChunk->Base() : TLinAddr(m.iDllDataBase); TInt offset=aBase-dll_data_base; TInt r=iDllDataChunk->Decommit(offset, aSize); __ASSERT_ALWAYS(r==KErrNone,MM::Panic(MM::EDecommitInvalidDllDataAddress)); if (iDllDataChunk->iSize==0) FreeDllDataChunk(); }
TInt DMemModelProcess::CommitDllData(TLinAddr aBase, TInt aSize) { __KTRACE_OPT(KDLL,Kern::Printf("DMemModelProcess %O CommitDllData %08x+%x",this,aBase,aSize)); TInt r=KErrNone; if (!iDllDataChunk) r=CreateDllDataChunk(); if (r==KErrNone) { Mmu& m = Mmu::Get(); TLinAddr dll_data_base=(iAttributes & EFixedAddress) ? (TLinAddr)iDllDataChunk->Base() : TLinAddr(m.iDllDataBase); TInt offset=aBase-dll_data_base; __ASSERT_ALWAYS(TUint32(offset)<TUint32(iDllDataChunk->iMaxSize),MM::Panic(MM::ECommitInvalidDllDataAddress)); r=iDllDataChunk->Commit(offset, aSize); if (r!=KErrNone && iDllDataChunk->iSize==0) FreeDllDataChunk(); } __KTRACE_OPT(KDLL,Kern::Printf("CommitDllData returns %d",r)); return r; }
inline TLinAddr ActualToRomAddress(TAny* anAddr) { return TLinAddr(anAddr)-TheRomMem+TheRomLinearAddress; }