void CSuspendTest::CreateL() { // // Create the eraser thread // iEraser = new(ELeave) CEraser; iEraser->CreateL(); // // Load the device drivers // TInt r; #ifndef SKIP_PDD_LOAD test.Printf( _L("Loading %S\n"), &KLfsDriverName ); r = User::LoadPhysicalDevice( KLfsDriverName ); test( KErrNone == r || KErrAlreadyExists == r ); #endif #ifdef UNMOUNT_DRIVE RFs fs; test( KErrNone == fs.Connect() ); test( KErrNone == fs.SetSessionPath( _L("Z:\\") ) ); TFullName name; fs.FileSystemName( name, KLffsLogicalDriveNumber ); if( name.Length() > 0 ) { test.Printf( _L("Unmounting drive") ); test( KErrNone == fs.DismountFileSystem( _L("Lffs"), KLffsLogicalDriveNumber) ); User::After( 2000000 ); test.Printf( _L("Drive unmounted") ); } fs.Close(); #endif // // Open a TBusLogicalDevice to it // test.Printf( _L("Opening media channel\n") ); TBool changedFlag = EFalse; r = iDrive.Connect( KDriveNumber, changedFlag ); User::LeaveIfError( r ); iDriveOpened = ETrue; // // Get size of Flash drive, block size, block count // TLocalDriveCapsV2Buf info; iDrive.Caps(info); iFlashSize = I64LOW(info().iSize); iBlockSize = info().iEraseBlockSize; iBlockCount = iFlashSize / iBlockSize; test.Printf( _L("Flash size is 0x%x bytes\n"), iFlashSize ); test.Printf( _L("Block size is 0x%x bytes\n"), iBlockSize ); test.Printf( _L("Block count is %d\n"), iBlockCount ); test.Printf( _L("CreateL complete\n") ); }
LOCAL_C void GetDriveLetters() { // Assign the first drive that matches the required criteria test.Next(_L("T_DENYCLAMP - GetDriveLetters()")); TDriveList driveList; TDriveInfo driveInfo; TInt r=TheFs.DriveList(driveList); test(r==KErrNone); TInt drvNum; TBool drivesFound = EFalse; for(drvNum=0; (drvNum<KMaxDrives) && !drivesFound; drvNum++) { TChar drvLetter='?'; TFileName fileSystem; if(!driveList[drvNum]) continue; test(TheFs.Drive(driveInfo, drvNum) == KErrNone); test(TheFs.DriveToChar(drvNum,drvLetter) == KErrNone); r=TheFs.FileSystemName(fileSystem,drvNum); fileSystem.UpperCase(); test((r==KErrNone)||(r==KErrNotFound)); // Check for FAT on NAND if(NandFatDrv=='?') { if((driveInfo.iType==EMediaNANDFlash) && (fileSystem.Compare(KFATName)==0)) NandFatDrv=drvLetter; } // Check for ROFS if(RofsDrv=='?') { if((driveInfo.iType==EMediaNANDFlash) && (fileSystem.Compare(KROFSName)==0)) RofsDrv=drvLetter; } // Check for LFFS if(LffsDrv=='?') { if((driveInfo.iType==EMediaFlash) && (fileSystem.Compare(KLFFSName)==0)) LffsDrv=drvLetter; } // Check for CompFSys if(CompDrv=='?') { if((driveInfo.iType==EMediaRom) && ((fileSystem.Compare(KROMName)==0)||(fileSystem.Compare(KCOMPName)==0))) CompDrv=drvLetter; } drivesFound=((NandFatDrv!='?')&&(RofsDrv!='?')&&(LffsDrv!='?')&&(CompDrv!='?')); } if(NandFatDrv!='?') test((NandFatDrv!=RofsDrv)&&(NandFatDrv!=LffsDrv)&&(NandFatDrv!=CompDrv)); if(RofsDrv!='?') test((RofsDrv!=LffsDrv)&&(RofsDrv!=CompDrv)); if(LffsDrv!='?') test(LffsDrv!=CompDrv); RDebug::Printf("T_DENYCLAMP: FAT drive=%C, ROFS drive=%C, LFFS drive=%C, ROM-COMP drive=%C \n",(TText)NandFatDrv,(TText)RofsDrv,(TText)LffsDrv,(TText)CompDrv); return; }
/** Tries to restore the original FS on the drive using the FS descriptor provided @return standard error code. */ static TInt DoRestoreFS(RFs& aFs, TInt aDrive, CFileSystemDescriptor* apFsDesc) { TInt nRes; Log(_L("# DoRestoreFS drv:%d\n"), aDrive); //-- 1. check that there is no FS installed { TBuf<128> fsName; nRes = aFs.FileSystemName(fsName, aDrive); if(nRes == KErrNone) {//-- probably no file system installed at all Log(_L("# This drive already has FS intalled:%S \n"), &fsName); return KErrAlreadyExists; } } TPtrC ptrN (apFsDesc->FsName()); TPtrC ptrExt(apFsDesc->PrimaryExtName()); Log(_L("# Mounting FS:%S, Prim ext:%S, synch:%d\n"), &ptrN, &ptrExt, apFsDesc->DriveIsSynch()); if(ptrExt.Length() >0) {//-- there is a primary extension to be mounted nRes = aFs.AddExtension(ptrExt); if(nRes != KErrNone && nRes != KErrAlreadyExists) { return nRes; } nRes = aFs.MountFileSystem(ptrN, ptrExt, aDrive, apFsDesc->DriveIsSynch()); } else { nRes = aFs.MountFileSystem(ptrN, aDrive, apFsDesc->DriveIsSynch()); } if(nRes != KErrNone) { Log(_L("# Mount failed! code:%d\n"),nRes); } return nRes; }
TInt MountNTFS() { TBuf<256> cmd; User::CommandLine(cmd); TLex cmdlex(cmd); cmdlex.SkipSpace(); TUint c = (TUint)cmdlex.Get(); if (c>='a' && c<='z') c-=0x20; if (c<'A' || c>'Z') return KErrArgument; TBuf<4> driveLetter; driveLetter.SetLength(1); driveLetter[0] = (TText)c; RDebug::Print(_L("Drive %S"), &driveLetter); TInt driveNumber = TInt(c-'A') + TInt(EDriveA); TInt r; driveLetter.Append(_L(":\\")); RDebug::Print(_L("Add file system: %S"), &KFileSystemDllName); r=TheFs.AddFileSystem(KFileSystemDllName); if (r!=KErrNone && r!=KErrAlreadyExists) { RDebug::Print(_L("Failed: %d"), r); return r; } TFullName name; r = TheFs.FileSystemName(name, driveNumber); if (name.Length() != 0) { RDebug::Print(_L("Dismounting %S on drive %S\r\n"), &name, &driveLetter); r=TheFs.DismountFileSystem(name, driveNumber); RDebug::Print(_L("Dismount ret=%d"), r); } RDebug::Print(_L("Mount NTFS on drive %S\r\n"), &driveLetter); r = TheFs.MountFileSystem(KFileSystemName, driveNumber); RDebug::Print(_L("Mount r=%d"),r); return KErrNone; }
// Member for thread function TInt CSMPSoakThread::DoSMPStressDeviceThread() { RTest test(_L("SMPStressDeviceThread")); test.Start(_L("SMPStressDeviceThread")); RTimer timer; RFs session; TFileName sessionPath; test_KErrNone(timer.CreateLocal()); TRequestStatus s; TDesC** ptrDevices = (TDesC**) (iThreadData.listPtr); PRINT ((_L("Devices Number %d [%s]\n"), ptrDevices[0]->Length(), ptrDevices[0]->Ptr())); for (TInt i = 1; ptrDevices[i] ; i++) PRINT ((_L("LDD%d=%s "),i,ptrDevices[i]->Ptr())); PRINT (_L("\n")); FOREVER { for (TInt i = 0; i < ptrDevices[0]->Length(); i++) { TText driveLetter = (*ptrDevices[0])[i]; PRINT ((_L("Device %c\n"),driveLetter)); test_KErrNone(session.Connect()); sessionPath=(_L("?:\\SESSION_TEST\\")); sessionPath[0]=driveLetter; test_KErrNone(session.SetSessionPath(sessionPath)); TInt driveNumber; test_KErrNone(session.CharToDrive(driveLetter, driveNumber)); TBuf<64> fileSystemName; test_KErrNone(session.FileSystemName(fileSystemName,driveNumber)); PRINT ((_L("File System Name %s\n"),fileSystemName.PtrZ())); TDriveInfo driveInfo; test_KErrNone(session.Drive(driveInfo, driveNumber)); TVolumeInfo volumeInfo; test_KErrNone(session.Volume(volumeInfo, driveNumber)); session.Close(); } for (TInt i = 1; ptrDevices[i] ; i += 2) { RDevice device; TInt r = User::LoadLogicalDevice(*ptrDevices[i]); if (r != KErrNone && r != KErrAlreadyExists) { test.Printf(_L("LDD %S not present\n"), ptrDevices[i]); continue; } test_KErrNone(device.Open(*ptrDevices[i+1])); TBuf8<64> deviceCaps; device.GetCaps(deviceCaps); TVersion deviceVersion; device.QueryVersionSupported(deviceVersion); device.Close(); } SetThreadPriority(); timer.After(s, iThreadData.delayTime*1000); User::WaitForRequest(s); test (s == KErrNone); if (gAbort) break; User::After(gPeriod); } timer.Close(); PRINT((_L("SMPStressDeviceThread MyTimer.Cancel() called\n"))); test.End(); test.Close(); return 0x00; }