add a patch to fix compile warning in yaffs code

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2076 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
goprife@gmail.com 2012-04-15 16:52:47 +00:00
parent ff350c4ebc
commit 50955197d5
2 changed files with 403 additions and 0 deletions

View File

@ -0,0 +1,398 @@
diff --git a/dfs_yaffs2.c b/dfs_yaffs2.c
index 4b056ae..e63d5d4 100644
--- a/dfs_yaffs2.c
+++ b/dfs_yaffs2.c
@@ -39,7 +39,6 @@ static int dfs_yaffs_mount(struct dfs_filesystem* fs,
const void* data)
{
unsigned index;
- ynandif_Geometry *g;
/*1. find a empty entry in partition table */
for (index = 0; index < NAND_DEVICE_PART_MAX ; index ++)
diff --git a/yaffs/direct/yaffsfs.c b/yaffs/direct/yaffsfs.c
index 17fc502..1f47ea7 100644
--- a/yaffs/direct/yaffsfs.c
+++ b/yaffs/direct/yaffsfs.c
@@ -1367,7 +1367,7 @@ off_t yaffs_lseek(int handle, off_t offset, int whence)
if(offset >= 0)
pos = offset;
} else if(whence == SEEK_CUR) {
- if( (fd->position + offset) >= 0)
+ if( ((int)fd->position + offset) >= 0)
pos = (fd->position + offset);
} else if(whence == SEEK_END) {
fSize = yaffs_get_obj_length(obj);
diff --git a/yaffs/direct/yportenv.h b/yaffs/direct/yportenv.h
index f693c16..ac0a737 100644
--- a/yaffs/direct/yportenv.h
+++ b/yaffs/direct/yportenv.h
@@ -45,7 +45,7 @@
#endif
#ifndef loff_t
- typedef unsigned long loff_t;
+ typedef long loff_t;
#endif
#ifndef dev_t
@@ -66,7 +66,7 @@
#elif defined (__GNUC__) && !defined(__CC_ARM)
#ifndef loff_t
- typedef unsigned long loff_t;
+ typedef long loff_t;
#endif
#ifndef dev_t
diff --git a/yaffs/yaffs_guts.c b/yaffs/yaffs_guts.c
index d72aa5b..08db8c8 100644
--- a/yaffs/yaffs_guts.c
+++ b/yaffs/yaffs_guts.c
@@ -280,7 +280,7 @@ static void yaffs_handle_chunk_wr_error(struct yaffs_dev *dev, int nand_chunk,
static inline int yaffs_hash_fn(int n)
{
- n = abs(n);
+ n = n > 0 ? n : -n;
return n % YAFFS_NOBJECT_BUCKETS;
}
@@ -319,9 +319,9 @@ static int yaffs_check_chunk_erased(struct yaffs_dev *dev, int nand_chunk)
int retval = YAFFS_OK;
u8 *data = yaffs_get_temp_buffer(dev);
struct yaffs_ext_tags tags;
- int result;
- result = yaffs_rd_chunk_tags_nand(dev, nand_chunk, data, &tags);
+
+ yaffs_rd_chunk_tags_nand(dev, nand_chunk, data, &tags);
if (tags.ecc_result > YAFFS_ECC_RESULT_NO_ERROR)
retval = YAFFS_FAIL;
@@ -347,9 +347,9 @@ static int yaffs_verify_chunk_written(struct yaffs_dev *dev,
int retval = YAFFS_OK;
struct yaffs_ext_tags temp_tags;
u8 *buffer = yaffs_get_temp_buffer(dev);
- int result;
- result = yaffs_rd_chunk_tags_nand(dev, nand_chunk, buffer, &temp_tags);
+
+ yaffs_rd_chunk_tags_nand(dev, nand_chunk, buffer, &temp_tags);
if (memcmp(buffer, data, dev->data_bytes_per_chunk) ||
temp_tags.obj_id != tags->obj_id ||
temp_tags.chunk_id != tags->chunk_id ||
@@ -1478,7 +1478,7 @@ static struct yaffs_cache *yaffs_grab_chunk_cache(struct yaffs_dev *dev)
struct yaffs_obj *the_obj;
int usage;
int i;
- int pushout;
+ /* int pushout; */
if (dev->param.n_caches < 1)
return NULL;
@@ -1499,7 +1499,7 @@ static struct yaffs_cache *yaffs_grab_chunk_cache(struct yaffs_dev *dev)
the_obj = dev->cache[0].object;
usage = -1;
cache = NULL;
- pushout = -1;
+ /* pushout = -1; */
for (i = 0; i < dev->param.n_caches; i++) {
if (dev->cache[i].object &&
@@ -1509,7 +1509,7 @@ static struct yaffs_cache *yaffs_grab_chunk_cache(struct yaffs_dev *dev)
usage = dev->cache[i].last_use;
the_obj = dev->cache[i].object;
cache = &dev->cache[i];
- pushout = i;
+ /* pushout = i; */
}
}
@@ -3167,7 +3167,7 @@ static void yaffs_check_obj_details_loaded(struct yaffs_obj *in)
struct yaffs_obj_hdr *oh;
struct yaffs_dev *dev;
struct yaffs_ext_tags tags;
- int result;
+
int alloc_failed = 0;
if (!in || !in->lazy_loaded || in->hdr_chunk < 1)
@@ -3177,7 +3177,7 @@ static void yaffs_check_obj_details_loaded(struct yaffs_obj *in)
in->lazy_loaded = 0;
buf = yaffs_get_temp_buffer(dev);
- result = yaffs_rd_chunk_tags_nand(dev, in->hdr_chunk, buf, &tags);
+ yaffs_rd_chunk_tags_nand(dev, in->hdr_chunk, buf, &tags);
oh = (struct yaffs_obj_hdr *)buf;
in->yst_mode = oh->yst_mode;
@@ -3189,6 +3189,7 @@ static void yaffs_check_obj_details_loaded(struct yaffs_obj *in)
yaffs_clone_str(oh->alias);
if (!in->variant.symlink_variant.alias)
alloc_failed = 1; /* Not returned */
+ alloc_failed = alloc_failed;
}
yaffs_release_temp_buffer(dev, buf);
}
@@ -3274,7 +3275,7 @@ int yaffs_update_oh(struct yaffs_obj *in, const YCHAR *name, int force,
struct yaffs_dev *dev = in->my_dev;
int prev_chunk_id;
int ret_val = 0;
- int result = 0;
+
int new_chunk_id;
struct yaffs_ext_tags new_tags;
struct yaffs_ext_tags old_tags;
@@ -3297,7 +3298,7 @@ int yaffs_update_oh(struct yaffs_obj *in, const YCHAR *name, int force,
prev_chunk_id = in->hdr_chunk;
if (prev_chunk_id > 0) {
- result = yaffs_rd_chunk_tags_nand(dev, prev_chunk_id,
+ yaffs_rd_chunk_tags_nand(dev, prev_chunk_id,
buffer, &old_tags);
yaffs_verify_oh(in, oh, &old_tags, 0);
@@ -3921,7 +3922,7 @@ int yaffs_del_obj(struct yaffs_obj *obj)
list_del_init(&obj->variant.dir_variant.dirty);
}
return yaffs_del_dir(obj);
- break;
+ //break;
case YAFFS_OBJECT_TYPE_SYMLINK:
ret_val = yaffs_del_symlink(obj);
break;
@@ -3993,17 +3994,17 @@ static int yaffs_unlink_worker(struct yaffs_obj *obj)
switch (obj->variant_type) {
case YAFFS_OBJECT_TYPE_FILE:
return yaffs_del_file(obj);
- break;
+ //break;
case YAFFS_OBJECT_TYPE_DIRECTORY:
list_del_init(&obj->variant.dir_variant.dirty);
return yaffs_del_dir(obj);
- break;
+ //break;
case YAFFS_OBJECT_TYPE_SYMLINK:
return yaffs_del_symlink(obj);
- break;
+ //break;
case YAFFS_OBJECT_TYPE_SPECIAL:
return yaffs_generic_obj_del(obj);
- break;
+ //break;
case YAFFS_OBJECT_TYPE_HARDLINK:
case YAFFS_OBJECT_TYPE_UNKNOWN:
default:
@@ -4421,7 +4422,7 @@ int yaffs_get_obj_name(struct yaffs_obj *obj, YCHAR *name, int buffer_size)
} else if (obj->short_name[0]) {
strcpy(name, obj->short_name);
} else if (obj->hdr_chunk > 0) {
- int result;
+
u8 *buffer = yaffs_get_temp_buffer(obj->my_dev);
struct yaffs_obj_hdr *oh = (struct yaffs_obj_hdr *)buffer;
@@ -4429,7 +4430,7 @@ int yaffs_get_obj_name(struct yaffs_obj *obj, YCHAR *name, int buffer_size)
memset(buffer, 0, obj->my_dev->data_bytes_per_chunk);
if (obj->hdr_chunk > 0) {
- result = yaffs_rd_chunk_tags_nand(obj->my_dev,
+ yaffs_rd_chunk_tags_nand(obj->my_dev,
obj->hdr_chunk,
buffer, NULL);
}
@@ -4490,16 +4491,16 @@ unsigned yaffs_get_obj_type(struct yaffs_obj *obj)
switch (obj->variant_type) {
case YAFFS_OBJECT_TYPE_FILE:
return DT_REG;
- break;
+ //break;
case YAFFS_OBJECT_TYPE_DIRECTORY:
return DT_DIR;
- break;
+ //break;
case YAFFS_OBJECT_TYPE_SYMLINK:
return DT_LNK;
- break;
+ //break;
case YAFFS_OBJECT_TYPE_HARDLINK:
return DT_REG;
- break;
+ //break;
case YAFFS_OBJECT_TYPE_SPECIAL:
if (S_ISFIFO(obj->yst_mode))
return DT_FIFO;
@@ -4510,10 +4511,10 @@ unsigned yaffs_get_obj_type(struct yaffs_obj *obj)
if (S_ISSOCK(obj->yst_mode))
return DT_SOCK;
return DT_REG;
- break;
+ //break;
default:
return DT_REG;
- break;
+ //break;
}
}
@@ -4837,7 +4838,7 @@ int yaffs_guts_initialise(struct yaffs_dev *dev)
dev->n_erased_blocks = 0;
dev->n_free_chunks = 0;
dev->alloc_block = -1;
- dev->alloc_page = -1;
+ dev->alloc_page = (u32)(-1);
dev->n_deleted_files = 0;
dev->n_unlinked_files = 0;
dev->n_bg_deletions = 0;
diff --git a/yaffs/yaffs_packedtags2.c b/yaffs/yaffs_packedtags2.c
index 820bc41..9306623 100644
--- a/yaffs/yaffs_packedtags2.c
+++ b/yaffs/yaffs_packedtags2.c
@@ -35,7 +35,7 @@
/* Also, the top 4 bits of the object Id are set to the object type. */
#define EXTRA_OBJECT_TYPE_SHIFT (28)
-#define EXTRA_OBJECT_TYPE_MASK ((0x0f) << EXTRA_OBJECT_TYPE_SHIFT)
+#define EXTRA_OBJECT_TYPE_MASK ((0x0fUL) << EXTRA_OBJECT_TYPE_SHIFT)
static void yaffs_dump_packed_tags2_tags_only(
const struct yaffs_packed_tags2_tags_only *ptt)
@@ -129,7 +129,7 @@ void yaffs_unpack_tags2_tags_only(struct yaffs_ext_tags *t,
t->extra_parent_id = ptt->chunk_id & (~(ALL_EXTRA_FLAGS));
t->extra_is_shrink = ptt->chunk_id & EXTRA_SHRINK_FLAG ? 1 : 0;
t->extra_shadows = ptt->chunk_id & EXTRA_SHADOWS_FLAG ? 1 : 0;
- t->extra_obj_type = ptt->obj_id >> EXTRA_OBJECT_TYPE_SHIFT;
+ t->extra_obj_type = (enum yaffs_obj_type)(ptt->obj_id >> EXTRA_OBJECT_TYPE_SHIFT);
t->obj_id &= ~EXTRA_OBJECT_TYPE_MASK;
if (t->extra_obj_type == YAFFS_OBJECT_TYPE_HARDLINK)
diff --git a/yaffs/yaffs_verify.c b/yaffs/yaffs_verify.c
index b3e540d..1758125 100644
--- a/yaffs/yaffs_verify.c
+++ b/yaffs/yaffs_verify.c
@@ -223,7 +223,7 @@ void yaffs_verify_oh(struct yaffs_obj *obj, struct yaffs_obj_hdr *oh,
void yaffs_verify_file(struct yaffs_obj *obj)
{
int required_depth;
- int actual_depth;
+ //int actual_depth;
u32 last_chunk;
u32 the_chunk;
u32 x;
@@ -252,7 +252,7 @@ void yaffs_verify_file(struct yaffs_obj *obj)
required_depth++;
}
- actual_depth = obj->variant.file_variant.top_level;
+ //actual_depth = obj->variant.file_variant.top_level;
/* Check that the chunks in the tnode tree are all correct.
* We do this by scanning through the tnode tree and
diff --git a/yaffs/yaffs_yaffs1.c b/yaffs/yaffs_yaffs1.c
index da6a40f..8e7f4b2 100644
--- a/yaffs/yaffs_yaffs1.c
+++ b/yaffs/yaffs_yaffs1.c
@@ -23,7 +23,7 @@ int yaffs1_scan(struct yaffs_dev *dev)
{
struct yaffs_ext_tags tags;
int blk;
- int result;
+ //int result;
int chunk;
int c;
int deleted;
@@ -84,7 +84,7 @@ int yaffs1_scan(struct yaffs_dev *dev)
cond_resched();
bi = yaffs_get_block_info(dev, blk);
- state = bi->block_state;
+ state = (enum yaffs_block_state)(bi->block_state);
deleted = 0;
@@ -95,7 +95,7 @@ int yaffs1_scan(struct yaffs_dev *dev)
/* Read the tags and decide what to do */
chunk = blk * dev->param.chunks_per_block + c;
- result = yaffs_rd_chunk_tags_nand(dev, chunk, NULL,
+ yaffs_rd_chunk_tags_nand(dev, chunk, NULL,
&tags);
/* Let's have a good look at this chunk... */
@@ -181,7 +181,7 @@ int yaffs1_scan(struct yaffs_dev *dev)
yaffs_set_chunk_bit(dev, blk, c);
bi->pages_in_use++;
- result = yaffs_rd_chunk_tags_nand(dev, chunk,
+ yaffs_rd_chunk_tags_nand(dev, chunk,
chunk_data,
NULL);
diff --git a/yaffs/yaffs_yaffs2.c b/yaffs/yaffs_yaffs2.c
index 5761e96..69acd20 100644
--- a/yaffs/yaffs_yaffs2.c
+++ b/yaffs/yaffs_yaffs2.c
@@ -946,7 +946,7 @@ static inline int yaffs2_scan_chunk(struct yaffs_dev *dev,
int is_shrink;
int is_unlinked;
struct yaffs_ext_tags tags;
- int result;
+ //int result;
int alloc_failed = 0;
int chunk = blk * dev->param.chunks_per_block + chunk_in_block;
struct yaffs_file_var *file_var;
@@ -954,12 +954,12 @@ static inline int yaffs2_scan_chunk(struct yaffs_dev *dev,
struct yaffs_symlink_var *sl_var;
if (summary_available) {
- result = yaffs_summary_fetch(dev, &tags, chunk_in_block);
+ yaffs_summary_fetch(dev, &tags, chunk_in_block);
tags.seq_number = bi->seq_number;
}
if (!summary_available || tags.obj_id == 0) {
- result = yaffs_rd_chunk_tags_nand(dev, chunk, NULL, &tags);
+ yaffs_rd_chunk_tags_nand(dev, chunk, NULL, &tags);
dev->tags_used++;
} else {
dev->summary_used++;
@@ -1114,7 +1114,7 @@ static inline int yaffs2_scan_chunk(struct yaffs_dev *dev,
* invalid data until needed.
*/
- result = yaffs_rd_chunk_tags_nand(dev,
+ yaffs_rd_chunk_tags_nand(dev,
chunk,
chunk_data,
NULL);
@@ -1349,7 +1349,7 @@ int yaffs2_scan_backwards(struct yaffs_dev *dev)
int n_to_scan = 0;
enum yaffs_block_state state;
int c;
- int deleted;
+ //int deleted;
LIST_HEAD(hard_list);
struct yaffs_block_info *bi;
u32 seq_number;
@@ -1467,7 +1467,7 @@ int yaffs2_scan_backwards(struct yaffs_dev *dev)
/* get the block to scan in the correct order */
blk = block_index[block_iter].block;
bi = yaffs_get_block_info(dev, blk);
- deleted = 0;
+ //deleted = 0;
summary_available = yaffs_summary_read(dev, dev->sum_tags, blk);
diff --git a/yaffs_osglue.c b/yaffs_osglue.c
index 2c34f99..4f2e5db 100644
--- a/yaffs_osglue.c
+++ b/yaffs_osglue.c
@@ -58,7 +58,6 @@ void yaffsfs_LockInit(void)
#else
static rt_mutex_t mutex = RT_NULL;
-static rt_sem_t sem = RT_NULL;
void yaffsfs_Lock(void)
{
rt_mutex_take(mutex, RT_WAITING_FOREVER);

View File

@ -17,6 +17,7 @@ There are three steps.
F:\Project\svn\rt-thread\components\dfs\filesystems\yaffs2>
then type command
patch -p1 < yaffs.diff
you will get some log information as followings
F:\Project\svn\rt-thread\components\dfs\filesystems\yaffs2>patch -p1 < yaffs.diff
patching file `dfs_yaffs2.c'
@ -28,6 +29,10 @@ There are three steps.
patching file `yaffs_osglue.c'
now you can delete yaffs.diff
there is another patch file, as the name shows, it is to fix compile
warning, so it is not necessary. If you want, you can use the
following command.
patch -p1 < fixwarning.diff
(2) on linux
Help yourself. Since you have use linux as your os, I believe in you.