mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-18 16:26:31 +00:00
命名管道系统调用以及文件系统兼容特殊文件类型的接口 (#397)
* 修复pipe2在读端或写端关闭后还阻塞问题。 * 实现命名管道机制,增加特殊文件类型兼容普通文件系统的接口。 * 普通文件系统能够适配特殊文件(命名管道等)
This commit is contained in:
@ -7,11 +7,11 @@ use num_traits::{FromPrimitive, ToPrimitive};
|
||||
|
||||
use crate::{
|
||||
arch::{cpu::cpu_reset, interrupt::TrapFrame, MMArch},
|
||||
driver::base::block::SeekFrom,
|
||||
driver::base::{block::SeekFrom, device::DeviceNumber},
|
||||
filesystem::vfs::{
|
||||
fcntl::FcntlCommand,
|
||||
file::FileMode,
|
||||
syscall::{PosixKstat, SEEK_CUR, SEEK_END, SEEK_MAX, SEEK_SET},
|
||||
syscall::{ModeType, PosixKstat, SEEK_CUR, SEEK_END, SEEK_MAX, SEEK_SET},
|
||||
MAX_PATHLEN,
|
||||
},
|
||||
include::bindings::bindings::{PAGE_2M_SIZE, PAGE_4K_SIZE},
|
||||
@ -375,6 +375,7 @@ pub const SYS_GETPGID: usize = 50;
|
||||
|
||||
pub const SYS_FCNTL: usize = 51;
|
||||
pub const SYS_FTRUNCATE: usize = 52;
|
||||
pub const SYS_MKNOD: usize = 53;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Syscall;
|
||||
@ -973,6 +974,14 @@ impl Syscall {
|
||||
res
|
||||
}
|
||||
|
||||
SYS_MKNOD => {
|
||||
let path = args[0];
|
||||
let flags = args[1];
|
||||
let dev_t = args[2];
|
||||
let flags: ModeType = ModeType::from_bits_truncate(flags as u32);
|
||||
Self::mknod(path as *const i8, flags, DeviceNumber::from(dev_t))
|
||||
}
|
||||
|
||||
_ => panic!("Unsupported syscall ID: {}", syscall_num),
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user