diff -r 000000000000 -r 96e5fb8b040d userlibandfileserver/fileserver/inc/rofs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/userlibandfileserver/fileserver/inc/rofs.h Thu Dec 17 09:24:54 2009 +0200 @@ -0,0 +1,151 @@ +// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// +// WARNING: This file contains some APIs which are internal and are subject +// to change without notice. Such APIs should therefore not be used +// outside the Kernel and Hardware Services package. +// + +/** + @file + @internalAll +*/ + +#ifndef ROFS_H +#define ROFS_H + +/** +@internalAll +@released +*/ +const TUint16 KRofsFormatVersion = 0x200; + +class TRofsEntry +/** +@internalAll +@released +*/ + { +public: + TUint16 iStructSize; // Total size of entry, header + name + any padding + TUint8 iUids[sizeof(TCheckedUid)]; // A copy of all the UID info + TUint8 iNameOffset; // offset of iName from start of entry + TUint8 iAtt; // standard file attributes + TUint32 iFileSize; // real size of file in bytes (may be different from size in image) + // for subdirectories this is the total size of the directory + // block entry excluding padding + TUint32 iFileAddress; // address in image of file start + TUint8 iAttExtra; // extra ROFS attributes (these are inverted so 0 = enabled) + TUint8 iNameLength; // length of iName + TUint16 iName[1]; + }; + +/** +@internalAll +@released +*/ +const TUint KRofsEntryNameOffset = _FOFF( TRofsEntry, iName ); +/** +@internalAll +@released +*/ +const TUint KRofsEntryHeaderSize = KRofsEntryNameOffset; + +class TRofsDir +/** +@internalAll +@released +*/ + { + public: + TUint16 iStructSize; // Total size of this directory block including padding + TUint8 padding; + TUint8 iFirstEntryOffset; // offset to first entry + TUint32 iFileBlockAddress; // address of associated file block + TUint32 iFileBlockSize; // size of associated file block + TRofsEntry iSubDir; // first subdir entry (not present if no subdirs) + }; + +/** +@internalAll +@released +*/ +const TUint KRofsDirFirstEntryOffset = _FOFF( TRofsDir, iSubDir ); +/** +@internalAll +@released +*/ +const TUint KRofsDirHeaderSize = KRofsDirFirstEntryOffset; + +class TRofsHeader +/** +@internalAll +@released +*/ + { + public: + TUint8 iIdentifier[4]; // ROFS identifier + TUint8 iHeaderSize; + TUint8 iReserved; + TUint16 iRofsFormatVersion; + TUint iDirTreeOffset; // offset to start of directory structure + TUint iDirTreeSize; // size in bytes of directory + TUint iDirFileEntriesOffset; // offset to start of file entries + TUint iDirFileEntriesSize; // size in bytes of file entry block + TInt64 iTime; + TVersion iImageVersion; // licensee image version + TUint32 iImageSize; + TUint iCheckSum; + TUint32 iMaxImageSize; + }; +/** +@internalAll +@released +*/ + +class TExtensionRofsHeader + { + public: + TUint8 iIdentifier[4]; // ROFS Extension identifier + TUint8 iHeaderSize; + TUint8 iReserved; + TUint16 iRofsFormatVersion; + TUint iDirTreeOffset; // offset to start of directory structure + TUint iDirTreeSize; // size in bytes of directory + TUint iDirFileEntriesOffset; // offset to start of file entries + TUint iDirFileEntriesSize; // size in bytes of file entry block + TInt64 iTime; + TVersion iImageVersion; // licensee image version + TUint32 iImageSize; + TUint iCheckSum; + TUint32 iMaxImageSize; + }; + +const TUint KRofsHeaderSize = sizeof(TRofsHeader); +const TUint KExtensionRofsHeaderSize = sizeof(TExtensionRofsHeader); + +/** +@internalAll +@released +*/ +const TInt16 KEarliestSupportedFormatVersion = KRofsFormatVersion; +/** +@internalAll +@released +*/ +const TInt16 KLatestSupportedFormatVersion = KRofsFormatVersion; + +const TUint KRofsMangleNameLength = 7; + +#endif