296 device.iReadUnitShift, |
296 device.iReadUnitShift, |
297 ReadFunc, |
297 ReadFunc, |
298 (TAny*)info.iCodeLocalDrive, |
298 (TAny*)info.iCodeLocalDrive, |
299 (TAny*)&message); |
299 (TAny*)&message); |
300 |
300 |
301 r = ThePager.EmbedErrorContext(EPagingErrorContextCodeRead, bufferStart); |
301 if(bufferStart<0) |
302 if(r<0) |
302 { |
|
303 r = bufferStart; // return error |
|
304 __NK_ASSERT_DEBUG(0); |
303 break; |
305 break; |
|
306 } |
304 |
307 |
305 TLinAddr data = aRequest->Buffer() + bufferStart; |
308 TLinAddr data = aRequest->Buffer() + bufferStart; |
306 r = Decompress(info.iCompressionType, linAddr, decompressedSize, data, dataSize); |
309 r = Decompress(info.iCompressionType, linAddr, decompressedSize, data, dataSize); |
307 if (r >= 0) |
310 if(r>=0) |
308 r = (r == decompressedSize) ? KErrNone : KErrCorrupt; |
311 { |
309 if(r != KErrNone) |
312 if(r!=decompressedSize) |
310 __KTRACE_OPT(KPANIC, Kern::Printf("DCodePagedMemoryManager::ReadPage: error decompressing page at %08x + %x: %d", dataOffset, dataSize, r)); |
313 { |
311 r = ThePager.EmbedErrorContext(EPagingErrorContextCodeDecompress, r); |
314 __KTRACE_OPT(KPANIC, Kern::Printf("DCodePagedMemoryManager::ReadPage: error decompressing page at %08x + %x: %d", dataOffset, dataSize, r)); |
|
315 __NK_ASSERT_DEBUG(0); |
|
316 r = KErrCorrupt; |
|
317 } |
|
318 else |
|
319 r = KErrNone; |
|
320 } |
|
321 else |
|
322 { |
|
323 __NK_ASSERT_DEBUG(0); |
|
324 } |
|
325 |
312 if(r!=KErrNone) |
326 if(r!=KErrNone) |
313 break; |
327 break; |
314 |
328 |
315 if(decompressedSize<KPageSize) |
329 if(decompressedSize<KPageSize) |
316 memset((TAny*)(linAddr+decompressedSize), KPageSize-decompressedSize, 0x03); |
330 memset((TAny*)(linAddr+decompressedSize), KPageSize-decompressedSize, 0x03); |