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

📄 _fltl.h

📁 电子盘DEMO板程序
💻 H
字号:
/******************************************************************************/
/*                                                                            */
/*  Copyright (C), 1995-2006, msystems Ltd. All rights reserved.              */
/*                                                                            */
/*  Redistribution and use in source and binary forms, with or without        */
/*  modification, are permitted provided that the following conditions are    */
/*  met:                                                                      */
/*  1. Redistributions of source code must retain the above copyright notice, */
/*     this list of conditions and the following disclaimer.                  */
/*  2. Redistributions in binary form must reproduce the above copyright      */
/*     notice, this list of conditions and the following disclaimer in the    */
/*     documentation and/or other materials provided with the distribution.   */
/*  3. Neither the name of msystems nor the names of its contributors may be  */
/*     used to endorse or promote products derived from this software without */
/*     specific prior written permission.                                     */
/*                                                                            */
/*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS       */
/*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED */
/*  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR             */
/*  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT      */
/*  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,     */
/*  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED  */
/*  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR    */
/*  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF    */
/*  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING      */
/*  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS        */
/*  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.              */
/*                                                                            */
/******************************************************************************/
/*
 * $Log:   V:/PVCSDB/DiskOnChip/archives/Testing/TrueFFS 6.3/Drop 2.5/3/common/_fltl.h-arc  $
 * 
 *    Rev 1.6   Sep 11 2006 13:45:10   yaniv.iarovici
 * Legal header added
 * 
 *    Rev 1.5   Aug 09 2006 16:52:46   Polina.Marimont
 * initial for DOC Driver 1.0
 */

#ifndef _FLTL_H
#define _FLTL_H

typedef struct {
  SectorNo sectorsInVolume;
  FLDword bootAreaSize;
  FLDword eraseCycles;
  FLDword tlUnitBits;
} TLInfo;


/* Defragment modes types */
#define FL_FAST_SPACE			0
#define FL_NORMAL_SPACE			1



typedef struct tTLrec TLrec;     /* Defined by translation layer */


struct tTL {
  TLrec       *rec;
  FLByte      partitionNo;
  FLByte      socketNo;

  /* information is necessary for hard-disk TL implementation */
  FLWord cylinders;
  FLWord heads;
  FLWord sectorsPerTrack;
  /* they should not be concealed in TL->rec field: when the media is formatted
  it would be best if geometry written in BPB would match actual disk geometry */

  /* information necessary to support fast+normal geometry */
  FLDword fastAreaSectors;
  FLWord  fastArea_SectorsInUnit_Bits;
  FLWord  normalArea_SectorsInUnit_Bits;
  FLWord  riskZoneSectors;			/* largest of fast and normal risk zones */
  FLWord  recommendedSectorsInCluster;		/* or just call it sectorsInPage (also largest) */
  /* there is no need to hide these vars via "recommendedClusterInfo" :
  they are not used by TL itself. BTW, getTLinfo is not necessary for same reason */

  void FAR1* progressCallback;

#ifndef FL_NEW_MAPSECTOR
  const void FAR0 *(*mapSector)(TLrec *, SectorNo sectorNo, CardAddress *physAddr);
#else
  FLStatus	     (*mapSector)(TLrec *, SectorNo sectorNo, void * *retBuffer);
#endif

  FLStatus       (*writeSector)(TLrec *, SectorNo sectorNo, void FAR1 *fromAddress);

  FLStatus       (*writeMultiSector)(TLrec *, SectorNo sectorNo, void FAR1 *fromAddress,SectorNo sectorCount);
  FLStatus       (*readSectors)(TLrec *, SectorNo sectorNo, void FAR1 *dest,SectorNo sectorCount);

  FLStatus       (*deleteSector)(TLrec *, SectorNo sectorNo, SectorNo noOfSectors);
  FLStatus       (*tlSetBusy)(TLrec *, FLBoolean);
  void           (*dismount)(TLrec *);
  FLStatus       (*defragment)(TLrec *, FLSDword FAR2 *sectorsNeeded, FLDword normalSpace);
  FLStatus       (*checkVolume)(TLrec *);
  SectorNo       (*sectorsInVolume)(TLrec *);
  FLStatus       (*getTLInfo)(TLrec *, TLInfo *tlInfo);
  void           (*recommendedClusterInfo)(TLrec *, FLDword *sectorsPerCluster, FLDword *clusterAlignment);

  FLStatus       (*readBBT)(TLrec *, CardAddress FAR1 * buf, FLSDword FAR2 * mediaSize, unsigned FAR2 * noOfBB);

  FLStatus       (*notifyChange)(TLrec *, void FAR1 * reserved, FLEnvVars variableType , FLDword value);
  FLStatus       (*completeOperation)(TLrec *);

  FLDword	     (* getLastMappedSectorAddress)(TLrec *);	/* use after mapSector */
  FLStatus       (* ensureFreeSectorsInUnit)(TLrec *, FLWord wVirtualUnit, FLWord * wFreeSectorsRequired);
  FLStatus       (*secureDeleteSector)(TLrec *, SectorNo sectorNo, SectorNo noOfSectors, FLBoolean secureOperation);
};



/* The address of this, if returned from map, denotes a data error */
#ifndef FL_NEW_MAPSECTOR
/* extern FLStatus dataErrorObject;
#define dataErrorToken ((void FAR0 *) &dataErrorObject) */

#define dataErrorToken ((void FAR0 *) 0xFFFFFFFF)
/* temporary - should not be necessary with new mapSector
old method (address of dataErrorObject) is not translatable across BD-FS split
or translatable with added code/complexity */
#endif /* FL_NEW_MAPSECTOR */

#ifdef FLFLASH_H
/* Translation layer registration information */

extern int noOfTLs;    /* No. of translation layers actually registered */

typedef struct {
  FLStatus (*mountRoutine)   (unsigned volNo, TL *tl, FLFlash *flash, FLFlash **volForCallback);
  FLStatus (*formatRoutine)  (unsigned volNo, TLFormatParams *deviceFormatParams, FLFlash *flash);
  FLStatus (*preMountRoutine)(FLFunctionNo callType, IOreq FAR2* ioreq ,FLFlash* flash,FLStatus* status);
} TLentry;

extern TLentry tlTable[FL_TLS];
extern FLStatus noFormat (unsigned volNo, TLFormatParams *formatParams, FLFlash *flash);
extern FLStatus flMount(unsigned volNo, unsigned socketNo,TL *, FLBoolean useFilters , FLFlash *flash);
extern FLStatus flPreMount(FLFunctionNo callType, IOreq FAR2* ioreq , FLFlash *flash);
extern unsigned noOfDrives;
extern FLByte   flHandleConversionTable[FL_SOCKETS][FL_MAX_TL_PARTITIONS];

#ifdef FL_FORMAT_VOLUME
extern FLStatus flFormat(unsigned volNo, TLFormatParams *formatParams, FLFlash * flash);
#endif /* FL_FORMAT_VOLUME */

#endif /* FLFLASH_H */

#endif /* FLTL_H */


⌨️ 快捷键说明

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