*** empty log message ***
[yaffs/.git] / yaffs_guts.h
index 855354296f944cd44a2e153dd06ccb2440e233fa..08cc362819f4557e50313238e474e647016156c6 100644 (file)
  * it under the terms of the GNU Lesser General Public License version 2.1 as
  * published by the Free Software Foundation.
  *
+ *
+ * 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__
 #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\r
+#define YAFFS_SHORT_NAME_LENGTH                15
 
 #define YAFFS_MAX_ALIAS_LENGTH         159
 
@@ -70,7 +75,7 @@
 
 #define YAFFS_N_CACHE_CHUNKS           10
 
-#ifdef WIN32
+#ifdef CONFIG_YAFFS_WINCE
 
 // Force the short operation cache on for WinCE
 
@@ -81,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;      
@@ -182,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
+\r
+#ifdef CONFIG_YAFFS_WINCE\r
+       __u32 notForWinCE[5];\r
+#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\r
+\r
        // File size  applies to files only
        int fileSize; 
                
@@ -203,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;
 
@@ -243,7 +260,7 @@ typedef struct
 {
        __u32 fileSize;
        __u32 scannedFileSize;
-       __u32 topLevel;
+       int   topLevel;
        yaffs_Tnode *top;
 } yaffs_FileStructure;
 
@@ -308,17 +325,29 @@ struct  yaffs_ObjectStruct
        __u32 objectId;         // the object id value
        
        
-       __u32 st_mode;          // protection
+       __u32 st_mode;          // protection\r
+\r
+#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM\r
+       char shortName[YAFFS_SHORT_NAME_LENGTH+1];\r
+#endif\r
+\r
+#ifdef CONFIG_YAFFS_WINCE\r
+       __u32 inUse;\r
+\r
+       __u32 win_ctime[2];\r
+       __u32 win_mtime[2];\r
+       __u32 win_atime[2];\r
+#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\r
+\r
+\r
 
-#ifdef WIN32
-       __u32 inUse;
-#endif
 
 #ifdef __KERNEL__
        struct inode *myInode;
@@ -348,7 +377,7 @@ typedef struct yaffs_ObjectList_struct yaffs_ObjectList;
 typedef struct
 {
        struct list_head list;
-       __u32 count;
+       int count;
 } yaffs_ObjectBucket;
 
 
@@ -357,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
        
@@ -421,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;
@@ -442,8 +474,9 @@ struct yaffs_DeviceStruct
        // Stuff for background deletion and unlinked files.
        yaffs_Object *unlinkedDir;              // Directory where unlinked and deleted files live.
        yaffs_Object *unlinkedDeletion; // Current file being background deleted.
-       int  nDeletedFiles;                             // Count of files awaiting deletion;
-       
+       int nDeletedFiles;                              // Count of files awaiting deletion;
+       int nUnlinkedFiles;                             // Count of unlinked files. 
+       int nBackgroundDeletions;                       // Count of background deletions.       
        
 };
 
@@ -491,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);
@@ -508,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);\r
+\r
+#ifdef CONFIG_YAFFS_WINCE\r
+// CONFIG_YAFFS_WINCE special stuff\r
+void  yfsd_WinFileTimeNow(__u32 target[2]);\r
+#endif
 
 
 // Debug dump