diff options
| author | bernard <[email protected]> | 2013-07-22 07:46:10 +0800 |
|---|---|---|
| committer | bernard <[email protected]> | 2013-07-22 07:46:10 +0800 |
| commit | b96b35613f2cdc8118f083a3e2795788915319d7 (patch) | |
| tree | 4318798c8331e2b65b27ae9f1949df3a31ffce4f /components/dfs | |
| parent | adc678dabbcccd1f17cc1392882934ed5791a2b8 (diff) | |
add mount table
Diffstat (limited to 'components/dfs')
| -rw-r--r-- | components/dfs/filesystems/elmfat/option/ccfile.c | 1 | ||||
| -rw-r--r-- | components/dfs/include/dfs_fs.h | 11 | ||||
| -rw-r--r-- | components/dfs/src/dfs_fs.c | 27 |
3 files changed, 39 insertions, 0 deletions
diff --git a/components/dfs/filesystems/elmfat/option/ccfile.c b/components/dfs/filesystems/elmfat/option/ccfile.c index 34c97372c1..e91db8c702 100644 --- a/components/dfs/filesystems/elmfat/option/ccfile.c +++ b/components/dfs/filesystems/elmfat/option/ccfile.c @@ -23,6 +23,7 @@ void ff_convert_init() if (uni2gbk_fd < 0) rt_kprintf("Unable to open Unicode to GBK look up table.\r\n"); } +INIT_APP_EXPORT(ff_convert_init); rt_uint16_t ff_convert(rt_uint16_t src, rt_uint32_t dir) { diff --git a/components/dfs/include/dfs_fs.h b/components/dfs/include/dfs_fs.h index e8f42f6631..3fa999c344 100644 --- a/components/dfs/include/dfs_fs.h +++ b/components/dfs/include/dfs_fs.h @@ -82,6 +82,16 @@ struct dfs_partition rt_sem_t lock; }; +/* mount table */ +struct dfs_mount_tbl +{ + const char *device_name; + const char *path; + const char *filesystemtype; + unsigned long rwflag; + const void *data; +}; + int dfs_register(const struct dfs_filesystem_operation *ops); struct dfs_filesystem *dfs_filesystem_lookup(const char *path); rt_err_t dfs_filesystem_get_partition(struct dfs_partition *part, @@ -98,6 +108,7 @@ int dfs_unmount(const char *specialfile); /* extern variable */ extern const struct dfs_filesystem_operation *filesystem_operation_table[]; extern struct dfs_filesystem filesystem_table[]; +extern const struct dfs_mount_tbl mount_table[]; extern char working_directory[]; diff --git a/components/dfs/src/dfs_fs.c b/components/dfs/src/dfs_fs.c index c7fb80eff3..8b77aa978b 100644 --- a/components/dfs/src/dfs_fs.c +++ b/components/dfs/src/dfs_fs.c @@ -497,6 +497,33 @@ int dfs_statfs(const char *path, struct statfs *buffer) return -1; } +#ifdef RT_USING_DFS_MNTTABLE +int dfs_mount_table(void) +{ + int index; + + while (1) + { + if (mount_table[index].path == RT_NULL) break; + + if (dfs_mount(mount_table[index].device_name, + mount_table[index].path, + mount_table[index].filesystemtype, + mount_table[index].rwflag, + mount_table[index].data) != 0) + { + rt_kprintf("mount fs[%s] on %s failed.\n", mount_table[index].filesystemtype, + mount_table[index].path); + return -RT_ERROR; + } + + index ++; + } + return 0; +} +INIT_ENV_EXPORT(dfs_mount_table); +#endif + #ifdef RT_USING_FINSH #include <finsh.h> void mkfs(const char *fs_name, const char *device_name) |
