mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-24 18:03:25 +00:00
Move some syscall specific structs from fs to syscall module
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
6cea03b871
commit
a2acf56765
@ -45,28 +45,3 @@ impl EpollEvent {
|
|||||||
Self { events, user_data }
|
Self { events, user_data }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<&c_epoll_event> for EpollEvent {
|
|
||||||
fn from(c_event: &c_epoll_event) -> Self {
|
|
||||||
Self {
|
|
||||||
events: IoEvents::from_bits_truncate(c_event.events as u32),
|
|
||||||
user_data: c_event.data,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<&EpollEvent> for c_epoll_event {
|
|
||||||
fn from(ep_event: &EpollEvent) -> Self {
|
|
||||||
Self {
|
|
||||||
events: ep_event.events.bits() as u32,
|
|
||||||
data: ep_event.user_data,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, Pod)]
|
|
||||||
#[repr(C)]
|
|
||||||
pub struct c_epoll_event {
|
|
||||||
pub events: u32,
|
|
||||||
pub data: u64,
|
|
||||||
}
|
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
use crate::prelude::*;
|
|
||||||
|
|
||||||
#[repr(i32)]
|
|
||||||
#[derive(Debug, Clone, Copy, TryFromInt)]
|
|
||||||
#[allow(non_camel_case_types)]
|
|
||||||
pub enum FcntlCmd {
|
|
||||||
F_DUPFD = 0,
|
|
||||||
F_GETFD = 1,
|
|
||||||
F_SETFD = 2,
|
|
||||||
F_DUPFD_CLOEXEC = 1030,
|
|
||||||
}
|
|
@ -6,7 +6,6 @@ pub use creation_flags::CreationFlags;
|
|||||||
pub use dentry_cache::Dentry;
|
pub use dentry_cache::Dentry;
|
||||||
pub use dirent_visitor::DirentVisitor;
|
pub use dirent_visitor::DirentVisitor;
|
||||||
pub use direntry_vec::DirEntryVecExt;
|
pub use direntry_vec::DirEntryVecExt;
|
||||||
pub use fcntl::FcntlCmd;
|
|
||||||
pub use file_creation_mask::FileCreationMask;
|
pub use file_creation_mask::FileCreationMask;
|
||||||
pub use fs::{FileSystem, FsFlags, SuperBlock};
|
pub use fs::{FileSystem, FsFlags, SuperBlock};
|
||||||
pub use inode::{Inode, InodeMode, InodeType, Metadata};
|
pub use inode::{Inode, InodeMode, InodeType, Metadata};
|
||||||
@ -23,7 +22,6 @@ mod creation_flags;
|
|||||||
mod dentry_cache;
|
mod dentry_cache;
|
||||||
mod dirent_visitor;
|
mod dirent_visitor;
|
||||||
mod direntry_vec;
|
mod direntry_vec;
|
||||||
mod fcntl;
|
|
||||||
mod file_creation_mask;
|
mod file_creation_mask;
|
||||||
mod fs;
|
mod fs;
|
||||||
mod inode;
|
mod inode;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
use core::time::Duration;
|
use core::time::Duration;
|
||||||
|
|
||||||
use crate::fs::epoll::{c_epoll_event, EpollCtl, EpollEvent, EpollFile, EpollFlags};
|
use crate::fs::epoll::{EpollCtl, EpollEvent, EpollFile, EpollFlags};
|
||||||
use crate::fs::file_table::FileDescripter;
|
use crate::fs::file_table::FileDescripter;
|
||||||
use crate::fs::utils::CreationFlags;
|
use crate::fs::utils::{CreationFlags, IoEvents};
|
||||||
use crate::log_syscall_entry;
|
use crate::log_syscall_entry;
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use crate::util::{read_val_from_user, write_val_to_user};
|
use crate::util::{read_val_from_user, write_val_to_user};
|
||||||
@ -131,3 +131,28 @@ pub fn sys_epoll_wait(
|
|||||||
|
|
||||||
Ok(SyscallReturn::Return(epoll_events.len() as _))
|
Ok(SyscallReturn::Return(epoll_events.len() as _))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, Pod)]
|
||||||
|
#[repr(C)]
|
||||||
|
struct c_epoll_event {
|
||||||
|
events: u32,
|
||||||
|
data: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&EpollEvent> for c_epoll_event {
|
||||||
|
fn from(ep_event: &EpollEvent) -> Self {
|
||||||
|
Self {
|
||||||
|
events: ep_event.events.bits() as u32,
|
||||||
|
data: ep_event.user_data,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&c_epoll_event> for EpollEvent {
|
||||||
|
fn from(c_event: &c_epoll_event) -> Self {
|
||||||
|
Self::new(
|
||||||
|
IoEvents::from_bits_truncate(c_event.events as u32),
|
||||||
|
c_event.data,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
use super::{SyscallReturn, SYS_FCNTL};
|
use super::{SyscallReturn, SYS_FCNTL};
|
||||||
use crate::fs::utils::FcntlCmd;
|
|
||||||
use crate::log_syscall_entry;
|
use crate::log_syscall_entry;
|
||||||
use crate::{fs::file_table::FileDescripter, prelude::*};
|
use crate::{fs::file_table::FileDescripter, prelude::*};
|
||||||
|
|
||||||
@ -25,3 +24,13 @@ pub fn sys_fcntl(fd: FileDescripter, cmd: i32, arg: u64) -> Result<SyscallReturn
|
|||||||
_ => todo!(),
|
_ => todo!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[repr(i32)]
|
||||||
|
#[derive(Debug, Clone, Copy, TryFromInt)]
|
||||||
|
#[allow(non_camel_case_types)]
|
||||||
|
enum FcntlCmd {
|
||||||
|
F_DUPFD = 0,
|
||||||
|
F_GETFD = 1,
|
||||||
|
F_SETFD = 2,
|
||||||
|
F_DUPFD_CLOEXEC = 1030,
|
||||||
|
}
|
||||||
|
@ -99,14 +99,14 @@ fn do_poll(poll_fds: &[PollFd], timeout: Option<Duration>) -> Result<usize> {
|
|||||||
// https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/poll.h
|
// https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/poll.h
|
||||||
#[derive(Debug, Clone, Copy, Pod)]
|
#[derive(Debug, Clone, Copy, Pod)]
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct c_pollfd {
|
struct c_pollfd {
|
||||||
fd: i32,
|
fd: i32,
|
||||||
events: i16,
|
events: i16,
|
||||||
revents: i16,
|
revents: i16,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct PollFd {
|
struct PollFd {
|
||||||
fd: Option<FileDescripter>,
|
fd: Option<FileDescripter>,
|
||||||
events: IoEvents,
|
events: IoEvents,
|
||||||
revents: Cell<IoEvents>,
|
revents: Cell<IoEvents>,
|
||||||
|
Reference in New Issue
Block a user