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

📄 davrattbl.h

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

/* ###########################################################################
###  DAV - Direct Access Volume Enhancement to FDI
###
###  Module: DavRatTbl.h - Header Types & Macros Include File
###
###  $Workfile: DavRatTbl.h $
###  $Revision: 9 $
###  $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_RAT_TABLE_H__  /* sentry header */
#define __DAV_RAT_TABLE_H__

#if (DIRECT_ACCESS_VOLUME == TRUE)

/*### Global Declarations
#########################*/
#define RATTBL_MaxEntries (DAV_NUM_CLASS_FILES*2) /* 2 Bytes */
#define RATTBL_MinEntries 1

/*########################################################################*/
/*### ReAllocate Table (RAT)                                                  */

/*
// RATTBL_Leader (16 bytes)
//
//     3                     2                   1
//     1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0  <- Bits ( 4 Bytes)
//    +-------------------------------+-------------------------------+
//  0 |            UniqueId 1         |            NumRows            |
//    +-------------------------------+-------------------------------+
//  1 |                         Backup offset                         |
//    +---------------------------------------------------------------+
//  2 |                     Backup size (in pages)                    |
//    +-------------------------------+-------------------------------+
//  3 |              RFU              |          UniqueId 2           |
//    +---------------+---------------+---------------+---------------+
//    |       0       |      1        |       2       |       3       | <- Byte
//
*/
typedef struct
{
   UINT16 UniqueId1;
   UINT16 NumRows;
   UINT32 BackupOffset;   
   UINT32 BackupSize;
   UINT16 RFU_4;
   UINT16 UniqueId2;
} RATTBL_Leader, __FAR_ * RATTBL_LeaderPtr;

/*Fix Start:SCR964 */
ERR_CODE RATTBL_AllocateFlash(FDI_Handle aObjHandle, UINT16 aNumRows, UINT32 aBackupOffset, UINT32 aBackupSize);
/*Fix End:SCR964 */

/* UniqueId1 */
#define RATTBL_UniqueId1                           0xF0F0
void    RATTBL_SetUniqueId1(RATTBL_LeaderPtr aPtr, UINT16 aWord);
UINT16  RATTBL_GetUniqueId1(RATTBL_LeaderPtr aPtr);

/* UniqueId2 */
#define RATTBL_UniqueId2                           0xF0F0
void    RATTBL_SetUniqueId2(RATTBL_LeaderPtr aPtr, UINT16 aWord);
UINT16  RATTBL_GetUniqueId2(RATTBL_LeaderPtr aPtr);

/* Backup Offset */
void   RATTBL_SetBackupOffset(RATTBL_LeaderPtr aPtr, UINT32 aDWord);
UINT32 RATTBL_GetBackupOffset(RATTBL_LeaderPtr aPtr);

/* Backup Size */
void   RATTBL_SetBackupSize(RATTBL_LeaderPtr aPtr, UINT32 aDWord);
UINT32 RATTBL_GetBackupSize(RATTBL_LeaderPtr aPtr);

/* Entry Number */
void    RATTBL_SetNumRows(RATTBL_LeaderPtr aPtr, UINT16 aWord);
UINT16  RATTBL_GetNumRows(RATTBL_LeaderPtr aPtr);

/*
// RATTBL_Entry (12 bytes)
//     3                     2                   1
//     1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0  <- Bits ( 4 Bytes)
//    +-------------------------------+-------------------------------+
//  0 |   Top Index   | Bottom Index  |   Operation   |      RFU      |
//    +-------------------------------+-------------------------------+
//  1 |                       Top Progress State                      |
//    +-------------------------------+-------------------------------+
//  3 |                       Btm Progress State                      |
//    +-------------------------------+-------------------------------+
//    |       0       |      1        |       2       |       3       | <- Byte
*/
typedef struct
{
   UINT8  TopIndex; /* OTT index, 1 byte max */
   UINT8  BtmIndex; /* OTT index, 1 byte max */
   UINT8  Operation;
   UINT8  RFU;
   UINT32 TopState;
   UINT32 BtmState;
} RATTBL_Entry, __FAR_ * RATTBL_EntryPtr;

/* Top Index */
void    RATTBL_SetRatEntryTopIndex(RATTBL_EntryPtr aPtr, UINT8 aWord);
UINT8   RATTBL_GetRatEntryTopIndex(RATTBL_EntryPtr aPtr);

/* Bottom Index */
void    RATTBL_SetRatEntryBtmIndex(RATTBL_EntryPtr aPtr, UINT8 aWord);
UINT8   RATTBL_GetRatEntryBtmIndex(RATTBL_EntryPtr aPtr);

/* Entry Operation */
#define RATTBL_MASK_RatEntryOperation                   0xFF /* 8 bit Mask */
#define RATTBL_RatEntryOperation_EntryUnused            0xFF /* 1111 1111 */
#define RATTBL_RatEntryOperation_ModifyWithBackup       0xFE /* 1111 1110 */
#define RATTBL_RatEntryOperation_ModifyWithNoBackup     0xFC /* 1111 1100 */
#define RATTBL_RatEntryOperation_BackupOnly             0xF8 /* 1111 1000 */
#define RATTBL_RatEntryOperation_RestoreAndDeleteBackup 0xF0 /* 1111 0000 */
void    RATTBL_SetRatEntryOperation(RATTBL_EntryPtr aPtr, UINT8 aByte);
UINT8   RATTBL_GetRatEntryOperation(RATTBL_EntryPtr aPtr);

/* Bottom Status */
#define RATTBL_MASK_RatEntryBtmProgressState                                  0xFFFFFFFF
#define RATTBL_RatEntryBtmProgressState_NoOperationInProgress                 0xFFFFFFFF
#define RATTBL_RatEntryBtmProgressState_BkupOfOrigGroupInProgress             0xFFFFFFFC
#define RATTBL_RatEntryBtmProgressState_RestartBtmBlkBkupGroupInReclaim       0xFFFFFFF0
#define RATTBL_RatEntryBtmProgressState_RestartBtmBlkBkupGroupReclaimComplete 0xFFFFFFC0
#define RATTBL_RatEntryBtmProgressState_RestartTopBlkBkupGroupInReclaim       0xFFFFFF00
#define RATTBL_RatEntryBtmProgressState_RestartTopBlkBkupGroupReclaimComplete 0xFFFFFC00
#define RATTBL_RatEntryBtmProgressState_BkupOfOrigGroupComplete               0xFFFFF000
#define RATTBL_RatEntryBtmProgressState_BtmBlkOrigGroupInReclaim              0xFFFFC000
#define RATTBL_RatEntryBtmProgressState_BtmBlkOrigGroupReclaimComplete        0xFFFF0000
#define RATTBL_RatEntryBtmProgressState_TopBlkOrigGroupInReclaim              0xFFFC0000
#define RATTBL_RatEntryBtmProgressState_TopBlkOrigGroupReclaimComplete        0xFFF00000
#define RATTBL_RatEntryBtmProgressState_ModifyInProgress                      0xFFC00000
void    RATTBL_SetRatEntryBtmProgressState(RATTBL_EntryPtr aPtr, UINT32 aDWord);
UINT32  RATTBL_GetRatEntryBtmProgressState(RATTBL_EntryPtr aPtr);
UINT32  RATTBL_GetRecoveredRatEntryBtmProgressState(RATTBL_EntryPtr aPtr, FDI_Handle aHandle);

/* Top Status */
#define RATTBL_MASK_RatEntryTopProgressState                                  0xFFFFFFFF
#define RATTBL_RatEntryTopProgressState_NoOperationInProgress                 0xFFFFFFFF
#define RATTBL_RatEntryTopProgressState_ModifyComplete                        0xFFFFFFFC
#define RATTBL_RatEntryTopProgressState_BtmBlkBkupGroupInReclaim              0xFFFFFFF0
#define RATTBL_RatEntryTopProgressState_BtmBlkBkupGroupReclaimComplete        0xFFFFFFC0
#define RATTBL_RatEntryTopProgressState_TopBlkBkupGroupInReclaim              0xFFFFFF00
#define RATTBL_RatEntryTopProgressState_TopBlkBkupGroupReclaimComplete        0xFFFFFC00
#define RATTBL_RatEntryTopProgressState_ModifyUserObjectsComplete             0xFFFFF000
void    RATTBL_SetRatEntryTopProgressState(RATTBL_EntryPtr aPtr, UINT32 aDWord);
UINT32  RATTBL_GetRatEntryTopProgressState(RATTBL_EntryPtr aPtr);
UINT32  RATTBL_GetRecoveredRatEntryTopProgressState(RATTBL_EntryPtr aPtr, FDI_Handle aHandle);


/*
// RATTBL_ObjectTable (28 bytes)
//
//     3                     2                   1
//     1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0  <- Bits ( 4 Bytes)
//    +---------------------------------------------------------------+
//  0 |                                                               |
//    +                                                               +
//  1 |                                                               |
//    +                          RatHeader                            +
//  2 |                                                               |
//    +                                                               +
//  3 |                                                               |
//    +---------------------------------------------------------------+
//  4 |                RatEntry[RATTBL_MinEntries]                    |
//    +                                                               +
// .. |   NOTE: The design does NOT read the entire table into SRAM   |
//    +---------------+---------------+---------------+---------------+
//    |       0       |      1        |       2       |       3       | <- Byte
//
*/
typedef struct
{
   RATTBL_Leader RatHeader;
   RATTBL_Entry  RatEntry[RATTBL_MinEntries];
} RATTBL_ObjectTable, __FAR_ * RATTBL_ObjectTablePtr;

/*########################################################################*/
/*### Public Functions                                                    */

#define RATTBL_CalcTableSize(aNumRows) \
   (sizeof(RATTBL_Leader)+(sizeof(RATTBL_Entry)*aNumRows))      

/* Table functions */
ERR_CODE RATTBL_WriteRatEntry(FDI_Handle aHandle, RATTBL_EntryPtr aPtr);
ERR_CODE RATTBL_WriteRatEntryBtmProgressState(FDI_HandlePtr aHandle, RATTBL_EntryPtr aPtr);
ERR_CODE RATTBL_WriteRatEntryTopProgressState(FDI_HandlePtr aHandle, RATTBL_EntryPtr aPtr);

/* Search functions */
ERR_CODE RATTBL_GetFirstRatEntry (FDI_Handle* aHandlePtr,  RATTBL_EntryPtr aEntryPtr, RATTBL_LeaderPtr aLeaderPtr);
ERR_CODE RATTBL_GetFirstRatEntry2(FDI_Handle* aHandlePtr,  RATTBL_EntryPtr aEntryPtr, RATTBL_LeaderPtr aLeaderPtr);
ERR_CODE RATTBL_GetNextRatEntry  (FDI_Handle* aNextHandle, RATTBL_EntryPtr aEntryPtr, FDI_Handle* aCurrentHandle);

#endif /* DIRECT_ACCESS_VOLUME */

#endif /* sentrydif */

⌨️ 快捷键说明

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