📄 davott.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 + -