X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=yaffs_guts.h;h=08cc362819f4557e50313238e474e647016156c6;hb=572f34a1cc2b7bddbd8d66f64be95ba158703a2e;hp=b42c7cb9100008adc622da25401dc7138f91b6b7;hpb=f40b8435a109889e57bc37743ac7eb6badf1dd95;p=yaffs%2F.git diff --git a/yaffs_guts.h b/yaffs_guts.h index b42c7cb..08cc362 100644 --- a/yaffs_guts.h +++ b/yaffs_guts.h @@ -13,6 +13,8 @@ * * * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + * + * $Id: yaffs_guts.h,v 1.11 2002-11-08 07:19:42 charles Exp $ */ #ifndef __YAFFS_GUTS_H__ @@ -59,10 +61,11 @@ #define YAFFS_NOBJECT_BUCKETS 256 -#define YAFFS_RESERVED_BLOCKS 5 +#define YAFFS_RESERVED_BLOCKS 8 #define YAFFS_OBJECT_SPACE 0x40000 -#define YAFFS_MAX_NAME_LENGTH 255 +#define YAFFS_MAX_NAME_LENGTH 255 +#define YAFFS_SHORT_NAME_LENGTH 15 #define YAFFS_MAX_ALIAS_LENGTH 159 @@ -72,7 +75,7 @@ #define YAFFS_N_CACHE_CHUNKS 10 -#ifdef WIN32 +#ifdef CONFIG_YAFFS_WINCE // Force the short operation cache on for WinCE @@ -83,7 +86,7 @@ // ChunkCache is used for short read/write operations. typedef struct { - int objectId; + struct yaffs_ObjectStruct *object; int chunkId; int lastUse; int dirty; @@ -184,17 +187,22 @@ typedef struct // Apply to everything int parentObjectId; - __u16 sum; // checksum of name + __u16 sum__NoLongerUsed; // checksum of name. Calc this off the name to prevent inconsistencies char name[YAFFS_MAX_NAME_LENGTH + 1]; // Thes following apply to directories, files, symlinks - not hard links __u32 st_mode; // protection + +#ifdef CONFIG_YAFFS_WINCE + __u32 notForWinCE[5]; +#else __u32 st_uid; // user ID of owner __u32 st_gid; // group ID of owner __u32 st_atime; // time of last access __u32 st_mtime; // time of last modification __u32 st_ctime; // time of last change - +#endif + // File size applies to files only int fileSize; @@ -205,8 +213,15 @@ typedef struct char alias[YAFFS_MAX_ALIAS_LENGTH + 1]; __u32 st_rdev; // device stuff for block and char devices (maj/min) - // Roowm to grow... + +#ifdef CONFIG_YAFFS_WINCE + __u32 win_ctime[2]; + __u32 win_atime[2]; + __u32 win_mtime[2]; + __u32 roomToGrow[6]; +#else __u32 roomToGrow[12]; +#endif } yaffs_ObjectHeader; @@ -245,7 +260,7 @@ typedef struct { __u32 fileSize; __u32 scannedFileSize; - __u32 topLevel; + int topLevel; yaffs_Tnode *top; } yaffs_FileStructure; @@ -310,17 +325,29 @@ struct yaffs_ObjectStruct __u32 objectId; // the object id value - __u32 st_mode; // protection + __u32 st_mode; // protection + +#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM + char shortName[YAFFS_SHORT_NAME_LENGTH+1]; +#endif + +#ifdef CONFIG_YAFFS_WINCE + __u32 inUse; + + __u32 win_ctime[2]; + __u32 win_mtime[2]; + __u32 win_atime[2]; +#else __u32 st_uid; // user ID of owner __u32 st_gid; // group ID of owner __u32 st_atime; // time of last access __u32 st_mtime; // time of last modification __u32 st_ctime; // time of last change __u32 st_rdev; // device stuff for block and char devices +#endif + + -#ifdef WIN32 - __u32 inUse; -#endif #ifdef __KERNEL__ struct inode *myInode; @@ -350,7 +377,7 @@ typedef struct yaffs_ObjectList_struct yaffs_ObjectList; typedef struct { struct list_head list; - __u32 count; + int count; } yaffs_ObjectBucket; @@ -359,9 +386,8 @@ typedef struct struct yaffs_DeviceStruct { // Entry parameters set up way early. Yaffs sets up the rest. - // __u32 nBlocks; // Size of whole device in blocks - __u32 startBlock; // Start block we're allowed to use - __u32 endBlock; // End block we're allowed to use + int startBlock; // Start block we're allowed to use + int endBlock; // End block we're allowed to use __u16 chunkGroupBits; // 0 for devices <= 32MB. else log2(nchunks) - 16 __u16 chunkGroupSize; // == 2^^chunkGroupBits @@ -423,6 +449,10 @@ struct yaffs_DeviceStruct int garbageCollections; int nRetriedWrites; int nRetiredBlocks; + int eccFixed; + int eccUnfixed; + int tagsEccFixed; + int tagsEccUnfixed; yaffs_Object *rootDir; yaffs_Object *lostNFoundDir; @@ -494,7 +524,7 @@ yaffs_Object *yaffs_MknodDirectory(yaffs_Object *parent,const char *name, __u32 yaffs_Object *yaffs_FindObjectByName(yaffs_Object *theDir,const char *name); int yaffs_ApplyToDirectoryChildren(yaffs_Object *theDir,int (*fn)(yaffs_Object *)); -yaffs_Object *yaffs_FindObjectByNumber(yaffs_Device *dev,int number); +yaffs_Object *yaffs_FindObjectByNumber(yaffs_Device *dev,__u32 number); // Link operations yaffs_Object *yaffs_Link(yaffs_Object *parent, const char *name, yaffs_Object *equivalentObject); @@ -511,7 +541,12 @@ yaffs_Object *yaffs_MknodSpecial(yaffs_Object *parent,const char *name, __u32 mo // Special directories yaffs_Object *yaffs_Root(yaffs_Device *dev); -yaffs_Object *yaffs_LostNFound(yaffs_Device *dev); +yaffs_Object *yaffs_LostNFound(yaffs_Device *dev); + +#ifdef CONFIG_YAFFS_WINCE +// CONFIG_YAFFS_WINCE special stuff +void yfsd_WinFileTimeNow(__u32 target[2]); +#endif // Debug dump