@@ -435,42 +435,56 @@ static int char_dev_fopen(struct dfs_file *fd)
435435 return RT_EOK ;
436436}
437437
438- static int char_dev_fread (struct dfs_file * fd , void * buf , rt_size_t count )
438+ #ifdef RT_USING_DFS_V2
439+ static rt_ssize_t char_dev_fread (struct dfs_file * fd , void * buf , size_t count , off_t * pos )
440+ #else
441+ static rt_ssize_t char_dev_fread (struct dfs_file * fd , void * buf , size_t count )
442+ #endif
439443{
440- int ret = 0 ;
444+ rt_ssize_t ret = 0 ;
441445 struct fal_char_device * part = (struct fal_char_device * ) fd -> vnode -> data ;
446+ #ifndef RT_USING_DFS_V2
447+ off_t * pos = & (fd -> pos );
448+ #endif
442449
443450 RT_ASSERT (part != RT_NULL );
444451
445- if (DFS_FILE_POS ( fd ) + count > part -> fal_part -> len )
446- count = part -> fal_part -> len - DFS_FILE_POS ( fd ) ;
452+ if (* pos + count > part -> fal_part -> len )
453+ count = part -> fal_part -> len - * pos ;
447454
448- ret = fal_partition_read (part -> fal_part , DFS_FILE_POS ( fd ) , buf , count );
455+ ret = fal_partition_read (part -> fal_part , * pos , buf , count );
449456
450- if (ret != (int )(count ))
457+ if (ret != (rt_ssize_t )(count ))
451458 return 0 ;
452459
453- DFS_FILE_POS ( fd ) += ret ;
460+ * pos += ret ;
454461
455462 return ret ;
456463}
457464
458- static int char_dev_fwrite (struct dfs_file * fd , const void * buf , rt_size_t count )
465+ #ifdef RT_USING_DFS_V2
466+ static rt_ssize_t char_dev_fwrite (struct dfs_file * fd , const void * buf , size_t count , off_t * pos )
467+ #else
468+ static rt_ssize_t char_dev_fwrite (struct dfs_file * fd , const void * buf , size_t count )
469+ #endif
459470{
460- int ret = 0 ;
471+ rt_ssize_t ret = 0 ;
461472 struct fal_char_device * part = (struct fal_char_device * ) fd -> vnode -> data ;
473+ #ifndef RT_USING_DFS_V2
474+ off_t * pos = & (fd -> pos );
475+ #endif
462476
463477 RT_ASSERT (part != RT_NULL );
464478
465- if (DFS_FILE_POS ( fd ) + count > part -> fal_part -> len )
466- count = part -> fal_part -> len - DFS_FILE_POS ( fd ) ;
479+ if (* pos + count > part -> fal_part -> len )
480+ count = part -> fal_part -> len - * pos ;
467481
468- ret = fal_partition_write (part -> fal_part , DFS_FILE_POS ( fd ) , buf , count );
482+ ret = fal_partition_write (part -> fal_part , * pos , buf , count );
469483
470- if (ret != (int ) count )
484+ if (ret != (rt_ssize_t ) count )
471485 return 0 ;
472486
473- DFS_FILE_POS ( fd ) += ret ;
487+ * pos += ret ;
474488
475489 return ret ;
476490}
0 commit comments