⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 davrecl.h

📁 FDI Intel开发的FLASH文件系统,功能很强大
💻 H
字号:
/* Copyright (c) 1995-2002 Intel Corporation */
/* Intel Confidential                        */

/* ###########################################################################
###  DAV - Direct Access Volume Enhancement to FDI
###
###  Module: davrecl.h - DAV Include File
###
###  $Workfile: davrecl.h $
###  $Revision: 51 $
###  $NoKeywords: $
########################################################################### */

/*                                                               
 *****************************************************************
 * NOTICE OF LICENSE AGREEMENT                                    
 *                                                                
 * This code is provided by Intel Corp., and the use is governed  
 * under the terms of a license agreement. See license agreement  
 * for complete terms of license.                                 
 *                                                                
 * YOU MAY ONLY USE THE SOFTWARE WITH INTEL FLASH PRODUCTS.  YOUR 
 * USE OF THE SOFTWARE WITH ANY OTHER FLASH PRODUCTS IS EXPRESSLY 
 * PROHIBITED UNLESS AND UNTIL YOU APPLY FOR, AND ARE GRANTED IN  
 * INTEL'S SOLE DISCRETION, A SEPARATE WRITTEN SOFTWARE LICENSE   
 * FROM INTEL LICENSING ANY SUCH USE.                             
 *****************************************************************
 */
 

#ifndef __dav_reclaim_h  /* sentry header */
#define __dav_reclaim_h

#include "davrectb.h"
#include "davott.h"
#include "davrecpg.h"
#include "davrecpr.h"
#include "davrecip.h"

/*### Global Declarations
#########################*/
#if (DIRECT_ACCESS_VOLUME == TRUE)

/* This enumerated type will be used to perform selective reclaim. */
typedef enum
{
   ReclaimParagraphObjects,  /* Reclaim only paragraph object space          */
   ReclaimPageObjects,       /* Reclaim only page object space               */
   ReclaimAllObjects         /* Reclaim both page and paragraph object space */
} RECLAIM_Method;

/* Reclaim State Machine States */
typedef enum
{
   RECLAIM_ST_ReadNextObj,
   RECLAIM_ST_ProcessInvalidObj,
   RECLAIM_ST_CalcParameters,
   RECLAIM_ST_CopyOut,
   RECLAIM_ST_ReclaimComplete,
   RECLAIM_ST_ObjectModified
} RECLAIM_CleanupStatus;

typedef struct
{
   struct 
   {
      FDI_Handle  BaseAddr;
      UINT32       BytesFree;
   } FreeBlk;   /* Free space to copy to */

   struct 
   {
      UINT32      BaseAddr;
      UINT32      BytesUsed;
   } RecBlk;    /* Reclaim block space */

} RECLAIM_MemTrackingStruct;

/* This structure will be used by reclaim to track progress and store */
/*  the current reclaim state.  SYSPOI will use a globally declared   */
/*  variable to allow reclaim to be restarted.                        */

typedef struct
{
   UINT16  NextState;
   
   UINT32 CurrentBlock2Reclaim;
   UINT32 CurrentDoneBlock;
   
   UINT32 CurrentObject2Modify;
   UINT32 InvalidObjectSize;

   BOOLEAN      HeaderInRecBlk;
   BOOLEAN      ReclaimInProgress;
   BOOLEAN      SingleSkipRead;
   BOOLEAN      HeaderCopied;
   BOOLEAN      MarkHeaderCopyComplete;
   
   FDI_Handle   OTTTblBaseAddr;
   FDI_Handle   OTTTblHdrAddr;

   FDI_Handle   RecTblBaseAddr;
   FDI_Handle   RecTblHdrAddr;
   FDI_Handle   ObjectBaseAddr;
   FDI_Handle   ObjectEndAddr;
   FDI_Handle   TargetHeaderAddress;
   
   FDI_Handle   ObjectHiAddr;
   FDI_Handle   ObjectLoAddr;
   
   RECLAIM_Method ReclaimType;
   
   UINT8                      ConfigIndex;
   RECTBL_TableEntry          RecTblEntry;   
   OTTTBL_TableEntryStruct    OTTTblEntry;   
   OTTTBL_TableInfo           OTTTableInfo;
   RECTBL_TableInfo          TableInfo;
   CFGHDR_ConfigurationEntry ConfigEntry;
} RECLAIM_InfoStruct, __FAR_ * RECLAIM_InfoStructPtr;

/*### Global Data
#########################*/
extern HDR_Header                SearchHeader;
extern HDR_SearchInfo            SearchInfo;
extern RECLAIM_InfoStruct        ReclaimState;
extern RECLAIM_MemTrackingStruct MemMap;

/*### Global Functions
#########################*/

/* This macro defines the amount of paragraph space that can */
/*  be regained by issuing a paragraph only reclaim.         */
#define RECLAIM_CalcReclaimableParas()  \
           ( FDI_MemUsage.ParaSpace.Invalid +     \
             FDI_MemUsage.ParaOverhead.Invalid +  \
             FDI_MemUsage.PageOverhead.Absorbed )

/* This macro defines the amount of page space that can */
/*  be regained by issuing a page only reclaim.         */
#define RECLAIM_CalcReclaimablePages()  \
           ( FDI_MemUsage.PageSpace.Invalid )

ERR_CODE RECLAIM_Cleanup(RECLAIM_Method method, 
                           BOOLEAN        restart);

ERR_CODE RECLAIM_EraseBlock(UINT32          block_number, 
                              BOOLEAN       copy_complete,
                              BOOLEAN       paragraph_reclaim,
                              BOOLEAN       restart );

ERR_CODE RECLAIM_PreCondition(UINT32 num_bytes, RECLAIM_Method method);

ERR_CODE RECLAIM_ReLocateReclaimTable(BOOLEAN paragraph_reclaim, BOOLEAN restart);

ERR_CODE RECLAIM_FinishBlock(UINT32   block_number, 
                               BOOLEAN paragraph_reclaim,
                               BOOLEAN ok_2_erase_rb,
                               BOOLEAN restart);

ERR_CODE RECLAIM_MarkBlockDone(BOOLEAN paragraph_reclaim, BOOLEAN restart);

#endif /* sentry */

#endif /* DIRECT_ACCESS_VOLUME */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -