mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-25 18:23:22 +00:00
refactor(vfs): 重构statx系统调用的实现 (#1149)
- 将kstat的获取,与posix statx的获取进行分离. - 修复statx没有处理dirfd的bug - 在Metadata结构体中新增btime字段,表示文件的创建时间 - 更新多个文件系统的metadata实现,添加对btime的支持 - 引入derive_builder crate以简化Metadata构建过程 - 重构vfs模块,将core重命名为vcore以避免命名冲突 - 实现vfs_statx和vfs_getattr函数,支持更详细的文件属性查询 - 新增LookUpFlags定义,用于路径查找时的标志位 Signed-off-by: longjin <longjin@dragonos.org>
This commit is contained in:
@ -31,7 +31,7 @@ use crate::{
|
||||
devfs::{devfs_register, DevFS, DeviceINode},
|
||||
kernfs::KernFSInode,
|
||||
vfs::{
|
||||
core::generate_inode_id, syscall::ModeType, utils::DName, FilePrivateData, FileSystem,
|
||||
syscall::ModeType, utils::DName, vcore::generate_inode_id, FilePrivateData, FileSystem,
|
||||
FileType, IndexNode, Metadata,
|
||||
},
|
||||
},
|
||||
@ -198,6 +198,7 @@ impl Ps2MouseDevice {
|
||||
atime: PosixTimeSpec::default(),
|
||||
mtime: PosixTimeSpec::default(),
|
||||
ctime: PosixTimeSpec::default(),
|
||||
btime: PosixTimeSpec::default(),
|
||||
file_type: FileType::CharDevice, // 文件夹,block设备,char设备
|
||||
mode: ModeType::from_bits_truncate(0o644),
|
||||
nlinks: 1,
|
||||
|
@ -22,7 +22,7 @@ use crate::{
|
||||
filesystem::{
|
||||
devfs::{devfs_register, DevFS, DeviceINode},
|
||||
vfs::{
|
||||
core::generate_inode_id, file::FileMode, syscall::ModeType, FilePrivateData,
|
||||
file::FileMode, syscall::ModeType, vcore::generate_inode_id, FilePrivateData,
|
||||
FileSystem, FileType, IndexNode, Metadata,
|
||||
},
|
||||
},
|
||||
@ -86,6 +86,7 @@ impl LockedPS2KeyBoardInode {
|
||||
atime: PosixTimeSpec::default(),
|
||||
mtime: PosixTimeSpec::default(),
|
||||
ctime: PosixTimeSpec::default(),
|
||||
btime: PosixTimeSpec::default(),
|
||||
file_type: FileType::CharDevice, // 文件夹,block设备,char设备
|
||||
mode: ModeType::from_bits_truncate(0o666),
|
||||
nlinks: 1,
|
||||
@ -155,6 +156,7 @@ impl IndexNode for LockedPS2KeyBoardInode {
|
||||
inode.metadata.atime = metadata.atime;
|
||||
inode.metadata.mtime = metadata.mtime;
|
||||
inode.metadata.ctime = metadata.ctime;
|
||||
inode.metadata.btime = metadata.btime;
|
||||
inode.metadata.mode = metadata.mode;
|
||||
inode.metadata.uid = metadata.uid;
|
||||
inode.metadata.gid = metadata.gid;
|
||||
|
Reference in New Issue
Block a user