summaryrefslogtreecommitdiff
path: root/components/dfs
diff options
context:
space:
mode:
authortangyuxin <[email protected]>2020-09-26 09:55:58 +0800
committertangyuxin <[email protected]>2020-09-26 09:55:58 +0800
commit50dc41468ef69b6b79979772f9689d8d3099df30 (patch)
tree9015ec28c2d8e170b169570c8d4409c91390a79f /components/dfs
parent8ffe2422288c67a7ad89e1f3e31495b08bf2f175 (diff)
[add] DFS file system supports device types
Diffstat (limited to 'components/dfs')
-rw-r--r--components/dfs/filesystems/devfs/devfs.c2
-rw-r--r--components/dfs/include/dfs.h1
-rw-r--r--components/dfs/src/dfs.c1
3 files changed, 4 insertions, 0 deletions
diff --git a/components/dfs/filesystems/devfs/devfs.c b/components/dfs/filesystems/devfs/devfs.c
index 936b074ce1..7637074dbb 100644
--- a/components/dfs/filesystems/devfs/devfs.c
+++ b/components/dfs/filesystems/devfs/devfs.c
@@ -186,6 +186,7 @@ int dfs_device_fs_open(struct dfs_fd *file)
result = file->fops->open(file);
if (result == RT_EOK || result == -RT_ENOSYS)
{
+ file->type = FT_DEVICE;
return 0;
}
}
@@ -197,6 +198,7 @@ int dfs_device_fs_open(struct dfs_fd *file)
if (result == RT_EOK || result == -RT_ENOSYS)
{
file->data = device;
+ file->type = FT_DEVICE;
return RT_EOK;
}
}
diff --git a/components/dfs/include/dfs.h b/components/dfs/include/dfs.h
index eb32a4b411..1158df93cb 100644
--- a/components/dfs/include/dfs.h
+++ b/components/dfs/include/dfs.h
@@ -55,6 +55,7 @@
#define FT_SOCKET 1 /* socket file */
#define FT_DIRECTORY 2 /* directory */
#define FT_USER 3 /* user defined */
+#define FT_DEVICE 4 /* device */
/* File flags */
#define DFS_F_OPEN 0x01000000
diff --git a/components/dfs/src/dfs.c b/components/dfs/src/dfs.c
index b20de13988..7ace0bc160 100644
--- a/components/dfs/src/dfs.c
+++ b/components/dfs/src/dfs.c
@@ -542,6 +542,7 @@ int list_fd(void)
else if (fd->type == FT_REGULAR) rt_kprintf("%-7.7s ", "file");
else if (fd->type == FT_SOCKET) rt_kprintf("%-7.7s ", "socket");
else if (fd->type == FT_USER) rt_kprintf("%-7.7s ", "user");
+ else if (fd->type == FT_DEVICE) rt_kprintf("%-7.7s ", "device");
else rt_kprintf("%-8.8s ", "unknown");
rt_kprintf("%3d ", fd->ref_count);
rt_kprintf("%04x ", fd->magic);