os/kernelhwsrv/kerneltest/f32test/fsstress/t_remfsy.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // f32test\fsstress\t_remfsy.h
    15 // 
    16 //
    17 
    18 #include <e32twin.h>
    19 #if !defined(__T_REMFSY_H__)
    20 #define __T_REMFSY_H__
    21 #if defined(_UNICODE)
    22 #define _WTEXT(c) L ## c
    23 #define _STRC LPCWSTR
    24 #define _STR LPWSTR
    25 #else
    26 #define _WTEXT(c) c
    27 #define _STRC LPCSTR
    28 #define _STR LPSTR
    29 #endif
    30 
    31 #include <f32fsys.h>
    32 #include <f32file.h>
    33 #include <e32test.h>
    34 #include <e32hal.h>
    35 #include <e32math.h>
    36 #if defined (__DEBUG__)|| defined(_DEBUG_RELEASE)
    37 #include <f32dbg.h>
    38 #endif
    39 
    40 
    41 //
    42 // Common constants used by both EFSRV and the filesystems
    43 //
    44 
    45 const TUint KEntryAttIllegal=(KEntryAttVolume|KEntryAttDir);
    46 const TUint KEntryAttModified=0x20000000;
    47 const TUint KEntryAttMustBeFile=0x80000000;
    48 const TInt KCurrentPosition=KMinTInt;
    49 
    50 
    51 GLDEF_D const TInt KMaxParses=7;
    52 GLDEF_D const TInt KHeapSize=0x2000;
    53 GLREF_C void TurnAllocFailureOff();
    54 GLREF_C void TurnAllocFailureOn();
    55 GLREF_C void ReportCheckDiskFailure(TInt aRet);
    56 GLREF_D RTest test;
    57 GLREF_D TFileName gSessionPath;
    58 GLREF_D TInt gAllocFailOff;
    59 GLREF_D TInt gAllocFailOn;
    60 
    61 #if defined(_DEBUG)
    62 #define SetAllocFailure(a) SetAllocFailure(a)
    63 #else
    64 #define SetAllocFailure(a) IsRomAddress(NULL)
    65 #define KAllocFailureOn 0
    66 #define KAllocFailureOff 0
    67 #endif
    68 
    69 
    70 enum TPanic
    71 	{
    72 	EFileTimeToSystemTime,
    73 	EFileClose,
    74 	EFileCloseSetAttributes,
    75 	EDirClose,
    76 	EMapCouldNotConnect
    77 	};
    78 
    79 
    80 class CSessionFs;
    81 
    82 class CRemoteMountCB : public CMountCB
    83 	{
    84 public:
    85 	CRemoteMountCB();
    86 	~CRemoteMountCB();
    87 	void MountL(TBool aForceMount);
    88 	TInt ReMount();
    89 	void Dismounted();
    90 	void VolumeL(TVolumeInfo& aVolume) const;
    91 	void SetVolumeL(TDes& aName);
    92 	void MkDirL(const TDesC& aName);
    93 	void RmDirL(const TDesC& aName);
    94 	void DeleteL(const TDesC& aName);
    95 	void RenameL(const TDesC& anOldName,const TDesC& anNewName);
    96 	void ReplaceL(const TDesC& anOldName,const TDesC& anNewName);
    97 	void EntryL(const TDesC& aName,TEntry& anEntry) const;
    98 	void SetEntryL(const TDesC& aName,const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
    99 	void FileOpenL(const TDesC& aName,TUint aMode,TFileOpen anOpen,CFileCB* aFile);
   100 	void DirOpenL(const TDesC& aName,CDirCB* aDir);
   101 	void RawReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt anOffset,const RMessagePtr2& aMessage) const;
   102 	void RawWriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt anOffset,const RMessagePtr2& aMessage);
   103 	void ReadUidL(const TDesC& aName,TEntry& anEntry) const;
   104 	void GetShortNameL(const TDesC& aLongName,TDes& aShortName);
   105 	void GetLongNameL(const TDesC& aShortName,TDes& aLongName);
   106 	void IsFileInRom(const TDesC& aFileName,TUint8*& aFileStart);
   107 	void ReadSectionL(const TDesC& aName,TInt aPos,TAny* aTrg,TInt aLength,const RMessagePtr2& aMessage);
   108 private:
   109 	TBool IsRomDrive() const;
   110 	};
   111 
   112 
   113 class RConsole;
   114 class CRemoteFileCB : public CFileCB
   115 	{
   116 public:
   117 	CRemoteFileCB();
   118 	~CRemoteFileCB();
   119 	void RenameL(const TDesC& aNewName);
   120 	void ReadL(TInt aPos,TInt& aLength,const TAny* aDes,const RMessagePtr2& aMessage);
   121 	void WriteL(TInt aPos,TInt& aLength,const TAny* aDes,const RMessagePtr2& aMessage);
   122 	TInt Address(TInt& aPos) const;
   123 	void SetSizeL(TInt aSize);
   124 	void SetEntryL(const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
   125 	void FlushDataL();
   126 	void FlushAllL();
   127 //	inline void SetHandle(HANDLE aHandle) {iWinHandle=aHandle;}
   128 	void CheckPos(TInt aPos);
   129 private:
   130 	TBool IsRomDrive() const;
   131 private:
   132 	TInt iCurrentPos;
   133 	TUint8* iFilePtr;
   134 	RConsole iConsole;
   135 //	HANDLE iWinHandle;
   136 	};
   137 
   138 class CRemoteDirCB : public CDirCB
   139 	{
   140 public:
   141 	CRemoteDirCB(/*CSessionFs* aSession*/);
   142 	~CRemoteDirCB();
   143 	void ReadL(TEntry& anEntry);
   144 //	inline void SetHandle(HANDLE aHandle) {iWinHandle=aHandle;}
   145 	inline void SetFullName(const TDesC& aName) {iFullName.Set(aName,NULL,NULL);}
   146 private:
   147 	TBool MatchUid();
   148 public:
   149 	TEntry iEntry;
   150 private:
   151 //	HANDLE iWinHandle;
   152 	TParse iFullName;
   153 	};
   154 
   155 class CRemoteFormatCB : public CFormatCB
   156 	{
   157 public:
   158 	CRemoteFormatCB(/*CSessionFs* aSession*/);
   159 	~CRemoteFormatCB();
   160 public:
   161 	virtual void DoFormatStepL();
   162 	};
   163 
   164 class CRemote : public CFileSystem
   165 	{
   166 public:
   167 	CRemote();
   168 	TInt Install();
   169 	TInt DefaultPath(TDes& aPath) const;
   170 	void DriveInfo(TDriveInfo& anInfo,TInt aDriveNumber) const;
   171 private:
   172 	CMountCB* NewMountL() const;	//	These were not previously implemented
   173 	CFileCB* NewFileL() const;		//	They are essential for a CRemote
   174 	CDirCB* NewDirL() const;		//	object to be instantiated because they are
   175 	CFormatCB* NewFormatL() const;	//	pure virtual in CFileSystem
   176 public:
   177 	static CFileSystem* NewL();
   178 	};
   179 
   180 struct SParse
   181 	{
   182 	const TText* src;
   183 	const TText* rel;
   184 	const TText* def;
   185 	const TText* fullName;
   186 	const TText* drive;
   187 	const TText* path;
   188 	const TText* name;
   189 	const TText* ext;
   190 	};
   191 
   192 struct SParseServer
   193 	{
   194 	const TText* src;
   195 	const TText* rel;
   196 	const TText* fullName;
   197 	const TText* drive;
   198 	const TText* path;
   199 	const TText* name;
   200 	const TText* ext;
   201 	};
   202 
   203 
   204 class TMultipleSessionTest
   205 	{
   206 public:
   207 	TMultipleSessionTest() {};
   208 	TMultipleSessionTest(RFs& aFs):	iFs(aFs){};	
   209 	void Initialise(RFs& aFs);
   210 	void RunTests(RTest& aTest);
   211 	void testDriveList(RTest& aTest);
   212 	void testDriveInfo(RTest& aTest);
   213 	void testVolumeInfo(RTest& aTest);
   214 	void testPath(RTest& aTest);
   215 	void testInitialisation(RTest& aTest);
   216 	void testSubst(RTest& aTest);
   217 	void CopyFileToTestDirectory(RTest& aTest);
   218 	void MakeAndDeleteFiles(RTest& aTest);
   219 	void FillUpDisk(RTest& aTest);
   220 	void testSetVolume(RTest& aTest);
   221 //	void testPowerDown(RTest& aTest);
   222 //	void testMediaChange(RTest& aTest);
   223 	void DeleteTestDirectory(RTest& aTest);
   224 	TInt CurrentDrive(RTest& aTest);
   225 	void SetSessionPath(TInt aDrive);
   226 private:
   227 	RFs iFs;
   228 	TBuf<30> iSessionPath;
   229 	};
   230 
   231 
   232 //
   233 // WINS - dependent functions
   234 //
   235 
   236 GLREF_D const TFileName ZPath;
   237 
   238 GLREF_C TBool GetEnvValue(TInt aDrive,TDes& aDes);
   239 GLREF_C TBool MapDrive(TDes& aFileName,TInt aDrive);
   240 GLREF_C TBool MapDriveInfo(TDriveInfo& anInfo,TInt aDrive);
   241 GLREF_C TBool MapDriveAttributes(TUint& aDriveAtt,TInt aDrive);
   242 GLREF_C void CheckAppendL(TDes& aFileName,const TDesC& aName);
   243 #endif
   244 
   245