mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-21 14:23:39 +00:00
添加socketpair (#505)
* 添加对socketpair系统调用的处理 --------- Co-authored-by: LoGin <longjin@DragonOS.org>
This commit is contained in:
kernel/src
driver
keyboard
filesystem
init
ipc
net
process
syscall
tools
user/dadk/config
@ -10,8 +10,8 @@ use crate::{
|
||||
filesystem::{
|
||||
devfs::{devfs_register, DevFS, DeviceINode},
|
||||
vfs::{
|
||||
core::generate_inode_id, file::FileMode, syscall::ModeType, FileType, IndexNode,
|
||||
Metadata,
|
||||
core::generate_inode_id, file::FileMode, syscall::ModeType, FilePrivateData,
|
||||
FileSystem, FileType, IndexNode, Metadata,
|
||||
},
|
||||
},
|
||||
include::bindings::bindings::vfs_file_operations_t,
|
||||
@ -100,7 +100,7 @@ impl IndexNode for LockedPS2KeyBoardInode {
|
||||
_offset: usize,
|
||||
len: usize,
|
||||
buf: &mut [u8],
|
||||
_data: &mut crate::filesystem::vfs::FilePrivateData,
|
||||
_data: &mut FilePrivateData,
|
||||
) -> Result<usize, SystemError> {
|
||||
let guard = self.0.read();
|
||||
let func = guard.f_ops.read.unwrap();
|
||||
@ -120,16 +120,12 @@ impl IndexNode for LockedPS2KeyBoardInode {
|
||||
_offset: usize,
|
||||
_len: usize,
|
||||
_buf: &[u8],
|
||||
_data: &mut crate::filesystem::vfs::FilePrivateData,
|
||||
_data: &mut FilePrivateData,
|
||||
) -> Result<usize, SystemError> {
|
||||
return Err(SystemError::EOPNOTSUPP_OR_ENOTSUP);
|
||||
}
|
||||
|
||||
fn open(
|
||||
&self,
|
||||
_data: &mut crate::filesystem::vfs::FilePrivateData,
|
||||
_mode: &FileMode,
|
||||
) -> Result<(), SystemError> {
|
||||
fn open(&self, _data: &mut FilePrivateData, _mode: &FileMode) -> Result<(), SystemError> {
|
||||
let prev_ref_count = self.1.fetch_add(1, core::sync::atomic::Ordering::SeqCst);
|
||||
if prev_ref_count == 0 {
|
||||
// 第一次打开,需要初始化
|
||||
@ -140,10 +136,7 @@ impl IndexNode for LockedPS2KeyBoardInode {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
fn close(
|
||||
&self,
|
||||
_data: &mut crate::filesystem::vfs::FilePrivateData,
|
||||
) -> Result<(), SystemError> {
|
||||
fn close(&self, _data: &mut FilePrivateData) -> Result<(), SystemError> {
|
||||
let prev_ref_count = self.1.fetch_sub(1, core::sync::atomic::Ordering::SeqCst);
|
||||
if prev_ref_count == 1 {
|
||||
// 最后一次关闭,需要释放
|
||||
@ -170,7 +163,7 @@ impl IndexNode for LockedPS2KeyBoardInode {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
fn fs(&self) -> alloc::sync::Arc<dyn crate::filesystem::vfs::FileSystem> {
|
||||
fn fs(&self) -> alloc::sync::Arc<dyn FileSystem> {
|
||||
return self.0.read().fs.upgrade().unwrap();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user