diff -r 345b1ca54e88 -r 039a3e647356 kernel/eka/drivers/medmmc/medmmc.cpp --- a/kernel/eka/drivers/medmmc/medmmc.cpp Wed Sep 15 13:42:27 2010 +0300 +++ b/kernel/eka/drivers/medmmc/medmmc.cpp Wed Oct 13 16:04:24 2010 +0300 @@ -797,8 +797,17 @@ } else { - TPtrC8 zeroDes(NULL, 0); - r = iCurrentReq->WriteRemote(&zeroDes,0); +#if defined(__DEMAND_PAGING__) && !defined(__WINS__) + if (DMediaPagingDevice::PageInRequest(*iCurrentReq)) + { + r = iCurrentReq->WriteToPageHandler(NULL, 0, 0); + } + else +#endif // __DEMAND_PAGING__ + { + TPtrC8 zeroDes(NULL, 0); + r = iCurrentReq->WriteRemote(&zeroDes,0); + } } // error occurred or read all from cache so complete immediately @@ -2889,7 +2898,7 @@ __KTRACE_OPT(KPBUSDRV, Kern::Printf(">mmd:rdc:%x,%x", iReqCur, iReqEnd)); OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_READDATAUNTILCACHEEXHAUSTED, "iReqCur=%x:%x; iReqEnd=0x%x", (TUint) I64HIGH(iReqCur), (TUint) I64LOW(iReqCur), (TUint) iReqEnd ); - if ( (iCurrentReq->DriverFlags() & RLocalDrive::ELocDrvDirectIO) || iCurrentReq->IsPhysicalAddress() + if ( iCurrentReq->IsPhysicalAddress() #if defined(__DEMAND_PAGING__) && !defined(__WINS__) || DMediaPagingDevice::PageInRequest(*iCurrentReq) #endif //DEMAND_PAGING @@ -2950,7 +2959,12 @@ TUint usrOfst = I64LOW(iReqCur - iReqStart); OstTrace0( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_WRITEDATATOUSER_LATENCY1, "Begin writing user data" ); - r = iCurrentReq->WriteRemote(&extrView,usrOfst); +#if defined(__DEMAND_PAGING__) && !defined(__WINS__) + if (DMediaPagingDevice::PageInRequest(*iCurrentReq)) + r=iCurrentReq->WriteToPageHandler((TUint8 *)(&extrView[0]), len, usrOfst); + else +#endif // __DEMAND_PAGING__ + r = iCurrentReq->WriteRemote(&extrView,usrOfst); OstTrace0( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_WRITEDATATOUSER_LATENCY2, "End writing user data" ); @@ -2961,10 +2975,19 @@ TInt DMmcMediaDriverFlash::ReadDataFromUser(TDes8& aDes, TInt aOffset) { OstTraceExt2(TRACE_FLOW, DMMCMEDIADRIVERFLASH_READDATAFROMUSER_ENTRY ,"DMmcMediaDriverFlash::ReadDataFromUser;aOffset=%d;this=%x", aOffset, (TUint) this); - - TInt r = iCurrentReq->ReadRemote(&aDes, aOffset); - - OstTraceFunctionExitExt( DMMCMEDIADRIVERFLASH_READDATAFROMUSER_EXIT1, this, r ); + TInt r = KErrNotSupported; +#ifndef __WINS__ + if (DMediaPagingDevice::PageOutRequest(*iCurrentReq)) + { + r = iCurrentReq->ReadFromPageHandler((TAny*) aDes.Ptr(), aDes.MaxLength(), aOffset); + OstTraceFunctionExitExt( DMMCMEDIADRIVERFLASH_READDATAFROMUSER_EXIT1, this, r ); + return r; + } + else +#endif // #ifndef __WINS__ + r = iCurrentReq->ReadRemote(&aDes, aOffset); + + OstTraceFunctionExitExt( DMMCMEDIADRIVERFLASH_READDATAFROMUSER_EXIT2, this, r ); return r; } @@ -3677,7 +3700,6 @@ c.iSize = drive.iPartitionLen; c.iPartitionType = drive.iPartitionType; c.iHiddenSectors = (TUint) (drive.iPartitionBaseAddr >> KDiskSectorShift); - SetTotalSizeInBytes(c); OstTraceFunctionExitExt( DMMCMEDIADRIVERFLASH_REQUEST_EXIT1, this, r ); return r; }