*
* Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
*
- * $Id: yaffs_guts.h,v 1.13 2005-08-11 02:51:49 charles Exp $
+ * $Id: yaffs_guts.h,v 1.20 2006-03-08 07:59:20 charles Exp $
*/
#ifndef __YAFFS_GUTS_H__
#else
union yaffs_Tnode_union *internal[YAFFS_NTNODES_INTERNAL];
#endif
- __u16 level0[YAFFS_NTNODES_LEVEL0];
+/* __u16 level0[YAFFS_NTNODES_LEVEL0]; */
};
* object might be created before the data
* is available (ie. file data records appear before the header).
*/
- __u8 serial; /* serial number of chunk in NAND. Cached here */
+ __u8 lazyLoaded:1; /* This object has been lazy loaded and is missing some detail */
__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 lazyLoaded; /* Vital info has been loaded from tags. Not all info available. */
-
+ __u8 serial; /* serial number of chunk in NAND. Cached here */
__u16 sum; /* sum of the name to speed searching */
struct yaffs_DeviceStruct *myDev; /* The device I'm on */
#endif
int isYaffs2;
+
+ /* The removeObjectCallback function must be supplied by OS flavours that
+ * need it. The Linux kernel does not use this, but yaffs direct does use
+ * it to implement the faster readdir
+ */
+ void (*removeObjectCallback)(struct yaffs_ObjectStruct *obj);
+
+ int wideTnodesDisabled; /* Set to disable wide tnodes */
+
/* End of stuff that must be set before initialisation. */
__u16 chunkGroupBits; /* 0 for devices <= 32MB. else log2(nchunks) - 16 */
__u16 chunkGroupSize; /* == 2^^chunkGroupBits */
+
+ /* Stuff to support wide tnodes */
+ __u32 tnodeWidth;
+ __u32 tnodeMask;
+
#ifdef __KERNEL__
/* Block Info */
yaffs_BlockInfo *blockInfo;
__u8 *chunkBits; /* bitmap of chunks in use */
+ unsigned blockInfoAlt:1; /* was allocated using alternative strategy */
+ unsigned chunkBitsAlt:1; /* was allocated using alternative strategy */
int chunkBitmapStride; /* Number of bytes of chunkBits per block.
* Must be consistent with nChunksPerBlock.
*/
int yaffs_GutsInitialise(yaffs_Device * dev);
void yaffs_Deinitialise(yaffs_Device * dev);
+void yaffs_FlushEntireDeviceCache(yaffs_Device *dev);
+
int yaffs_GetNumberOfFreeChunks(yaffs_Device * dev);
int yaffs_RenameObject(yaffs_Object * oldDir, const YCHAR * oldName,
void yaffs_GutsTest(yaffs_Device * dev);
-/* AAAA few useful functions */
+/* A few useful functions */
void yaffs_InitialiseTags(yaffs_ExtendedTags * tags);
void yaffs_DeleteChunk(yaffs_Device * dev, int chunkId, int markNAND, int lyn);
int yaffs_CheckFF(__u8 * buffer, int nBytes);