Change string concats to work with all OSs
[yaffs2.git] / yaffs_guts.h
index a19362534c4427b4e8b0c1cbd9aa1ef9c5e9f4ea..284e206040eb14c485d8fe55cf0a86307679b2f2 100644 (file)
 #define YAFFS_LOWEST_SEQUENCE_NUMBER   0x00001000
 #define YAFFS_HIGHEST_SEQUENCE_NUMBER  0xEFFFFF00
 
+/* Special sequence number for bad block that failed to be marked bad */
+#define YAFFS_SEQUENCE_BAD_BLOCK       0xFFFF0000
+
 /* ChunkCache is used for short read/write operations.*/
 typedef struct {
        struct yaffs_ObjectStruct *object;
@@ -132,12 +135,12 @@ typedef struct {
 
 #ifndef CONFIG_YAFFS_NO_YAFFS1
 typedef struct {
-       unsigned chunkId:20;
-       unsigned serialNumber:2;
-       unsigned byteCount:10;
-       unsigned objectId:18;
-       unsigned ecc:12;
-       unsigned unusedStuff:2;
+        unsigned chunkId:20;
+        unsigned serialNumber:2;
+        unsigned byteCountLSB:10;
+        unsigned objectId:18;
+        unsigned ecc:12;
+        unsigned byteCountMSB:2;
 
 } yaffs_Tags;
 
@@ -420,7 +423,8 @@ struct yaffs_ObjectStruct {
        __u8 deferedFree:1;     /* For Linux kernel. Object is removed from NAND, but is
                                 * still in the inode cache. Free of object is defered.
                                 * until the inode is released.
-                                */
+                                 */
+        __u8 beingCreated:1;   /* This object is still being created so skip some checks. */
 
        __u8 serial;            /* serial number of chunk in NAND. Cached here */
        __u16 sum;              /* sum of the name to speed searching */
@@ -572,9 +576,10 @@ struct yaffs_DeviceStruct {
        int (*readChunkFromNAND) (struct yaffs_DeviceStruct * dev,
                                  int chunkInNAND, __u8 * data,
                                  yaffs_Spare * spare);
-       int (*eraseBlockInNAND) (struct yaffs_DeviceStruct * dev,
-                                int blockInNAND);
-       int (*initialiseNAND) (struct yaffs_DeviceStruct * dev);
+        int (*eraseBlockInNAND) (struct yaffs_DeviceStruct * dev,
+                                 int blockInNAND);
+        int (*initialiseNAND) (struct yaffs_DeviceStruct * dev);
+        int (*deinitialiseNAND) (struct yaffs_DeviceStruct * dev);
 
 #ifdef CONFIG_YAFFS_YAFFS2
        int (*writeChunkWithTagsToNAND) (struct yaffs_DeviceStruct * dev,
@@ -688,6 +693,8 @@ struct yaffs_DeviceStruct {
        yaffs_TnodeList *allocatedTnodeList;
 
        int isDoingGC;
+       int gcBlock;
+       int gcChunk;
 
        int nObjectsCreated;
        yaffs_Object *freeObjects;