equal
deleted
inserted
replaced
237 |
237 |
238 TInt DCodePagedMemoryManager::ReadPages(DMemoryObject* aMemory, TUint aIndex, TUint aCount, TPhysAddr* aPages, DPageReadRequest* aRequest) |
238 TInt DCodePagedMemoryManager::ReadPages(DMemoryObject* aMemory, TUint aIndex, TUint aCount, TPhysAddr* aPages, DPageReadRequest* aRequest) |
239 { |
239 { |
240 TRACE2(("DCodePagedMemoryManager::ReadPage(0x%08x,0x%08x,0x%08x,?,?)",aMemory,aIndex,aCount)); |
240 TRACE2(("DCodePagedMemoryManager::ReadPage(0x%08x,0x%08x,0x%08x,?,?)",aMemory,aIndex,aCount)); |
241 |
241 |
242 __NK_ASSERT_DEBUG(aRequest->CheckUse(aMemory,aIndex,aCount)); |
242 __NK_ASSERT_DEBUG(aRequest->CheckUseContiguous(aMemory,aIndex,aCount)); |
|
243 __ASSERT_CRITICAL; |
243 |
244 |
244 START_PAGING_BENCHMARK; |
245 START_PAGING_BENCHMARK; |
245 |
246 |
246 MmuLock::Lock(); |
247 MmuLock::Lock(); |
247 DPagedCodeInfo* pagedCodeInfo = (DPagedCodeInfo*)aMemory->iManagerData; |
248 DPagedCodeInfo* pagedCodeInfo = (DPagedCodeInfo*)aMemory->iManagerData; |
254 TPagedCodeInfo& info = pagedCodeInfo->Info(); |
255 TPagedCodeInfo& info = pagedCodeInfo->Info(); |
255 DPagingDevice& device = *iDevice[info.iCodeLocalDrive]; |
256 DPagingDevice& device = *iDevice[info.iCodeLocalDrive]; |
256 |
257 |
257 TLinAddr linAddr = aRequest->MapPages(aIndex,aCount,aPages); |
258 TLinAddr linAddr = aRequest->MapPages(aIndex,aCount,aPages); |
258 TInt r = KErrNone; |
259 TInt r = KErrNone; |
|
260 TThreadMessage message; |
259 |
261 |
260 if(!info.iCodeSize) |
262 if(!info.iCodeSize) |
261 { |
263 { |
262 // no blockmap yet, use blank pages... |
264 // no blockmap yet, use blank pages... |
263 memset((TAny*)linAddr, aCount*KPageSize, 0x03); |
265 memset((TAny*)linAddr, aCount*KPageSize, 0x03); |
290 dataOffset, |
292 dataOffset, |
291 dataSize, |
293 dataSize, |
292 device.iReadUnitShift, |
294 device.iReadUnitShift, |
293 ReadFunc, |
295 ReadFunc, |
294 (TAny*)info.iCodeLocalDrive, |
296 (TAny*)info.iCodeLocalDrive, |
295 (TAny*)&aRequest->iMessage); |
297 (TAny*)&message); |
296 |
298 |
297 if(bufferStart<0) |
299 if(bufferStart<0) |
298 { |
300 { |
299 r = bufferStart; // return error |
301 r = bufferStart; // return error |
300 __NK_ASSERT_DEBUG(0); |
302 __NK_ASSERT_DEBUG(0); |
330 done: |
332 done: |
331 aRequest->UnmapPages(true); |
333 aRequest->UnmapPages(true); |
332 |
334 |
333 pagedCodeInfo->AsyncClose(); |
335 pagedCodeInfo->AsyncClose(); |
334 |
336 |
335 END_PAGING_BENCHMARK(EPagingBmReadCodePage); |
337 END_PAGING_BENCHMARK_N(EPagingBmReadCodePage, aCount); |
336 return r; |
338 return r; |
337 } |
339 } |
338 |
340 |
339 |
341 |
340 TBool DCodePagedMemoryManager::IsAllocated(DMemoryObject* aMemory, TUint aIndex, TUint aCount) |
342 TBool DCodePagedMemoryManager::IsAllocated(DMemoryObject* aMemory, TUint aIndex, TUint aCount) |