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

📄 fdi_ext.h

📁 FDI Intel开发的FLASH文件系统,功能很强大
💻 H
字号:
/* ###########################################################################
###  Intel Confidential 
###  Copyright (c) Intel Corporation 1995-2002
###  All Rights Reserved.
###  -------------------------------------------------------------------------
###  Project: Flash Data Integrator
###
###  Module: FDI_EXT.H - This module is the only module the OEM should need to
###                      include to obtain all api interfaces.
###  
###  $Archive: /FDI/SRC/INCLUDE/fdi_ext.h $
###  $Revision: 118 $
###  $Date: 10/14/04 2:05p $
###  $Author: Wtiso $
###  $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 __FDI_EXT_H                   /* sentry header */
#define __FDI_EXT_H

/* ### Include Files
 * ################################# */
 /* E.5.0.690 Begin */ 
/*remove  fdi_type.h*/
/*#include "fdi_type.h"*/
/* E.5.0.690 End */ 
#include "fdi_int.h"

/* ### Compile-time Options: 
 * ######################################################################## */

 
/* for Open command */

#define   OPEN_READ           0        /* Open for read only */
#define   OPEN_MODIFY         1        /* Open for edits */
#define   OPEN_CREATE         2        /* Open for write-create only */

/* for Get command */

#define   GET_FIRST           0        /* Get first data */
#define   GET_NEXT            1        /* Get next data */
#define   GET_MATCHED         2        /* Get matching data */

/* for write commands */

#define  WRITE_RESERVED       0        /* reserve space to modify later */
#define  WRITE_APPEND         1        /* append to or create data */
#define  WRITE_REPLACE        2        /* replace current value with new */
#define  WRITE_MODIFY         3        /* modify current value in place */
#define WRITE_TRUNCATE        6

/* for low level command */

#define   FDI_PROGRAM         1        /* Command is program */
#define   FDI_ERASE           2        /* Command is erase */
#define   FDI_COPY            3        /* read from / write to */

/* for priority limits */

#define FDI_MIN_PRIORITY      1        /* Minimum data priority */
#define FDI_MAX_PRIORITY   0xFE        /* Maximum data priority */

/* E5.0.601 Begin */
#define MIN_DAV_TYPE             FDI_HT_BeginUserTypes
/* E5.0.601 End */

/* Maximum bytes that can be reserved. */
/* E.5.1.759 Begin */
#define MAX_RESERVE_BYTES    (MAX_SEQ_ENTRY * FDI_MAX_FRAG_SIZE )
/* E.5.1.759 End */
/* 
 * query status
 */
#define  FDI_CLEAN               0x0   /* no pending reclamation requests.
                                        * reclamation not in progress.
                                        * queue is empty. */
#define  FDI_RECL_IN_PROG        0x1   /* no pending reclamation requests.
                                        * reclamation is in progress.
                                        * queue is empty. */
#define  FDI_Q_PEND              0x2   /* no pending reclamation requests.
                                        * reclamation not in progress.
                                        * message pending in the queue. */
#define  FDI_RECL_IN_PROG_Q_PEND 0x3   /* no pending reclamation requests.
                                        * reclamation is in progress.
                                        * message pending in the queue. */

#if (DIRECT_ACCESS_VOLUME == TRUE)

/* FDI_ReclLock() tells FMM that it must request a reclaim before proceeding.
   This semaphore protects the shared Flash data from being moved inappropriately */
#define FDI_ReclLock()    \
        (SEM_MTX_WAIT(SEM_DAVReclLock))

/* FDI_ReclUnlock() tells DAV that it does not need to request a reclaim 
   before proceeding */
#define FDI_ReclUnlock()  \
        (SEM_MTX_POST(SEM_DAVReclLock))

/* FDI_ReclPending() Checks to see if DAV is requesting a reclaim.  If 1,
   then reclaim has been requested by DAV. */
#define FDI_ReclPending() \
        (((SEM_TRY_WAIT(SEM_DAVReclRequest))==0)?1:0)
        
/* FDI_ReclWait() Waits for FMM reclaim to complete */
#define FDI_ReclWait()   \
        SEM_WAIT(SEM_DAVReclRequest)

#endif/* (DIRECT_ACCESS_VOLUME == TRUE)*/

/* ### Data Type Definitions:                             
 * ######################################################################## */

/* 
 * identifier to be used for new data stream being created the first time if 
 * choose to let the FDI assign id for the data streams.
 */

#define  NEW_DATA_STREAM_ID       WORDMAX

/* 
 * The following define should be used if choosen not to use 
 * NEW_DATA_STREAM_ID, but choose to assign an id for the data streams 
 */

/*********************** COMMAND CONTROL STRUCTURE *************************/
/* E.5.0.708 START */
/* change PACKED to FDI_PACKED */
typedef struct {
   BYTE_PTR buffer_ptr;                /* buffer address */
   DWORD    count;                     /* number of bytes desired */
   DWORD    offset;                    /* beginning offset into the data */
   DWORD    aux;                       /* supplementary field */
   DWORD    actual;                    /* number of actual bytes acted on */ 
   WORD     identifier;                /* unique identity for each data item */
   BYTE     type;                      /* command type: either data or stream*/
   BYTE     priority;                  /* each item is assigned a priority */
   BYTE     sub_command;               /* sub-command expands functionality */
   BYTE     pad1;                  /* Padded for DWORD allignment. */
   BYTE     pad2;                  /* Padded for DWORD allignment. */
   BYTE     pad3;                  /* Padded for DWORD allignment. */
}
FDI_PACKED(COMMAND_CONTROL);
/* E.5.0.708 END */

typedef COMMAND_CONTROL *     CMD_CNTRL_PTR;

/* Block Lock State Enumerations
 */
typedef enum {
   FDI_UNLOCK   = 0, 
   FDI_LOCK     = 1, 
/* E.5.1.812 START */
   FDI_LOCKDOWN_UNLOCK = 2,
/* E.5.1.812 END */   
   FDI_LOCKDOWN = 3
} LOCK_STATUS;


/* ### Global Functions
 * ################################# */

ERR_CODE FDI_Open( CMD_CNTRL_PTR );
/* E.5.0.652 Begin */
ERR_CODE FDI_Close( COMMAND_CONTROL * );
/* E.5.0.652 End */
ERR_CODE FDI_Get( CMD_CNTRL_PTR );
ERR_CODE FDI_Write( CMD_CNTRL_PTR );
/* E.5.0.652 Begin */
ERR_CODE FDI_Delete( COMMAND_CONTROL * );
/* E.5.0.652 End */
ERR_CODE FDI_Read( CMD_CNTRL_PTR );
ERR_CODE FDI_Statistics( DWORD_PTR, DWORD_PTR );
ERR_CODE FDI_ReclaimEnable( void );
ERR_CODE FDI_Status( BYTE_PTR );
ERR_CODE FDI_Format( void );
ERR_CODE FDI_Init( void );
ERR_CODE FDI_GetError ( ERROR_INFO *, DWORD);

#if (ENABLE_PR != FDI_NONE)
ERR_CODE FDI_ReadProtectionRegister(BYTE_PTR, BYTE_PTR, BYTE);
ERR_CODE FDI_WriteProtectionRegister(BYTE_PTR, BYTE, BYTE);
ERR_CODE FDI_ReadProtectionRegisterLock(BYTE_PTR, BYTE);
ERR_CODE FDI_WriteProtectionRegisterLock(BYTE);
#endif  /* ENABLE_PR */

#if ((BLOCK_LOCK_SUPPORT == TRUE) && (ENABLE_NONFDI_BLOCKLOCKING == TRUE))
ERR_CODE FDI_LockBlock(DWORD, BYTE);
ERR_CODE FDI_UnlockBlock(DWORD);
ERR_CODE FDI_ReadLockStatus(DWORD, BYTE_PTR);
#endif /* ENABLE_NONFDI_BLOCKLOCKING */
#if (FREE_SPACE_FUNCTIONS == TRUE)             /* edie added for space function */
#define FDI_AVLSP_MAX_SIZE_PERAPP                                            \
                  ((MAX_APPGRAN < MAX_NUM_UNITS_PER_FRAG ?               \
                  MAX_APPGRAN : MAX_NUM_UNITS_PER_FRAG)*UNIT_GRANULARITY)
extern ERR_CODE FDI_ItemsAvailable (DWORD data_size, WORD_PTR items);
#if (INCLUDE_FRAGMENTED_DATA )
extern ERR_CODE FDI_SizeAvailable (WORD frag_size,DWORD_PTR total_size);
#endif
/* E.5.0.689 START */
extern ERR_CODE FDI_SpaceUsed(WORD identifier, BYTE type, DWORD_PTR spaceused);
/* E.5.0.689 END */
#endif   /* FREE_SPACE_FUNCTIONS */

/*
 *maximum data types allowed 
 */
#define  MAX_TYPE                    14
#define  NUM_STREAMS                (NUM_TYPE0_PARMS + NUM_TYPE1_PARMS + \
                                     NUM_TYPE2_PARMS +\
                                     NUM_TYPE3_PARMS + NUM_TYPE4_PARMS + \
                                     NUM_TYPE5_PARMS + NUM_TYPE6_PARMS + \
                                     NUM_TYPE7_PARMS + NUM_TYPE8_PARMS + \
                                     NUM_TYPE9_PARMS + NUM_TYPE10_PARMS + \
                                     NUM_TYPE11_PARMS + NUM_TYPE12_PARMS + \
                                     NUM_TYPE13_PARMS + NUM_TYPE14_PARMS) 

/* E.5.0.690 Begin */ 
/*move to fdi_int.h */
/*#define FIRST_HEADER_OFFSET         0*/
/* E.5.0.690 End */ 


#endif                                 /* sentry */

⌨️ 快捷键说明

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