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 + -
显示快捷键?