X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=yaffs_guts.h;h=c2f7ac46ef6c7e9ca4f2f57a5616b4c92c615a3c;hb=6076b3bffffb8c1b26b41674cd9e6c5b7eeb1293;hp=77bc7e9968c386612d951f818f9e1e627f69c386;hpb=53892fe9e3770882fd8f53f1a8a392d875175b4b;p=yaffs2.git diff --git a/yaffs_guts.h b/yaffs_guts.h index 77bc7e9..c2f7ac4 100644 --- a/yaffs_guts.h +++ b/yaffs_guts.h @@ -167,6 +167,12 @@ enum yaffs_ecc_result { YAFFS_ECC_RESULT_UNFIXED }; +/* + * Object type enum: + * When this is stored in flash we store it as a u32 instead + * to prevent any alignment change issues as compiler variants change. + */ + enum yaffs_obj_type { YAFFS_OBJECT_TYPE_UNKNOWN, YAFFS_OBJECT_TYPE_FILE, @@ -310,7 +316,7 @@ struct yaffs_block_info { /* This is the object structure as stored on NAND */ struct yaffs_obj_hdr { - enum yaffs_obj_type type; + u32 type; /* enum yaffs_obj_type */ /* Apply to everything */ int parent_obj_id; @@ -470,7 +476,7 @@ struct yaffs_obj { void *my_inode; - enum yaffs_obj_type variant_type; + u32 variant_type; /* enum yaffs_object_type */ union yaffs_obj_var variant; @@ -490,7 +496,7 @@ struct yaffs_checkpt_obj { u32 obj_id; u32 parent_id; int hdr_chunk; - enum yaffs_obj_type variant_type:3; + u32 variant_type:3; /* enum yaffs_obj_type */ u8 deleted:1; u8 soft_del:1; u8 unlinked:1; @@ -876,10 +882,13 @@ struct yaffs_obj *yaffs_create_file(struct yaffs_obj *parent, const YCHAR *name, u32 mode, u32 uid, u32 gid); -int yaffs_flush_file(struct yaffs_obj *obj, int update_time, int data_sync); +int yaffs_flush_file(struct yaffs_obj *in, + int update_time, + int data_sync, + int discard_cache); /* Flushing and checkpointing */ -void yaffs_flush_whole_cache(struct yaffs_dev *dev); +void yaffs_flush_whole_cache(struct yaffs_dev *dev, int discard); int yaffs_checkpoint_save(struct yaffs_dev *dev); int yaffs_checkpoint_restore(struct yaffs_dev *dev);