typedef union yaffs_Tnode_union yaffs_Tnode;
-struct yaffs_TnodeList_struct {
- struct yaffs_TnodeList_struct *next;
- yaffs_Tnode *tnodes;
-};
-
-typedef struct yaffs_TnodeList_struct yaffs_TnodeList;
/*------------------------ Object -----------------------------*/
/* An object can be one of:
typedef struct yaffs_ObjectStruct yaffs_Object;
-struct yaffs_ObjectList_struct {
- yaffs_Object *objects;
- struct yaffs_ObjectList_struct *next;
-};
-
-typedef struct yaffs_ObjectList_struct yaffs_ObjectList;
-
typedef struct {
struct ylist_head list;
int count;
__u8 skipCheckpointRead;
__u8 skipCheckpointWrite;
+ int enableXattr; /* Enable xattribs */
+
/* NAND access functions (Must be set before calling YAFFS)*/
int (*writeChunkToNAND) (struct yaffs_DeviceStruct *dev,
/* Stuff to support wide tnodes */
__u32 tnodeWidth;
__u32 tnodeMask;
+ __u32 tnodeSize;
/* Stuff for figuring out file offset to chunk conversions */
__u32 chunkShift; /* Shift value */
__u32 allocationPage;
int allocationBlockFinder; /* Used to search for next allocation block */
- int nTnodesCreated;
- yaffs_Tnode *freeTnodes;
- int nFreeTnodes;
- yaffs_TnodeList *allocatedTnodeList;
-
- int nObjectsCreated;
- yaffs_Object *freeObjects;
- int nFreeObjects;
+ /* Object and Tnode memory management */
+ void *allocator;
+ int nObjects;
+ int nTnodes;
int nHardLinks;
- yaffs_ObjectList *allocatedObjectList;
-
yaffs_ObjectBucket objectBucket[YAFFS_NOBJECT_BUCKETS];
__u32 bucketFinder;
yaffs_Object *yaffs_MknodSpecial(yaffs_Object *parent, const YCHAR *name,
__u32 mode, __u32 uid, __u32 gid, __u32 rdev);
+
+int yaffs_SetXAttribute(yaffs_Object *obj, const char *name, const void * value, int size, int flags);
+int yaffs_GetXAttribute(yaffs_Object *obj, const char *name, void *value, int size);
+int yaffs_ListXAttributes(yaffs_Object *obj, char *buffer, int size);
+int yaffs_RemoveXAttribute(yaffs_Object *obj, const char *name);
+
/* Special directories */
yaffs_Object *yaffs_Root(yaffs_Device *dev);
yaffs_Object *yaffs_LostNFound(yaffs_Device *dev);