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

📄 davott.h

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

/* ###########################################################################
###  DAV - Direct Access Volume Enhancement to FDI
###
###  Module: davott.h - Object Tracking table Include File
###
###  $Workfile: davott.h $
###  $Revision: 59 $
###  $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_objtrktbl_h  /* sentry header */
#define __dav_objtrktbl_h

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

/*### Object Tracking Table Tracking the reallocated Data Structures
###################################################################*/

/* To make the fields WORD alligned, we store four bit status 
   followed by four object sizes. Only two bits in the status 
   field are used  and two bits are being reserved for future use. */
typedef struct
{
   /* Expand the object size from 2 bytes to 4 bytes to prevent the */
   /* DAV flash corrupt following deallocate of object larger than 64KB. */
   UINT32  objsize;   
   UINT16  status;
   UINT16  unused;
} OTTTBL_TableEntryStruct;

typedef OTTTBL_TableEntryStruct __FAR_ * OTTTBL_TableEntryPtr; 

#define  OTTTBL_OffsetToStatus    (offsetof(OTTTBL_TableEntryStruct, status))

#define NUM_OTT_ENTRIES (DAV_NUM_CLASS_FILES)
                        
/*### Object Tracking Table Information Macros/Definition
###################################################################*/

typedef struct
{
   /* Re-architect this structure for alignment */
   UINT32  dest_addr;
   UINT32  src_addr;
   OTTTBL_TableEntryStruct  OTTTBL_TableEntry[NUM_OTT_ENTRIES];
   UINT16  TableId;
   UINT16  unused;
} OTTTBL_TableInfo, __FAR_ * OTTTBL_TableInfoPtr;

#define OTTTBL_TableIdOffset     (offsetof(OTTTBL_TableInfo, TableId))
#define OTTTBL_TableIdSize     (offsetof(OTTTBL_TableInfo, OTTTBL_TableEntry[0]))
#define OTTTBL_src_addrOffset  (offsetof(OTTTBL_TableInfo, src_addr))
#define OTTTBL_dest_addrOffset (offsetof(OTTTBL_TableInfo, dest_addr))
#define OTTTBL_TableInfoSize (sizeof(OTTTBL_TableInfo))

/* Object Tracking Table (TableId) States */
#define OTTTBL_TableDataInit      0xFFFF
#define OTTTBL_TableDataValid     0xF0F0
#define OTTTBL_TableDataInvalid   0x0000
                                  
#define OTTTBL_HeaderName       "#$%OBJECTTRACKINGTBL%$#"
#define OTTTBL_HeaderNameLength (sizeof(OTTTBL_HeaderName) - 1)
#define OTTTBL_HeaderEntrySize  (HDR_CalcHdrSize(OTTTBL_HeaderNameLength - 1))
#define OTTTBL_TableEntrySize   (sizeof(OTTTBL_TableEntryStruct))

/* Size of the Object Tracking table rounded up to the nearest page */
/*  boundary.                                                    */
#define OTTTBL_ParaOTTTblSize  \
   (RoundUp((OTTTBL_TableInfoSize), FDI_ParagraphLength))

/*### Object Tracking Table Entry macros
###################################################################*/

/*### OTTTBL_TableEntry: Status */
#define OTTTBL_MASK_OTTEntryValid     0x0003
#define OTTTBL_MASK_ObjectModified    0x000C
#define OTTTBL_MASK_OTTEntryInvalid   0x0030
/*### OTTTBL_TableEntry: OTTEntryValid */
#define OTTTBL_IsOTTEntryValid(status) \
   (!(status & OTTTBL_MASK_OTTEntryValid))

#define OTTTBL_MarkOTTEntryValid(status) \
   (status &= ~OTTTBL_MASK_OTTEntryValid)

/* ObjectModified */
#define OTTTBL_IsObjectModified(status) \
   (!(status & OTTTBL_MASK_ObjectModified))
   
#define OTTTBL_MarkObjectModified(status) \
   (status &= ~OTTTBL_MASK_ObjectModified)  

/* OTT Entry Invalid */
#define OTTTBL_IsOTTEntryInvalid(status) \
   (!(status & OTTTBL_MASK_OTTEntryInvalid))      

#define OTTTBL_MarkOTTEntryInvalid(status)\
   (status &= ~OTTTBL_MASK_OTTEntryInvalid)
   
/*### Memory reserves for the object tracking table                           */
/*################################################################### */
/*### This is the amount of space that must be taken from free  */
/*###  space in order to ensure a para reclaim.                 */
/*###    (1 Object Tracking table in para space)                        */
#define OTTTBL_ParaReclaimSpace \
   (RoundUp(OTTTBL_ParaOTTTblSize, FDI_ParagraphLength) + \
    (2 * RoundUp(OTTTBL_HeaderEntrySize, FDI_ParagraphLength)))

/* The address of the object tracking table for a page reclaim is */
/*  at the Top of the reclaim block minus 2 page.         */
/*  QUESTIONABLE.         */
#define OTTTBL_RBAddrInPageReclaim \
    (FDI_ReclaimBlockAddress + FDI_BlockSize - \
    (2 * FDI_PageSize))

/*ISF defines and Macros*/
#define OTTTBL_EntryISF_MASK    0xAAAA /*0x002A*/
#define GetOTTTBLQuasiState(status)   ((status ^ (status << 1)) & OTTTBL_EntryISF_MASK)
#define FixOTTTBLQuasiStateTo00(unknown, status) \
                                ((~(unknown | (unknown >> 1))) & status)    

#define FixOTTTBLQuasiStateTo11(temp_state, status) ((temp_state | (temp_state >> 1)) | status)

ERR_CODE OTTTBL_InfoStructFixISF_PLR(MemBufferPtr ott_table_info_ptr, 
                                     UINT32 flash_address, 
                                     BOOLEAN restart);
                                                                                             
/*End ISF defines and Macros*/  
/*### Global Functions
#########################*/
                            
ERR_CODE OTTTBL_CreateTable(HDR_SearchInfoPtr table_info_ptr, BOOLEAN restart);

ERR_CODE OTTTBL_WriteTableInfo(FDI_Handle          table_address,
                                 OTTTBL_TableInfoPtr table_info_ptr);
                            
ERR_CODE OTTTBL_MarkTableComplete(FDI_Handle    tbl_hdr_addr,
                                    FDI_Handle    tbl_base_addr,
                                    BOOLEAN       mark_hdr2valid,
                                    BOOLEAN restart);

ERR_CODE OTTTBL_GetTableInfo(FDI_Handle          table_address,
                               OTTTBL_TableInfoPtr table_info_ptr, BOOLEAN restart);

ERR_CODE OTTTBL_WriteTable(FDI_Handle           table_handle, 
                             UINT32                block, 
                             OTTTBL_TableEntryPtr status_ptr,
                             BOOLEAN restart);
                              
ERR_CODE OTTTBL_ReadTable(FDI_Handle           table_handle, 
                            UINT32                block, 
                            OTTTBL_TableEntryPtr status_ptr,
                            BOOLEAN restart);
                              
#endif /* sentry */

#endif /* DIRECT_ACCESS_VOLUME */

⌨️ 快捷键说明

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