--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfat32/sl_fatcache.inl Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,254 @@
+// Copyright (c) 1998-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:
+// f32\sfat\sl_fatcache.inl
+//
+//
+
+/**
+ @file
+*/
+
+#ifndef SL_FAT_CACHE_INL
+#define SL_FAT_CACHE_INL
+
+
+//-----------------------------------------------------------------------------
+
+/** clear all bits */
+void T32Bits::Clear()
+ {
+ iData = 0;
+ }
+
+/** @return non-0 if at least one of 32 bits is set to '1' */
+TBool T32Bits::HasBitsSet() const
+ {
+ return iData;
+ }
+
+/** sets bit number "aIndex" to '1' */
+void T32Bits::SetBit(TUint32 aIndex)
+ {
+ ASSERT(aIndex < 32);
+ iData |= (1<<aIndex);
+ }
+
+/**
+ Get value of the bit number "aIndex".
+ @return 0 if the bit aIndex is '0' non-zero otherwise
+*/
+TBool T32Bits::operator[](TUint32 aIndex) const
+ {
+ ASSERT(aIndex < 32);
+ return (iData & (1<<aIndex));
+ }
+
+
+//-----------------------------------------------------------------------------
+
+TUint32 CFatCacheBase::FatStartPos() const
+ {
+ return iFatStartPos;
+ }
+
+TUint32 CFatCacheBase::FatSize() const
+ {
+ return iFatSize;
+ }
+
+TFatType CFatCacheBase::FatType() const
+ {
+ return iFatType;
+ }
+
+TBool CFatCacheBase::IsDirty() const
+ {
+ return iDirty;
+ }
+
+void CFatCacheBase::SetDirty(TBool aDirty)
+ {
+ iDirty = aDirty;
+ }
+
+TUint CFatCacheBase::NumFATs() const
+ {
+ return iNumFATs;
+ }
+
+TUint CFatCacheBase::FAT_SectorSzLog2() const
+ {
+ return iFatSecSzLog2;
+ }
+
+TUint CFatCacheBase::FAT_SectorSz() const
+ {
+ return 1 << iFatSecSzLog2;
+ }
+
+TUint CFatCacheBase::FAT_ClusterSzLog2() const
+ {
+ return iFatClustSzLog2;
+ }
+
+
+//-----------------------------------------------------------------------------
+
+/** @return number of FAT cache sectors in this fixed cache */
+TUint32 CFat12Cache::NumSectors() const
+ {
+ return iSectorsInCache;
+ }
+
+
+//-----------------------------------------------------------------------------
+
+
+/** @return Log2(page size in bytes) */
+TUint CFatPagedCacheBase::PageSizeLog2() const
+ {
+ return iPageSizeLog2;
+ }
+
+/** @return page size in bytes */
+TUint CFatPagedCacheBase::PageSize() const
+ {
+ return Pow2(iPageSizeLog2);
+ }
+
+/** @return Log2(size of the logical sector of the page in bytes) */
+TUint CFatPagedCacheBase::SectorSizeLog2() const
+ {
+ return iSectorSizeLog2;
+ }
+
+/** @return number of the logical sector in the page */
+TUint CFatPagedCacheBase::SectorsInPage() const
+ {
+ return Pow2(iPageSizeLog2 - iSectorSizeLog2);
+ }
+
+
+//-----------------------------------------------------------------------------
+
+TUint CFat16FixedCache::NumPages() const
+ {
+ return (TUint)iPages.Count();
+ }
+
+//-----------------------------------------------------------------------------
+
+
+/** @return the index in the FAT table this page starts from */
+TUint32 CFatCachePageBase::StartFatIndex() const
+ {
+ return iStartIndexInFAT;
+ }
+
+/** @return number of FAT entries in the page */
+TUint32 CFatCachePageBase::EntriesInPage() const
+ {
+ return iFatEntriesInPage;
+ }
+
+/** @return page state */
+CFatCachePageBase::TState CFatCachePageBase::State() const
+ {
+ return iState;
+ }
+
+/** sets the state of the page */
+void CFatCachePageBase::SetState(TState aState)
+ {
+ iState = aState;
+ }
+
+/** @return ETrue if the page is dirty, i.e. contains non-flushed dirty sectors */
+TBool CFatCachePageBase::IsDirty() const
+ {
+ if(State() == EDirty)
+ {
+ ASSERT(iDirtySectors.HasBitsSet());
+ return ETrue;
+ }
+ else
+ {
+ ASSERT(!iDirtySectors.HasBitsSet());
+ return EFalse;
+ }
+ }
+
+/** @return ETrue if the page data are valid */
+TBool CFatCachePageBase::IsValid() const
+ {
+ return (State() == EClean || State() == EDirty);
+ }
+
+/** force the page to the clean state */
+void CFatCachePageBase::SetClean()
+ {
+ iDirtySectors.Clear(); //-- clear dirty sectors bitmap
+ SetState(EClean);
+ }
+
+/** @return page size in bytes */
+TUint32 CFatCachePageBase::PageSize() const
+ {
+ return iCache.PageSize();
+ }
+
+/** @return number of logical sectors in the page */
+TUint32 CFatCachePageBase::NumSectors() const
+ {
+ return iCache.SectorsInPage();
+ }
+
+/** @return ETrue if the entry at aFatIndex belongs to this page */
+TBool CFatCachePageBase::IsEntryCached(TUint32 aFatIndex) const
+ {
+ return (aFatIndex >= iStartIndexInFAT && aFatIndex < iStartIndexInFAT+EntriesInPage());
+ }
+
+
+//---------------------------------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+#endif //SL_FAT_CACHE_INL
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+