X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=yaffs_guts.h;h=397aae8cc9c838abcbceca3d9008d94212338643;hb=bdb04f601934f804c982cbd1ae6add208c96732b;hp=98b607ab2b2f7cec8684e81d68e3690469c8bdd8;hpb=5521e3e34aa8ba4e9579b6d5ca2dd5e0a0946088;p=yaffs2.git diff --git a/yaffs_guts.h b/yaffs_guts.h index 98b607a..397aae8 100644 --- a/yaffs_guts.h +++ b/yaffs_guts.h @@ -144,12 +144,12 @@ struct yaffs_cache { */ struct yaffs_tags { - unsigned chunk_id:20; - unsigned serial_number:2; - unsigned n_bytes_lsb:10; - unsigned obj_id:18; - unsigned ecc:12; - unsigned n_bytes_msb:2; + u32 chunk_id:20; + u32 serial_number:2; + u32 n_bytes_lsb:10; + u32 obj_id:18; + u32 ecc:12; + u32 n_bytes_msb:2; }; union yaffs_tags_union { @@ -163,6 +163,7 @@ union yaffs_tags_union { enum yaffs_ecc_result { YAFFS_ECC_RESULT_UNKNOWN, YAFFS_ECC_RESULT_NO_ERROR, + YAFFS_ECC_RESULT_REFRESH, YAFFS_ECC_RESULT_FIXED, YAFFS_ECC_RESULT_UNFIXED }; @@ -287,9 +288,9 @@ enum yaffs_block_state { struct yaffs_block_info { - int soft_del_pages:10; /* number of soft deleted pages */ - int pages_in_use:10; /* number of pages in use */ - unsigned block_state:4; /* One of the above block states. */ + s32 soft_del_pages:10; /* number of soft deleted pages */ + s32 pages_in_use:10; /* number of pages in use */ + u32 block_state:4; /* One of the above block states. */ /* NB use unsigned because enum is sometimes * an int */ u32 needs_retiring:1; /* Data has failed on this block, */ @@ -688,8 +689,8 @@ struct yaffs_dev { /* Block Info */ struct yaffs_block_info *block_info; u8 *chunk_bits; /* bitmap of chunks in use */ - unsigned block_info_alt:1; /* allocated using alternative alloc */ - unsigned chunk_bits_alt:1; /* allocated using alternative alloc */ + u8 block_info_alt:1; /* allocated using alternative alloc */ + u8 chunk_bits_alt:1; /* allocated using alternative alloc */ int chunk_bit_stride; /* Number of bytes of chunk_bits per block. * Must be consistent with chunks_per_block. */ @@ -876,10 +877,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); @@ -937,7 +941,8 @@ void yaffs_chunk_del(struct yaffs_dev *dev, int chunk_id, int mark_flash, int lyn); int yaffs_check_ff(u8 *buffer, int n_bytes); void yaffs_handle_chunk_error(struct yaffs_dev *dev, - struct yaffs_block_info *bi); + struct yaffs_block_info *bi, + enum yaffs_ecc_result err_type); u8 *yaffs_get_temp_buffer(struct yaffs_dev *dev); void yaffs_release_temp_buffer(struct yaffs_dev *dev, u8 *buffer);