From: Charles Manning Date: Fri, 8 Jun 2012 00:19:38 +0000 (+1200) Subject: Changes to support 32-bit loff_t X-Git-Tag: pre-driver-refactoring~6^2~1 X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=commitdiff_plain;h=1af6728346f8d3cb23aee150c0b9b63405e4017e Changes to support 32-bit loff_t Signed-off-by: Charles Manning --- diff --git a/direct/yaffsfs.h b/direct/yaffsfs.h index f2c7666..c20da16 100644 --- a/direct/yaffsfs.h +++ b/direct/yaffsfs.h @@ -30,7 +30,8 @@ #define NAME_MAX 256 #endif -#define YAFFS_MAX_FILE_SIZE (0x800000000LL - 1) +#define YAFFS_MAX_FILE_SIZE \ + ( (sizeof(loff_t) < 8) ? YAFFS_MAX_FILE_SIZE_32 : (0x800000000LL - 1) ) struct yaffs_dirent { diff --git a/yaffs_guts.c b/yaffs_guts.c index df6cb00..f3bc419 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -700,7 +700,10 @@ void yaffs_set_obj_name_from_oh(struct yaffs_obj *obj, loff_t yaffs_max_file_size(struct yaffs_dev *dev) { - return ((loff_t) YAFFS_MAX_CHUNK_ID) * dev->data_bytes_per_chunk; + if(sizeof(loff_t) < 8) + return YAFFS_MAX_FILE_SIZE_32; + else + return ((loff_t) YAFFS_MAX_CHUNK_ID) * dev->data_bytes_per_chunk; } /*-------------------- TNODES ------------------- @@ -5008,8 +5011,8 @@ int yaffs_get_n_free_chunks(struct yaffs_dev *dev) return n_free; } -/*\ - * Marshalling functions to get loff_t file sizes into aand out of +/* + * Marshalling functions to get loff_t file sizes into and out of * object headers. */ void yaffs_oh_size_load(struct yaffs_obj_hdr *oh, loff_t fsize) @@ -5022,7 +5025,7 @@ loff_t yaffs_oh_to_size(struct yaffs_obj_hdr *oh) { loff_t retval; - if (~(oh->file_size_high)) + if (sizeof(loff_t) >= 8 && ~(oh->file_size_high)) retval = (((loff_t) oh->file_size_high) << 32) | (((loff_t) oh->file_size_low) & 0xFFFFFFFF); else diff --git a/yaffs_guts.h b/yaffs_guts.h index d320070..1aefb85 100644 --- a/yaffs_guts.h +++ b/yaffs_guts.h @@ -54,6 +54,8 @@ YAFFS_TNODES_MAX_LEVEL) #define YAFFS_MAX_CHUNK_ID ((1 << YAFFS_TNODES_MAX_BITS) - 1) +#define YAFFS_MAX_FILE_SIZE_32 0x7fffffff + /* Constants for YAFFS1 mode */ #define YAFFS_BYTES_PER_SPARE 16 #define YAFFS_BYTES_PER_CHUNK 512