kernel/eka/drivers/locmedia/locmedia.cpp
branchRCL_3
changeset 36 bbf8bed59bcb
parent 28 5b5d147c7838
child 42 a179b74831c9
equal deleted inserted replaced
28:5b5d147c7838 36:bbf8bed59bcb
   456 			r=m.ProcessMessageData(a1);
   456 			r=m.ProcessMessageData(a1);
   457 			__TRACE_TIMING(1);
   457 			__TRACE_TIMING(1);
   458 			if (r==KErrNone)
   458 			if (r==KErrNone)
   459 				{
   459 				{
   460 				__TRACE_TIMING(2);
   460 				__TRACE_TIMING(2);
   461 				OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ, "ERead iDriveNumber=%d; length=0x%x; position=0x%x; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) m.Length(), (TUint) m.Pos(), (TUint) &m);
   461 				OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ, "ERead iDriveNumber=%d; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) &m);
       
   462 				OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ2, "ERead length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos()));
   462 				r=iDrive->Request(m);
   463 				r=iDrive->Request(m);
   463 				__TRACE_TIMING(3);
   464 				__TRACE_TIMING(3);
   464 				OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ_RETURN, "ERead Return iDriveNumber=%d; length=0x%x; position=0x%x; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) m.Length(), (TUint) m.Pos(), (TUint) &m );
   465 				OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ_RETURN, "ERead Return iDriveNumber=%d; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) &m );
       
   466 				OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ_RETURN2, "ERead Return length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos()));
   465 				}
   467 				}
   466 			m.CloseRemoteThread();
   468 			m.CloseRemoteThread();
   467 			break;
   469 			break;
   468 			}
   470 			}
   469 		case RLocalDrive::EControlWrite:
   471 		case RLocalDrive::EControlWrite:
   470 			{
   472 			{
   471 			m.Id()=EWrite;
   473 			m.Id()=EWrite;
   472 			r=m.ProcessMessageData(a1);
   474 			r=m.ProcessMessageData(a1);
   473 			if (r==KErrNone)
   475 			if (r==KErrNone)
   474 				{
   476 				{
   475 				OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE, "EWrite iDriveNumber=%d; length=0x%x; position=0x%x; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) m.Length(), (TUint) m.Pos(), (TUint) &m );
   477 				OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE, "EWrite iDriveNumber=%d; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) &m );
       
   478 				OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE2, "EWrite length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos()));
   476 				r=iDrive->Request(m);
   479 				r=iDrive->Request(m);
   477 				OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE_RETURN, "EWrite Return iDriveNumber=%d; length=0x%x; position=0x%x; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) m.Length(), (TUint) m.Pos(), (TUint) &m );
   480 				OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE_RETURN, "EWrite Return iDriveNumber=%d; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) &m );
       
   481 				OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE_RETURN2, "EWrite Return length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos()));
   478 				}
   482 				}
   479 			m.CloseRemoteThread();
   483 			m.CloseRemoteThread();
   480 			break;
   484 			break;
   481 			}
   485 			}
   482 		case RLocalDrive::EControlCaps:
   486 		case RLocalDrive::EControlCaps:
  1410 EXPORT_C TInt TLocDrvRequest::CheckAndAdjustForPartition()
  1414 EXPORT_C TInt TLocDrvRequest::CheckAndAdjustForPartition()
  1411 	{
  1415 	{
  1412 	OstTraceFunctionEntry1( TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION_ENTRY, this );
  1416 	OstTraceFunctionEntry1( TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION_ENTRY, this );
  1413 	TLocDrv& d=*Drive();
  1417 	TLocDrv& d=*Drive();
  1414 	__KTRACE_OPT(KLOCDRV,Kern::Printf("CheckAndAdjustForPartition drive %d partition len %lx",d.iDriveNumber,d.iPartitionLen));
  1418 	__KTRACE_OPT(KLOCDRV,Kern::Printf("CheckAndAdjustForPartition drive %d partition len %lx",d.iDriveNumber,d.iPartitionLen));
  1415 	OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION1, "iDriveNumber=%d; partition length=0x%lx", d.iDriveNumber, (TInt) d.iPartitionLen );
  1419 	OstTraceExt3( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION1, "iDriveNumber=%d; partition length=%x:%x", d.iDriveNumber, (TInt) I64HIGH (d.iPartitionLen), (TInt) I64LOW (d.iPartitionLen));
  1416 	Flags() |= EAdjusted;
  1420 	Flags() |= EAdjusted;
  1417 	TInt r;
  1421 	TInt r;
  1418 	switch (Id())
  1422 	switch (Id())
  1419 		{
  1423 		{
  1420 		case DLocalDrive::ECaps:
  1424 		case DLocalDrive::ECaps:
  1431 			r = KErrNone;
  1435 			r = KErrNone;
  1432 			break;
  1436 			break;
  1433 		    }
  1437 		    }
  1434 		case DLocalDrive::EEnlarge:
  1438 		case DLocalDrive::EEnlarge:
  1435 			__KTRACE_OPT(KLOCDRV,Kern::Printf("Enlarge request %lx",Length()));
  1439 			__KTRACE_OPT(KLOCDRV,Kern::Printf("Enlarge request %lx",Length()));
  1436 			OstTrace1( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION2, "Enlarge request=0x%lx", Length() );
  1440 			OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION2, "Enlarge request=%x:%x", (TInt) I64HIGH(Length()), (TInt) I64LOW(Length()) );
  1437 			if (Length()>KMaxTInt)
  1441 			if (Length()>KMaxTInt)
  1438 				r = KErrArgument;
  1442 				r = KErrArgument;
  1439 			else
  1443 			else
  1440 			    r = KErrNone;
  1444 			    r = KErrNone;
  1441 			break;
  1445 			break;
  1442 		case DLocalDrive::EReduce:
  1446 		case DLocalDrive::EReduce:
  1443 			__KTRACE_OPT(KLOCDRV,Kern::Printf("Reduce request %lx@%lx",Length(),Pos()));
  1447 			__KTRACE_OPT(KLOCDRV,Kern::Printf("Reduce request %lx@%lx",Length(),Pos()));
  1444 			OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION3, "Reduce request length=0x%lx; position=0x%lx", (TUint) Length(), (TUint) Pos() );
  1448 			OstTraceExt4( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION3, "Reduce request length=%x:%x; position=%x:%x", (TUint) I64HIGH(Length()), (TUint) I64LOW(Length()), (TUint) I64HIGH(Pos()), (TUint) I64LOW(Pos()) );
  1445 			if (Pos()+Length()>d.iPartitionLen)
  1449 			if (Pos()+Length()>d.iPartitionLen)
  1446 				r = KErrArgument;
  1450 				r = KErrArgument;
  1447 			else
  1451 			else
  1448                 r = KErrNone;
  1452                 r = KErrNone;
  1449 			break;
  1453 			break;
  1450 		case DLocalDrive::EFormat:
  1454 		case DLocalDrive::EFormat:
  1451 			__KTRACE_OPT(KLOCDRV,Kern::Printf("Format request %lx@%lx",Length(),Pos()));
  1455 			__KTRACE_OPT(KLOCDRV,Kern::Printf("Format request %lx@%lx",Length(),Pos()));
  1452 			OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION4, "Format request length=0x%lx; position=0x%lx", (TUint) Length(), (TUint) Pos() );
  1456 			OstTraceExt4( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION4, "Format request length=%x:%x; position=%x:%x", (TUint) I64HIGH(Length()),(TUint) I64LOW(Length()), (TUint) I64HIGH(Pos()), (TUint) I64LOW(Pos()) );
  1453 			if (!(DriverFlags() & RLocalDrive::ELocDrvWholeMedia))
  1457 			if (!(DriverFlags() & RLocalDrive::ELocDrvWholeMedia))
  1454 				{
  1458 				{
  1455 				if (Pos()>d.iPartitionLen)
  1459 				if (Pos()>d.iPartitionLen)
  1456 					{
  1460 					{
  1457 					Length()=0;
  1461 					Length()=0;
  1475 		case DMediaPagingDevice::ERomPageInRequest:
  1479 		case DMediaPagingDevice::ERomPageInRequest:
  1476 //          if the ROM was reported to LOCM then it will also need to be adjusted.... 
  1480 //          if the ROM was reported to LOCM then it will also need to be adjusted.... 
  1477 //		    Otherwise the media driver adjust it internally
  1481 //		    Otherwise the media driver adjust it internally
  1478 		case DMediaPagingDevice::ECodePageInRequest:
  1482 		case DMediaPagingDevice::ECodePageInRequest:
  1479 			__KTRACE_OPT(KLOCDPAGING,Kern::Printf("Adjusted Paging read request %lx@%lx",Length(),Pos()));
  1483 			__KTRACE_OPT(KLOCDPAGING,Kern::Printf("Adjusted Paging read request %lx@%lx",Length(),Pos()));
  1480 			OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, TLOCDRVREQUESTCHECKANDADJUSTFORPARTITION5, "Adjusted Paging read request length=0x%lx; position=0x%lx", (TUint) Length(),  (TUint) Pos());
  1484 			OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, TLOCDRVREQUESTCHECKANDADJUSTFORPARTITION5, "Adjusted Paging read request length=%x:%x; position=%x%:%x", (TUint) I64HIGH(Length()), (TUint) I64LOW(Length()),  (TUint) I64HIGH(Pos()), (TUint) I64LOW(Pos()));
  1481 			if (Pos()+Length()>d.iPartitionLen)
  1485 			if (Pos()+Length()>d.iPartitionLen)
  1482 			    {
  1486 			    {
  1483 				r = KErrArgument;
  1487 				r = KErrArgument;
  1484 				break;
  1488 				break;
  1485 			    }
  1489 			    }
  1488 			break;
  1492 			break;
  1489 #endif
  1493 #endif
  1490 		
  1494 		
  1491 		default:	// read or write or fragment
  1495 		default:	// read or write or fragment
  1492 			__KTRACE_OPT(KLOCDRV,Kern::Printf("R/W request %lx@%lx",Length(),Pos()));
  1496 			__KTRACE_OPT(KLOCDRV,Kern::Printf("R/W request %lx@%lx",Length(),Pos()));
  1493 			OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION6, "Read/Write request length=0x%x; position=0x%x", (TUint) Length(), (TUint) Pos() );
  1497 			OstTraceExt4( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION6, "Read/Write request length=%x:%x; position=%x:%x", (TUint) I64HIGH(Length()), (TUint) I64LOW(Length()), (TUint) I64HIGH(Pos()), (TUint) I64LOW(Pos()));
  1494 			if (DriverFlags() & RLocalDrive::ELocDrvWholeMedia)
  1498 			if (DriverFlags() & RLocalDrive::ELocDrvWholeMedia)
  1495 				{
  1499 				{
  1496 				if (d.iMedia && d.iMedia->iDriver && Pos()+Length() > d.iMedia->iDriver->iTotalSizeInBytes)
  1500 				if (d.iMedia && d.iMedia->iDriver && Pos()+Length() > d.iMedia->iDriver->iTotalSizeInBytes)
  1497 				    {
  1501 				    {
  1498 					r = KErrArgument;
  1502 					r = KErrArgument;
  1793 OstTraceFunctionEntry1( DPRIMARYMEDIABASE_REQUEST_ENTRY, this );
  1797 OstTraceFunctionEntry1( DPRIMARYMEDIABASE_REQUEST_ENTRY, this );
  1794 
  1798 
  1795 	__KTRACE_OPT(KLOCDRV,Kern::Printf("DPrimaryMediaBase(%d)::Request(%08x)",iMediaId,&aReq));
  1799 	__KTRACE_OPT(KLOCDRV,Kern::Printf("DPrimaryMediaBase(%d)::Request(%08x)",iMediaId,&aReq));
  1796 	__KTRACE_OPT(KLOCDRV,Kern::Printf("this=%x, ReqId=%d, Pos=%lx, Len=%lx, remote thread %O",this,aReq.Id(),aReq.Pos(),aReq.Length(),aReq.RemoteThread()));
  1800 	__KTRACE_OPT(KLOCDRV,Kern::Printf("this=%x, ReqId=%d, Pos=%lx, Len=%lx, remote thread %O",this,aReq.Id(),aReq.Pos(),aReq.Length(),aReq.RemoteThread()));
  1797 
  1801 
  1798 	OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_REQUEST, "reqId=%d; length=0x%lx; position=0x%lx; remote thread=0x%x", (TInt) aReq.Id(), (TUint) aReq.Length(),  (TUint) aReq.Pos(), (TUint) aReq.RemoteThread());
  1802 	OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_REQUEST, "reqId=%d; remote thread=0x%x", (TInt) aReq.Id(), (TUint) aReq.RemoteThread());
       
  1803 	OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_REQUEST2, "length=%x:%x; position=%x:%x", (TUint) I64HIGH(aReq.Length()), (TUint) I64LOW(aReq.Length()), (TUint) I64HIGH(aReq.Pos()), (TUint) I64LOW(aReq.Pos()));
  1799 	
  1804 	
  1800 	TInt reqId = aReq.Id();
  1805 	TInt reqId = aReq.Id();
  1801 
  1806 
  1802 	if (reqId == DLocalDrive::ECaps)
  1807 	if (reqId == DLocalDrive::ECaps)
  1803 		DefaultDriveCaps(*(TLocalDriveCapsV2*)aReq.RemoteDes());	// fill in stuff we know even if no media present
  1808 		DefaultDriveCaps(*(TLocalDriveCapsV2*)aReq.RemoteDes());	// fill in stuff we know even if no media present
  2086 		fragment.RemoteDesOffset() = aReq.RemoteDesOffset() + pos;
  2091 		fragment.RemoteDesOffset() = aReq.RemoteDesOffset() + pos;
  2087 		fragment.Pos() = aReq.Pos() + pos;
  2092 		fragment.Pos() = aReq.Pos() + pos;
  2088 		fragment.Flags() = aReq.Flags();
  2093 		fragment.Flags() = aReq.Flags();
  2089 
  2094 
  2090 		__KTRACE_OPT2(KLOCDPAGING,KLOCDRV,Kern::Printf("Send fragment (0x%08x) type(%d), length(0x%x), offset within original req(0x%x), pos in media(0x%lx)",&fragment,fragment.Id(), pinnedLen, pos, fragment.Pos()));
  2095 		__KTRACE_OPT2(KLOCDPAGING,KLOCDRV,Kern::Printf("Send fragment (0x%08x) type(%d), length(0x%x), offset within original req(0x%x), pos in media(0x%lx)",&fragment,fragment.Id(), pinnedLen, pos, fragment.Pos()));
  2091 		OstTraceDefExt5(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DPRIMARYMEDIABASE_PINFRAGMENTSENDRECEIVE3, "Send fragment 0x%08x; type=%d; length=0x%x; offset within original req=0x%x; position in media=0x%lx", (TUint) &fragment, (TInt) fragment.Id(), (TUint) pinnedLen, (TUint) pos, (TUint) fragment.Pos());
  2096 		OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DPRIMARYMEDIABASE_PINFRAGMENTSENDRECEIVE3, "Send fragment 0x%08x; type=%d; length=0x%x; offset within original req=0x%x", (TUint) &fragment, (TInt) fragment.Id(), (TUint) pinnedLen, (TUint) pos);
       
  2097 		OstTraceDefExt3(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DPRIMARYMEDIABASE_PINFRAGMENTSENDRECEIVE4, "Send fragment 0x%08x; position in media=%x:%x",(TUint) &fragment, (TUint) I64HIGH(fragment.Pos()), (TUint) I64LOW(fragment.Pos()));
  2092 		
  2098 		
  2093 #ifdef BTRACE_PAGING_MEDIA
  2099 #ifdef BTRACE_PAGING_MEDIA
  2094 		TInt buf[4];
  2100 		TInt buf[4];
  2095 		buf[0] = pinnedLen;	// fragment length
  2101 		buf[0] = pinnedLen;	// fragment length
  2096 		buf[1] = pos;		// offset within original request
  2102 		buf[1] = pos;		// offset within original request
  2501 	__KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("DPrimaryMediaBase::DoRequest %d",m.Id()));
  2507 	__KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("DPrimaryMediaBase::DoRequest %d",m.Id()));
  2502 	TLocDrv* pL=m.Drive();
  2508 	TLocDrv* pL=m.Drive();
  2503 	DMedia* media=pL->iMedia;
  2509 	DMedia* media=pL->iMedia;
  2504 	TInt r=KErrNone;
  2510 	TInt r=KErrNone;
  2505 	
  2511 	
  2506 	OstTraceDefExt3( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_DOREQUEST, "req Id=%d; length=0x%x; position=0x%x", (TInt) m.Id(), (TInt) m.Length(), (TInt) m.Pos());
  2512 	OstTraceDefExt5( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_DOREQUEST, "req Id=%d; length=%x:%x; position=%x:%x", (TInt) m.Id(), (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos()) );
  2507 	
  2513 	
  2508 	// re-open this drive's media driver ?
  2514 	// re-open this drive's media driver ?
  2509 	if (m.iValue == DLocalDrive::EForceMediaChange)
  2515 	if (m.iValue == DLocalDrive::EForceMediaChange)
  2510 		{
  2516 		{
  2511 		__ASSERT_DEBUG(((TUint) m.Pos()) == (TUint) KForceMediaChangeReOpenMediaDriver, LOCM_FAULT());
  2517 		__ASSERT_DEBUG(((TUint) m.Pos()) == (TUint) KForceMediaChangeReOpenMediaDriver, LOCM_FAULT());
  4008 		m.DriverFlags() = 0;
  4014 		m.DriverFlags() = 0;
  4009 		if (aPhysAddr)
  4015 		if (aPhysAddr)
  4010 		    m.Flags() |= TLocDrvRequest::EPhysAddrOnly;
  4016 		    m.Flags() |= TLocDrvRequest::EPhysAddrOnly;
  4011 
  4017 
  4012 		__KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("ReqId=%d, Pos=0x%lx, Len=0x%lx, remote Des 0x%x",m.Id(),m.Pos(),m.Length(),m.RemoteDes()));
  4018 		__KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("ReqId=%d, Pos=0x%lx, Len=0x%lx, remote Des 0x%x",m.Id(),m.Pos(),m.Length(),m.RemoteDes()));
  4013 		OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_READ2, "reqId=%d; position=0x%lx; length=0x%x; remote Des=0x%x", (TInt) m.Id(), (TUint) m.Pos(), (TUint) m.Length(), (TUint) m.RemoteDes());
  4019 		OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_READ2, "reqId=%d; remote Des=0x%x", (TInt) m.Id(), (TUint) m.RemoteDes());
       
  4020 		OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_READ3, "length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos()));
  4014 		
  4021 		
  4015 		__ASSERT_DEBUG(iPrimaryMedia->iBody, LOCM_FAULT());
  4022 		__ASSERT_DEBUG(iPrimaryMedia->iBody, LOCM_FAULT());
  4016 		TInt mediaChanges = iPrimaryMedia->iBody->iMediaChanges;
  4023 		TInt mediaChanges = iPrimaryMedia->iBody->iMediaChanges;
  4017 
  4024 
  4018 		SendToMainQueueDfcAndBlock(&m);		// queues request, sets and opens client thread, queues dfc and blocks thread until request is completed
  4025 		SendToMainQueueDfcAndBlock(&m);		// queues request, sets and opens client thread, queues dfc and blocks thread until request is completed
  4141 		m.RemoteDes()=(TAny*)aBuffer;
  4148 		m.RemoteDes()=(TAny*)aBuffer;
  4142 		m.RemoteDesOffset()=0;		// pre-aligned
  4149 		m.RemoteDesOffset()=0;		// pre-aligned
  4143 		m.DriverFlags() = 0;        
  4150 		m.DriverFlags() = 0;        
  4144 
  4151 
  4145 		__KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("ReqId=%d, Pos=0x%lx, Len=0x%lx, remote Des 0x%x",m.Id(),m.Pos(),m.Length(),m.RemoteDes()));
  4152 		__KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("ReqId=%d, Pos=0x%lx, Len=0x%lx, remote Des 0x%x",m.Id(),m.Pos(),m.Length(),m.RemoteDes()));
  4146 		OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_WRITE2, "reqId=%d; position=0x%lx; length=0x%lx; remote Des=0x%x", (TInt) m.Id(), (TUint) m.Pos(), (TUint) m.Length(), (TUint) m.RemoteDes());
  4153 		OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_WRITE2, "reqId=%d; remote Des=0x%x", (TInt) m.Id(), (TUint) m.RemoteDes());
       
  4154 		OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_WRITE3, "length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()),  (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos()));
  4147 		
  4155 		
  4148 		__ASSERT_DEBUG(iPrimaryMedia->iBody, LOCM_FAULT());
  4156 		__ASSERT_DEBUG(iPrimaryMedia->iBody, LOCM_FAULT());
  4149 		TInt mediaChanges = iPrimaryMedia->iBody->iMediaChanges;
  4157 		TInt mediaChanges = iPrimaryMedia->iBody->iMediaChanges;
  4150 
  4158 
  4151 		SendToMainQueueDfcAndBlock(&m);		// queues request, sets and opens client thread, queues dfc and blocks thread until request is completed
  4159 		SendToMainQueueDfcAndBlock(&m);		// queues request, sets and opens client thread, queues dfc and blocks thread until request is completed
  4236 	m.Length() = Int64(size);
  4244 	m.Length() = Int64(size);
  4237 	m.RemoteDes() = NULL;
  4245 	m.RemoteDes() = NULL;
  4238 	m.RemoteDesOffset() = 0;		// pre-aligned
  4246 	m.RemoteDesOffset() = 0;		// pre-aligned
  4239 	m.DriverFlags()=0;
  4247 	m.DriverFlags()=0;
  4240 	__KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("ReqId=%d, Pos=0x%lx, Len=0x%lx, remote Des 0x%x",m.Id(),m.Pos(),m.Length(),m.RemoteDes()));
  4248 	__KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("ReqId=%d, Pos=0x%lx, Len=0x%lx, remote Des 0x%x",m.Id(),m.Pos(),m.Length(),m.RemoteDes()));
  4241 	OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_DELETENOTIFY2 , "reqId=%d; position=0x%lx; length=0x%lx; remote Des=0x%x", m.Id(), m.Pos(), m.Length(), (TUint) m.RemoteDes());
  4249 	OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_DELETENOTIFY2 , "reqId=%d; remote Des=0x%x", m.Id(),(TUint) m.RemoteDes());
  4242 
  4250 	OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_DELETENOTIFY3 , "length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos()));
  4243 	// send request aynchronously as we don't particularly care about the result 
  4251 	// send request aynchronously as we don't particularly care about the result 
  4244 	// and waiting would slow down the thread taking the page fault
  4252 	// and waiting would slow down the thread taking the page fault
  4245 	iPrimaryMedia->RequestCountInc();
  4253 	iPrimaryMedia->RequestCountInc();
  4246 
  4254 
  4247 	m.SendReceive(&iMainQ);	// send  request synchronously
  4255 	m.SendReceive(&iMainQ);	// send  request synchronously