userlibandfileserver/fileserver/sfat32/sl_fatcache.inl
author Tom Cosgrove <tom.cosgrove@nokia.com>
Fri, 28 May 2010 16:26:05 +0100
branchRCL_3
changeset 136 743008598095
parent 36 538db54a451d
child 269 d57b86b1867a
permissions -rw-r--r--
Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h) Have multiple extension sections in the bld.inf, one for each version of the compiler. The RVCT version building the tools will build the runtime libraries for its version, but make sure we extract all the other versions from zip archives. Also add the archive for RVCT4.

// 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




//-----------------------------------------------------------------------------

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