diff options
author | 2025-03-08 22:04:20 +0800 | |
---|---|---|
committer | 2025-03-08 22:04:20 +0800 | |
commit | a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a (patch) | |
tree | 84f21bd0bf7071bc5fc7dd989e77d7ceb5476682 /fs/fs_types.c | |
download | ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.tar.gz ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.zip |
Initial commit: OpenHarmony-v4.0-ReleaseOpenHarmony-v4.0-Release
Diffstat (limited to 'fs/fs_types.c')
-rw-r--r-- | fs/fs_types.c | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/fs/fs_types.c b/fs/fs_types.c new file mode 100644 index 000000000..78365e5dc --- /dev/null +++ b/fs/fs_types.c | |||
@@ -0,0 +1,105 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0 | ||
2 | #include <linux/fs.h> | ||
3 | #include <linux/export.h> | ||
4 | |||
5 | /* | ||
6 | * fs on-disk file type to dirent file type conversion | ||
7 | */ | ||
8 | static const unsigned char fs_dtype_by_ftype[FT_MAX] = { | ||
9 | [FT_UNKNOWN] = DT_UNKNOWN, | ||
10 | [FT_REG_FILE] = DT_REG, | ||
11 | [FT_DIR] = DT_DIR, | ||
12 | [FT_CHRDEV] = DT_CHR, | ||
13 | [FT_BLKDEV] = DT_BLK, | ||
14 | [FT_FIFO] = DT_FIFO, | ||
15 | [FT_SOCK] = DT_SOCK, | ||
16 | [FT_SYMLINK] = DT_LNK | ||
17 | }; | ||
18 | |||
19 | /** | ||
20 | * fs_ftype_to_dtype() - fs on-disk file type to dirent type. | ||
21 | * @filetype: The on-disk file type to convert. | ||
22 | * | ||
23 | * This function converts the on-disk file type value (FT_*) to the directory | ||
24 | * entry type (DT_*). | ||
25 | * | ||
26 | * Context: Any context. | ||
27 | * Return: | ||
28 | * * DT_UNKNOWN - Unknown type | ||
29 | * * DT_FIFO - FIFO | ||
30 | * * DT_CHR - Character device | ||
31 | * * DT_DIR - Directory | ||
32 | * * DT_BLK - Block device | ||
33 | * * DT_REG - Regular file | ||
34 | * * DT_LNK - Symbolic link | ||
35 | * * DT_SOCK - Local-domain socket | ||
36 | */ | ||
37 | unsigned char fs_ftype_to_dtype(unsigned int filetype) | ||
38 | { | ||
39 | if (filetype >= FT_MAX) | ||
40 | return DT_UNKNOWN; | ||
41 | |||
42 | return fs_dtype_by_ftype[filetype]; | ||
43 | } | ||
44 | EXPORT_SYMBOL_GPL(fs_ftype_to_dtype); | ||
45 | |||
46 | /* | ||
47 | * dirent file type to fs on-disk file type conversion | ||
48 | * Values not initialized explicitly are FT_UNKNOWN (0). | ||
49 | */ | ||
50 | static const unsigned char fs_ftype_by_dtype[DT_MAX] = { | ||
51 | [DT_REG] = FT_REG_FILE, | ||
52 | [DT_DIR] = FT_DIR, | ||
53 | [DT_LNK] = FT_SYMLINK, | ||
54 | [DT_CHR] = FT_CHRDEV, | ||
55 | [DT_BLK] = FT_BLKDEV, | ||
56 | [DT_FIFO] = FT_FIFO, | ||
57 | [DT_SOCK] = FT_SOCK, | ||
58 | }; | ||
59 | |||
60 | /** | ||
61 | * fs_umode_to_ftype() - file mode to on-disk file type. | ||
62 | * @mode: The file mode to convert. | ||
63 | * | ||
64 | * This function converts the file mode value to the on-disk file type (FT_*). | ||
65 | * | ||
66 | * Context: Any context. | ||
67 | * Return: | ||
68 | * * FT_UNKNOWN - Unknown type | ||
69 | * * FT_REG_FILE - Regular file | ||
70 | * * FT_DIR - Directory | ||
71 | * * FT_CHRDEV - Character device | ||
72 | * * FT_BLKDEV - Block device | ||
73 | * * FT_FIFO - FIFO | ||
74 | * * FT_SOCK - Local-domain socket | ||
75 | * * FT_SYMLINK - Symbolic link | ||
76 | */ | ||
77 | unsigned char fs_umode_to_ftype(umode_t mode) | ||
78 | { | ||
79 | return fs_ftype_by_dtype[S_DT(mode)]; | ||
80 | } | ||
81 | EXPORT_SYMBOL_GPL(fs_umode_to_ftype); | ||
82 | |||
83 | /** | ||
84 | * fs_umode_to_dtype() - file mode to dirent file type. | ||
85 | * @mode: The file mode to convert. | ||
86 | * | ||
87 | * This function converts the file mode value to the directory | ||
88 | * entry type (DT_*). | ||
89 | * | ||
90 | * Context: Any context. | ||
91 | * Return: | ||
92 | * * DT_UNKNOWN - Unknown type | ||
93 | * * DT_FIFO - FIFO | ||
94 | * * DT_CHR - Character device | ||
95 | * * DT_DIR - Directory | ||
96 | * * DT_BLK - Block device | ||
97 | * * DT_REG - Regular file | ||
98 | * * DT_LNK - Symbolic link | ||
99 | * * DT_SOCK - Local-domain socket | ||
100 | */ | ||
101 | unsigned char fs_umode_to_dtype(umode_t mode) | ||
102 | { | ||
103 | return fs_ftype_to_dtype(fs_umode_to_ftype(mode)); | ||
104 | } | ||
105 | EXPORT_SYMBOL_GPL(fs_umode_to_dtype); | ||