📄 _fltl.h
字号:
/****************************************************************************** * * * Project: DOC Driver for Linux 2.4 Block device driver for mDOC H3 family * * of devices under Linux kernel 2.4. * * * * Version: 1.0 * * Email questions to: oemsupport@sandisk.com * * Copyright (C) SanDisk IL Ltd. 1995 - 2007 * * SanDisk IL Ltd., 7 Atir Yeda Street, Kfar Saba 44425, Israel * * * ****************************************************************************** * * * This program is free software; you can redistribute it and/or modify it * * under the terms of the GNU General Public License as published by the Free * * Software Foundation; either version 2 of the License, or any later version.* * This program is distributed in the hope that it will be useful, but WITHOUT* * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * * more details, which is set forth in the readme.txt file. * * You should have received a copy of the GNU General Public License along * * with this program; if not, write to the Free Software Foundation, Inc., 51 * * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * * * This License does not grant you any right to use the trademarks, service * * marks or logos of SanDisk IL Ltd. or SanDisk Corporation. * * Subject to the foregoing, SanDisk IL Ltd., for itself and on behalf of its * * licensors, hereby reserves all intellectual property rights in the program,* * except for the rights expressly granted in this License. * * * ******************************************************************************//*
* $Log: V:/PVCSDB/DiskOnChip/archives/Testing/TrueFFS 6.3/Drop 2.5/3/common/_fltl.h-arc $
*
* Rev 1.7 Oct 09 2006 14:03:52 yaniv.iarovici
* Removed legacy devices related code and definitions
*
* 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;
#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 + -