kernel/eka/drivers/locmedia/locmedia.cpp
changeset 134 95847726fe57
parent 126 2b2a51c87b12
child 148 31ea0f8e3c99
equal deleted inserted replaced
133:2a0ada0a1bf8 134:95847726fe57
  2876 			OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DPRIMARYMEDIABASE_DOREQUEST4, "Media driver cannot service or defer PageIn request 0x%08x or serviced it synchronously; retval=%d",(TUint) &m, s);
  2876 			OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DPRIMARYMEDIABASE_DOREQUEST4, "Media driver cannot service or defer PageIn request 0x%08x or serviced it synchronously; retval=%d",(TUint) &m, s);
  2877 			iBody->iPagingDevice->CompleteRequest(&m, s);
  2877 			iBody->iPagingDevice->CompleteRequest(&m, s);
  2878 			}
  2878 			}
  2879 		else
  2879 		else
  2880 #endif
  2880 #endif
  2881 
  2881 			{
  2882 		CompleteRequest(m, s);
  2882 			CompleteRequest(m, s);
  2883 		OstTraceDefExt3( OST_TRACE_CATEGORY_RND, TRACE_INTERNALS, DPRIMARYMEDIABASE_DOREQUEST_RETURN, "Return req Id=%d; Remote Thread=0x%x; retval=%d", (TInt) m.Id(), (TUint) m.RemoteThread(), (TInt) s);
  2883 			OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_INTERNALS, DPRIMARYMEDIABASE_DOREQUEST_RETURN, "Return Remote Thread=0x%x; retval=%d", (TUint) m.RemoteThread(), (TInt) s);
       
  2884 			}
  2884 		}
  2885 		}
  2885 
  2886 
  2886 	iCurrentReq=NULL;
  2887 	iCurrentReq=NULL;
  2887 	OstTraceFunctionExitExt( DPRIMARYMEDIABASE_DOREQUEST_EXIT3, this, r );
  2888 	OstTraceFunctionExitExt( DPRIMARYMEDIABASE_DOREQUEST_EXIT3, this, r );
  2888 	return r;
  2889 	return r;
  4954 */
  4955 */
  4955 EXPORT_C TInt LocDrv::RegisterMediaDevice(TMediaDevice aDevice, TInt aDriveCount, const TInt* aDriveList, DPrimaryMediaBase* aPrimaryMedia, TInt aNumMedia, const TDesC& aName)
  4956 EXPORT_C TInt LocDrv::RegisterMediaDevice(TMediaDevice aDevice, TInt aDriveCount, const TInt* aDriveList, DPrimaryMediaBase* aPrimaryMedia, TInt aNumMedia, const TDesC& aName)
  4956 	{
  4957 	{
  4957 	OstTraceFunctionEntry0( LOCDRV_REGISTERMEDIADEVICE_ENTRY );
  4958 	OstTraceFunctionEntry0( LOCDRV_REGISTERMEDIADEVICE_ENTRY );
  4958 	// Create TLocDrv / DMedia objects to handle a media device
  4959 	// Create TLocDrv / DMedia objects to handle a media device
  4959 	__KTRACE_OPT(KBOOT,Kern::Printf("RegisterMediaDevice %lS dev=%1d #drives=%d 1st=%d PM=%08x #media=%d",&aName,aDevice,aDriveCount,*aDriveList,aPrimaryMedia,aNumMedia));
  4960 	__KTRACE_OPT(KBOOT,Kern::Printf("RegisterMediaDevice %S dev=%1d #drives=%d 1st=%d PM=%08x #media=%d",&aName,aDevice,aDriveCount,*aDriveList,aPrimaryMedia,aNumMedia));
  4960 	OstTraceExt5( TRACE_INTERNALS, LOCDRV_REGISTERMEDIADEVICE1, "aDevice=%d; aDriveCount=%d; aDriveList=%d; aPrimaryMedia=0x%08x; aNumMedia=%d", (TInt) aDevice, (TInt) aDriveCount, (TInt) *aDriveList, (TUint) aPrimaryMedia, (TInt) aNumMedia );
  4961 	OstTraceExt5( TRACE_INTERNALS, LOCDRV_REGISTERMEDIADEVICE1, "aDevice=%d; aDriveCount=%d; aDriveList=%d; aPrimaryMedia=0x%08x; aNumMedia=%d", (TInt) aDevice, (TInt) aDriveCount, (TInt) *aDriveList, (TUint) aPrimaryMedia, (TInt) aNumMedia );
  4961 
  4962 
  4962 	if (UsedMedia+aNumMedia>KMaxLocalDrives)
  4963 	if (UsedMedia+aNumMedia>KMaxLocalDrives)
  4963 	    {
  4964 	    {
  4964 		OstTrace0(TRACE_FLOW, LOCDRV_REGISTERMEDIADEVICE_EXIT1, "< KErrInUse");
  4965 		OstTrace0(TRACE_FLOW, LOCDRV_REGISTERMEDIADEVICE_EXIT1, "< KErrInUse");
  5329 		for (i=0; i<KMaxLocalDrives; ++i)
  5330 		for (i=0; i<KMaxLocalDrives; ++i)
  5330 			{
  5331 			{
  5331 			drive = TheDrives[i];
  5332 			drive = TheDrives[i];
  5332 			if(drive && drive->iPrimaryMedia == aPrimaryMedia)
  5333 			if(drive && drive->iPrimaryMedia == aPrimaryMedia)
  5333 				{
  5334 				{
  5334 				__KTRACE_OPT2(KBOOT,KLOCDPAGING, Kern::Printf("RegisterPagingDevice: local drive %d, partition type %x base %lx size %lx name %lS", i, drive->iPartitionType, drive->iPartitionBaseAddr, drive->iPartitionLen, DriveNames[i] ? DriveNames[i] : &KNullDesC8));
  5335 				__KTRACE_OPT2(KBOOT,KLOCDPAGING, Kern::Printf("RegisterPagingDevice: local drive %d, partition type %x base %lx size %lx name %S", i, drive->iPartitionType, drive->iPartitionBaseAddr, drive->iPartitionLen, DriveNames[i] ? DriveNames[i] : &KNullDesC8));
  5335 				// ROM partition ?
  5336 				// ROM partition ?
  5336 				if ((romPagingDriveNumber == KErrNotFound) && 
  5337 				if ((romPagingDriveNumber == KErrNotFound) && 
  5337 					(drive->iPartitionType == KPartitionTypeROM) &&
  5338 					(drive->iPartitionType == KPartitionTypeROM) &&
  5338 					(aPagingType & DPagingDevice::ERom))
  5339 					(aPagingType & DPagingDevice::ERom))
  5339 					{
  5340 					{
  5386 	pagingDevice->iDataPagingDriveNumber = dataPagingDriveNumber;
  5387 	pagingDevice->iDataPagingDriveNumber = dataPagingDriveNumber;
  5387 	pagingDevice->iSwapSize = swapSize;
  5388 	pagingDevice->iSwapSize = swapSize;
  5388 
  5389 
  5389 #ifdef __DEBUG_DEMAND_PAGING__
  5390 #ifdef __DEBUG_DEMAND_PAGING__
  5390 	Kern::Printf("PagingDevice :");
  5391 	Kern::Printf("PagingDevice :");
  5391 	Kern::Printf("Name %lS", firstLocalDriveNumber >= 0 && DriveNames[firstLocalDriveNumber] ? DriveNames[firstLocalDriveNumber] : &KNullDesC8);
  5392 	Kern::Printf("Name %S", firstLocalDriveNumber >= 0 && DriveNames[firstLocalDriveNumber] ? DriveNames[firstLocalDriveNumber] : &KNullDesC8);
  5392 	Kern::Printf("iType 0x%x", pagingDevice->iType);
  5393 	Kern::Printf("iType 0x%x", pagingDevice->iType);
  5393 	Kern::Printf("iReadUnitShift 0x%x", pagingDevice->iReadUnitShift);
  5394 	Kern::Printf("iReadUnitShift 0x%x", pagingDevice->iReadUnitShift);
  5394 	Kern::Printf("iFirstLocalDriveNumber 0x%x", pagingDevice->iFirstLocalDriveNumber);
  5395 	Kern::Printf("iFirstLocalDriveNumber 0x%x", pagingDevice->iFirstLocalDriveNumber);
  5395 	Kern::Printf("iRomPagingDriveNumber 0x%x", pagingDevice->iRomPagingDriveNumber);
  5396 	Kern::Printf("iRomPagingDriveNumber 0x%x", pagingDevice->iRomPagingDriveNumber);
  5396 	Kern::Printf("iDataPagingDriveNumber 0x%x", pagingDevice->iDataPagingDriveNumber);
  5397 	Kern::Printf("iDataPagingDriveNumber 0x%x", pagingDevice->iDataPagingDriveNumber);
  5610 			if (pM->IsRemovableDevice(sockNum))
  5611 			if (pM->IsRemovableDevice(sockNum))
  5611 				{
  5612 				{
  5612 				if (!(sock_mask & (1<<sockNum)))
  5613 				if (!(sock_mask & (1<<sockNum)))
  5613 					{
  5614 					{
  5614 					info.iSocketName[sockNum]=*DriveNames[i];
  5615 					info.iSocketName[sockNum]=*DriveNames[i];
  5615 					__KTRACE_OPT(KLOCDRV,Kern::Printf("Socket %d device %d name %lS", sockNum, pM->iDevice, DriveNames[i]));
  5616 					__KTRACE_OPT(KLOCDRV,Kern::Printf("Socket %d device %d name %S", sockNum, pM->iDevice, DriveNames[i]));
  5616 					OstTraceExt2( TRACE_INTERNALS, GETDRIVEINFO1, "Socket=%d; device=%d", sockNum, (TUint) pM->iDevice );
  5617 					OstTraceExt2( TRACE_INTERNALS, GETDRIVEINFO1, "Socket=%d; device=%d", sockNum, (TUint) pM->iDevice );
  5617 					if ( (sockNum + 1) > sockets )
  5618 					if ( (sockNum + 1) > sockets )
  5618 						sockets = sockNum + 1;
  5619 						sockets = sockNum + 1;
  5619 					}
  5620 					}
  5620 				sock_mask |= (1<<sockNum);
  5621 				sock_mask |= (1<<sockNum);
  5621 				}
  5622 				}
  5622 			info.iDriveName[i]=*DriveNames[i];
  5623 			info.iDriveName[i]=*DriveNames[i];
  5623 			__KTRACE_OPT(KLOCDRV,Kern::Printf("Drive %d device %d name %lS",i,pM->iDevice,DriveNames[i]));
  5624 			__KTRACE_OPT(KLOCDRV,Kern::Printf("Drive %d device %d name %S",i,pM->iDevice,DriveNames[i]));
  5624 			OstTraceExt2( TRACE_INTERNALS, GETDRIVEINFO2, "Drive=%d; device=%d", i, (TUint) pM->iDevice );
  5625 			OstTraceExt2( TRACE_INTERNALS, GETDRIVEINFO2, "Drive=%d; device=%d", i, (TUint) pM->iDevice );
  5625 			
  5626 			
  5626 			info.iRegisteredDriveBitmask |= (0x01 << i);
  5627 			info.iRegisteredDriveBitmask |= (0x01 << i);
  5627 			}
  5628 			}
  5628 		}
  5629 		}