fs/littlefs: VFS wrapper improvement: (1) Support block device interface, (2) support ioctl, stat and sync file operation, (3) support forceformat and autoformat option, (4) update file->f_pos and dir->fd_position, (5)remote the internal struct from dir, and (6) emove mtd byte read/write requirement.

This commit is contained in:
Xiang Xiao 2019-01-27 12:31:28 -06:00 committed by Gregory Nutt
parent c511ff7ea2
commit af5e479fb5
5 changed files with 966 additions and 652 deletions

View File

@ -3,7 +3,7 @@ config FS_LITTLEFS
default n
select FS_READABLE
select FS_WRITABLE
depends on !DISABLE_MOUNTPOINT && MTD_BYTE_WRITE && EXPERIMENTAL
depends on !DISABLE_MOUNTPOINT
---help---
Build the LITTLEFS file system. https://github.com/ARMmbed/littlefs.

View File

@ -1,6 +1,6 @@
## usage
depends on !DISABLE_MOUNTPOINT && MTD_BYTE_WRITE
depends on !DISABLE_MOUNTPOINT
1. register_mtddriver("/dev/w25", mtd, 0755, NULL);
2. mount("/dev/w25", "/w25", "littlefs", 0, NULL);

File diff suppressed because it is too large Load Diff

View File

@ -72,7 +72,7 @@
*/
#if defined(CONFIG_FS_FAT) || defined(CONFIG_FS_ROMFS) || \
defined(CONFIG_FS_SMARTFS)
defined(CONFIG_FS_SMARTFS) || defined(CONFIG_FS_LITTLEFS)
# define BDFS_SUPPORT 1
#endif
@ -117,6 +117,9 @@ extern const struct mountpt_operations romfs_operations;
#ifdef CONFIG_FS_SMARTFS
extern const struct mountpt_operations smartfs_operations;
#endif
#ifdef CONFIG_FS_LITTLEFS
extern const struct mountpt_operations littlefs_operations;
#endif
static const struct fsmap_t g_bdfsmap[] =
{
@ -128,6 +131,9 @@ static const struct fsmap_t g_bdfsmap[] =
#endif
#ifdef CONFIG_FS_SMARTFS
{ "smartfs", &smartfs_operations },
#endif
#ifdef CONFIG_FS_LITTLEFS
{ "littlefs", &littlefs_operations },
#endif
{ NULL, NULL },
};

View File

@ -222,29 +222,6 @@ struct fs_hostfsdir_s
#endif /* CONFIG_DISABLE_MOUNTPOINT */
#ifdef CONFIG_FS_LITTLEFS
typedef uint32_t _lfs_block_t;
typedef uint32_t _lfs_size_t;
typedef uint32_t _lfs_off_t;
typedef struct _lfs_dir
{
struct _lfs_dir *next;
_lfs_block_t pair[2];
_lfs_off_t off;
_lfs_block_t head[2];
_lfs_off_t pos;
struct _lfs_disk_dir
{
uint32_t rev;
_lfs_size_t size;
_lfs_block_t tail[2];
} d;
} _lfs_dir_t;
#endif
struct fs_dirent_s
{
/* This is the node that was opened by opendir. The type of the inode
@ -313,7 +290,7 @@ struct fs_dirent_s
struct fs_spiffsdir_s spiffs;
#endif
#ifdef CONFIG_FS_LITTLEFS
_lfs_dir_t littlefs;
FAR void *littlefs;
#endif
#ifdef CONFIG_FS_UNIONFS
struct fs_unionfsdir_s unionfs;