davhdr.h

来自「Flash file system」· C头文件 代码 · 共 671 行 · 第 1/2 页

H
671
字号
#define HDR_SetReliableAttr(attr8, value) \
           (((UINT8)(attr8) & ~HDR_HA_MASK_Confidence) | (value))

#define HDR_HA_MASK_Reserves    0x01
#define HDR_HA_NoReserves       0x00
#define HDR_HA_UseReserves      0x01
#define HDR_GetReservesAttr(attr8)        \
           ((attr8) & HDR_HA_MASK_Reserves)
           
#define HDR_SetReservesAttr(attr8, value) \
           (((UINT8)(attr8) & ~HDR_HA_MASK_Reserves) | (value))

#define HDR_HA_MASK_Alignment   0xC000
#define HDR_HA_AlignPage        0x0000
#define HDR_HA_AlignPara        0x4000 
#define HDR_HA_AlignRFU1        0x8000
#define HDR_HA_AlignRFU2        0xC000

#define HDR_GetAlignmentAttr(attr16)        \
           ((attr16) & HDR_HA_MASK_Alignment)
           
#define HDR_SetAlignmentAttr(attr16, value) \
           (((attr16) & ~HDR_HA_MASK_Alignment) | (value))

#define HDR_HA_SHIFT_Privilege  12
#define HDR_HA_MASK_Privilege   0x3000

#define HDR_GetPrivilegeAttr(attr16)        \
           (((attr16) & HDR_HA_MASK_Privilege) >> HDR_HA_SHIFT_Privilege)
           
#define HDR_SetPrivilegeAttr(attr16, value) \
           (((attr16) & ~HDR_HA_MASK_Privilege) |   \
           (((value) << HDR_HA_SHIFT_Privilege) & \
                                HDR_HA_MASK_Privilege))
        
#define HDR_HA_MASK_HdrState    0x000F
#define HDR_HA_STATE_Valid      0x000F /* Both valid and write in progress! */
#define HDR_HA_STATE_Invalid    0x0003

#define HDR_GetHdrState(attr16)        \
           ((attr16) & HDR_HA_MASK_HdrState)

#define HDR_HA_MASK_Status      0x00FC
#define HDR_HA_Available        HDR_HA_MASK_Status
#define HDR_HA_WriteInProgress  0x003C 
#define HDR_HA_Bad              0x0030 
#define HDR_HA_Valid            0x000C
#define HDR_HA_Invalid          0x0000
#define HDR_GetStatusAttr(attr16)        \
           ((attr16) & HDR_HA_MASK_Status)
           
#define HDR_SetStatusAttr(attr16, value) \
           (((attr16) & ~HDR_HA_MASK_Status) | (value))
        
#define HDR_HA_MASK_Absorbed    0x0003
#define HDR_HA_Absorbed         0x0000
#define HDR_HA_Exists           0x0003
#define HDR_GetAbsorbedAttr(attr16)        \
           ((attr16) & HDR_HA_MASK_Absorbed)
           
#define HDR_SetAbsorbedAttr(attr16, value) \
           (((attr16) & ~HDR_HA_MASK_Absorbed) | (value))

#define HDR_HA_MASK_FixedHeader      0x0300
#define HDR_HA_FixedHeaderIncomplete 0x0300
#define HDR_HA_FixedHeaderComplete   0x0000

#define HDR_IsFixedHeaderComplete(attr16) \
          (((attr16) & HDR_HA_MASK_FixedHeader) == HDR_HA_FixedHeaderComplete)
           
#define HDR_GetFixedHeaderAttr(attr16)        \
           ((attr16) & HDR_HA_MASK_FixedHeader)
           
#define HDR_SetFixedHeaderAttr(attr16, value) \
           (((attr16) & ~HDR_HA_MASK_FixedHeader) | (value))

#define HDR_HA_MASK_BackupComplete   0x0C00
#define HDR_HA_BackupIncomplete      0x0C00
#define HDR_HA_BackupComplete        0x0000

#define HDR_IsBackupComplete(attr16) \
           ((attr16 & HDR_HA_MASK_BackupComplete) == HDR_HA_BackupComplete)
           
#define HDR_GetBackupCompleteAttr(attr16)        \
           ((attr16) & HDR_HA_MASK_BackupComplete)
           
#define HDR_SetBackupCompleteAttr(attr16, value) \
           (((attr16) & ~HDR_HA_MASK_BackupComplete) | (value))



/*########################################################################*/
/*### Header Table Entry Attribute Fields                                 */

/* Offset of the attributes from the beginning of the struct */
#define HDR_Attrib16Offset   (sizeof(UINT16))  
#define HDR_Attrib16Size     (sizeof(UINT16))
#define HDR_Attrib_ST_Size (sizeof(UINT8))
#define HDR_MaxSize        (sizeof(HDR_Header))

#define HDR_FixedSize      (sizeof(HDR_FixedHeader))

#define HDR_FixedSizeP     (RoundUp(HDR_FixedSize, FDI_ParagraphLength))

#define HDR_SearchFieldLength 12

/* Header Attribute Initializer */
#define HDR_InitHeaderAttr16(hdr_attr16)  \
                            (hdr_attr16 = 0xffff)

#define HDR_InitHeaderAttr8(hdr_attr8)  \
                           (hdr_attr8 = 0xff)

                        
/* This points to the first available paragraph in the header table. */
#define HDR_FirstHeaderAddr \
           (ParagraphAlign((FDI_LastObjectAddress)))

typedef UINT8   HDR_Name[FDI_MaxNameLength];
typedef HDR_Name __FAR_ * HDR_NamePtr;

/*### THIS FIXED HEADER SHOULD BE THE SAME  ###*/
/*### AS THE PORTION IN THE STANDARD HEADER ###*/
/*### See HDR_Header for standard header.   ###*/

typedef struct
{
   UINT16  HeaderId;
   UINT16  Attr16;
   UINT16  LoSize;
   UINT8   NameSize;
   UINT8   Attr8;
   UINT32  ObjectType;
   UINT32  SecurityKey;
} HDR_FixedHeader, __FAR_ * HDR_FixedHeaderPtr;

typedef struct
{
   UINT16    HeaderId;
   UINT16    Attr16;
   UINT16    LoSize;
   UINT8     NameSize;
   UINT8     Attr8;
   UINT32    ObjectType;
   UINT32    SecurityKey;
   HDR_Name  Name; 
} HDR_Header, __FAR_ * HDR_HeaderPtr;


#define HDR_OffsetToAttr16 (offsetof(HDR_Header, Attr16))
#define HDR_OffsetToHeaderId (offsetof(HDR_Header, HeaderId))


/* Header Table Search Types. */
typedef enum 
{
   HDR_ByNextObject = 0, /* Return next object in the header table.          */
   HDR_ByNextValidObject,/* Return the next valid object in the header table.*/  
   HDR_ByNextParaObject, /* Return next para object in the header table.     */
   HDR_ByNextPageObject, /* Return next page object in the header table.     */
   HDR_ByValidType,      /* Return the next valid object with the            */
                         /*  specified type.                                 */
   HDR_ByHeaderAddress,  /* Return the next object that matches the          */
                         /*  specified header address (fast search).         */
   HDR_ByNotReclaimState,/* Return the next object not matching the          */
                         /*  reclaim state.                                  */
   HDR_ByTypeOnly,       /* Return the next object of the specified type.    */
   HDR_ByNameType,       /* Return the next object with the specified        */
                         /*  name + type.                                    */
   HDR_ByName,           /* Return the next object with the specified name.  */
   HDR_ByNextWriteInProgressObject, /* Return Next WIP Object.               */
   HDR_ByNextInvalidPageObject      /* Return Next Invalid Object.           */
} HDR_SearchMethod;

typedef struct
{
   UINT32      ObjectSize;     /* Object Size in Bytes      */
   FDI_Handle ObjectAddress;  /* Base address of object    */
   FDI_Handle HeaderAddress;  /* Header entry base address */
   CFGHDR_ConfigurationEntry  ConfigEntry;
} HDR_ObjectData;

typedef struct
{
   UINT32          PageAccum;  /* Accumulation of page space objects */
   HDR_ObjectData CurrObj;    /* Current object information         */
   HDR_HeaderPtr  HeaderPtr;  /* Pointer to a FDI_Header structure  */
} HDR_SearchInfo, __FAR_ * HDR_SearchInfoPtr;

/* This structure defines the values used to compare agains */
/*  during an object search.                                */
typedef struct
{
   UINT32       CompareValue;
   HDR_NamePtr NamePtr;
   UINT8        NameSize;
} HDR_CompareInfo, __FAR_ * HDR_CompareInfoPtr;

/* Status for header authentication routines */
typedef enum
{
   HDR_STATUS_NoHeader = 0,
   HDR_STATUS_Authentic,
   HDR_STATUS_FixedHeaderComplete
} HDR_Status;

/* UINT8 stuff*/

#define UINT8_EntryISF_MASK    0xAA
#define GetUINT8QuasiState(status) \
        ((status ^ (status << 1)) & UINT8_EntryISF_MASK)
#define FixUINT8QuasiStateTo00(unknown, status) \
        ((~(unknown | (unknown >> 1))) & status)    
#define FixUINT8QuasiStateTo11(temp_state, status) \
        ((temp_state | (temp_state >> 1)) | status)

/* end UINT8 stuff*/

/* UINT16 stuff*/

#define UINT16_EntryISF_MASK    0xAAAA

#define UINT16_HeaderEntryISF_MASK    0x0AAA

#define GetUINT16QuasiState(status) \
        ((status ^ (status << 1)) & UINT16_EntryISF_MASK)

#define GetUINT16HeaderQuasiState(status) \
        ((status ^ (status << 1)) & UINT16_HeaderEntryISF_MASK)

#define FixUINT16QuasiStateTo00(unknown, status) \
        ((~(unknown | (unknown >> 1))) & status)    
#define FixUINT16QuasiStateTo11(temp_state, status) \
        ((temp_state | (temp_state >> 1)) | status)

/* end UINT16 stuff*/


/* UINT32 stuff*/

#define UINT32_EntryISF_MASK    0xAAAAAAAA
#define GetUINT32QuasiState(status) \
        ((status ^ (status << 1)) & UINT32_EntryISF_MASK)
#define FixUINT32QuasiStateTo00(unknown, status) \
        ((~(unknown | (unknown >> 1))) & status)    
#define FixUINT32QuasiStateTo11(temp_state, status) \
        ((temp_state | (temp_state >> 1)) | status)

/*end  UINT32 stuff*/

/*End ISF defines and Macros*/  
   
/*### Global Functions
#########################*/

#define  HDR_CalcHdrSize(name_len) \
            (RoundUp(name_len, FDI_ParagraphLength) + \
             RoundUp(HDR_FixedSize, FDI_ParagraphLength))

#define  HDR_HdrAddr2ParaObjAddr(curr_header_addr, name_length, obj_size) \
   ((curr_header_addr - obj_size) - RoundUp(name_length, FDI_ParagraphLength))

/*### Initializing Structures
################################*/
#define Init_HDR_ObjectData {0, 0, 0, Init_CFGHDR_ConfigurationEntry}
#define Init_HDR_SearchInfo {0, Init_HDR_ObjectData, 0}
#define Init_HDR_CompareInfo {0, 0, 0}    
                                        
FDI_Handle HDR_CalcNextHdrAddr(FDI_Handle    curr_header_addr,
                               UINT16          alignment, 
                               UINT8          name_length, 
                               UINT32         obj_size);
                               
ERR_CODE HDR_FindLastAuthenticHeader(HDR_SearchInfoPtr obj_info_ptr,
                                     BOOLEAN restart);

ERR_CODE HDR_CalcMemoryStatistics(BOOLEAN restart);

void HDR_SetObjectSize(HDR_HeaderPtr header_ptr, UINT32 size);

void HDR_GetObjectSize(const HDR_Header *header_ptr, UINT32_PTR size_ptr);

void HDR_InitSearchInfo(HDR_SearchInfoPtr srch_info_ptr, 
                        HDR_HeaderPtr     header_ptr);
                        
void HDR_SearchInfo2ObjectInfo(FDI_ObjectInfoPtr    obj_info_ptr,
                               const HDR_SearchInfo *search_info_ptr);
                               
void HDR_ObjectInfo2Header(HDR_HeaderPtr        header_ptr, 
                           const FDI_ObjectInfo *obj_info_ptr);
   
void HDR_CopySearchInfo(HDR_SearchInfoPtr dst_info_ptr,
                        HDR_SearchInfoPtr src_info_ptr);
                         
UINT16 HDR_CalcHeaderSize(const HDR_Header *header_ptr);

ERR_CODE HDR_AbsorbHeader(FDI_Handle    handle, 
                            HDR_HeaderPtr header_ptr);
                            
ERR_CODE HDR_AbsorbInvalidHeaders(HDR_SearchInfoPtr obj_info_ptr,
                                  BOOLEAN restart);
                                 
ERR_CODE HDR_InvalidateHeader(FDI_Handle    handle, 
                                HDR_HeaderPtr header_ptr);
                              
ERR_CODE HDR_CreateFixedHeader(FDI_Handle    handle,
                                 HDR_HeaderPtr header_ptr);
                                 
ERR_CODE HDR_CreateHeaderEntry(FDI_HandlePtr handle_ptr,
                                 HDR_HeaderPtr header_ptr);
                                 
ERR_CODE HDR_ReadFullHeader(FDI_Handle    handle,
                        HDR_HeaderPtr header_ptr, BOOLEAN restart);
ERR_CODE HDR_ReadFixedHeader(FDI_Handle    handle,
                        HDR_HeaderPtr header_ptr, BOOLEAN restart);
HDR_Status HDR_AuthenticateHeader(const HDR_SearchInfo *obj_info_ptr);

ERR_CODE HDR_RepairHeader(const HDR_SearchInfo *obj_info_ptr);

ERR_CODE UINT8_FixISF_PLR(UINT8 *uint8_ptr, 
                          UINT32 flash_address, BOOLEAN restart);                                    
                              
ERR_CODE UINT16_FixISF_PLR(UINT16 *uint16_ptr, 
                           UINT32 flash_address, BOOLEAN restart);

ERR_CODE UINT16_HeaderFixISF_PLR(UINT16 *uint16_ptr, 
                                 UINT32 flash_address, BOOLEAN restart);
                                    
ERR_CODE UINT32_FixISF_PLR(UINT32 *uint32_ptr, 
                           UINT32 flash_address, BOOLEAN restart);

#endif /* sentry */

#endif /* DIRECT_ACCESS_VOLUME */

⌨️ 快捷键说明

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