diff options
| author | AngryProton <[email protected]> | 2026-01-06 17:12:55 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-06 17:12:55 +0800 |
| commit | 3d8114bcfe48f0d2adc75af028117911de99d701 (patch) | |
| tree | 90fce409eb4f22cae38db44ac56dfe7efdd08926 /components | |
| parent | 96bce3653381988322b72917f67744909f1f907e (diff) | |
[FIX][fal]char设备类型补充缺失的入参,适配DFSv2框架 (#11112)
* [FIX][fal]补充缺失的入参,适配DFSv2框架
* [FIX][fal]正确声明入参的数据类型
* [chg]按审查建议修改变量类型和代码格式。
Diffstat (limited to 'components')
| -rw-r--r-- | components/fal/src/fal_rtt.c | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/components/fal/src/fal_rtt.c b/components/fal/src/fal_rtt.c index eca8c10914..077191e102 100644 --- a/components/fal/src/fal_rtt.c +++ b/components/fal/src/fal_rtt.c @@ -435,42 +435,56 @@ static int char_dev_fopen(struct dfs_file *fd) return RT_EOK; } -static int char_dev_fread(struct dfs_file *fd, void *buf, rt_size_t count) +#ifdef RT_USING_DFS_V2 +static rt_ssize_t char_dev_fread(struct dfs_file *fd, void *buf, size_t count, off_t *pos) +#else +static rt_ssize_t char_dev_fread(struct dfs_file *fd, void *buf, size_t count) +#endif { - int ret = 0; + rt_ssize_t ret = 0; struct fal_char_device *part = (struct fal_char_device *) fd->vnode->data; +#ifndef RT_USING_DFS_V2 + off_t *pos = &(fd->pos); +#endif RT_ASSERT(part != RT_NULL); - if (DFS_FILE_POS(fd) + count > part->fal_part->len) - count = part->fal_part->len - DFS_FILE_POS(fd); + if (*pos + count > part->fal_part->len) + count = part->fal_part->len - *pos; - ret = fal_partition_read(part->fal_part, DFS_FILE_POS(fd), buf, count); + ret = fal_partition_read(part->fal_part, *pos, buf, count); - if (ret != (int)(count)) + if (ret != (rt_ssize_t)(count)) return 0; - DFS_FILE_POS(fd) += ret; + *pos += ret; return ret; } -static int char_dev_fwrite(struct dfs_file *fd, const void *buf, rt_size_t count) +#ifdef RT_USING_DFS_V2 +static rt_ssize_t char_dev_fwrite(struct dfs_file *fd, const void *buf, size_t count, off_t *pos) +#else +static rt_ssize_t char_dev_fwrite(struct dfs_file *fd, const void *buf, size_t count) +#endif { - int ret = 0; + rt_ssize_t ret = 0; struct fal_char_device *part = (struct fal_char_device *) fd->vnode->data; +#ifndef RT_USING_DFS_V2 + off_t *pos = &(fd->pos); +#endif RT_ASSERT(part != RT_NULL); - if (DFS_FILE_POS(fd) + count > part->fal_part->len) - count = part->fal_part->len - DFS_FILE_POS(fd); + if (*pos + count > part->fal_part->len) + count = part->fal_part->len - *pos; - ret = fal_partition_write(part->fal_part, DFS_FILE_POS(fd), buf, count); + ret = fal_partition_write(part->fal_part, *pos, buf, count); - if (ret != (int) count) + if (ret != (rt_ssize_t) count) return 0; - DFS_FILE_POS(fd) += ret; + *pos += ret; return ret; } |
