diff --git a/services/libs/jinux-std/src/fs/epoll/mod.rs b/services/libs/jinux-std/src/fs/epoll/mod.rs index e2d4951b6..c994af3e2 100644 --- a/services/libs/jinux-std/src/fs/epoll/mod.rs +++ b/services/libs/jinux-std/src/fs/epoll/mod.rs @@ -45,28 +45,3 @@ impl EpollEvent { 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, -} diff --git a/services/libs/jinux-std/src/fs/utils/fcntl.rs b/services/libs/jinux-std/src/fs/utils/fcntl.rs deleted file mode 100644 index b7e80f3a6..000000000 --- a/services/libs/jinux-std/src/fs/utils/fcntl.rs +++ /dev/null @@ -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, -} diff --git a/services/libs/jinux-std/src/fs/utils/mod.rs b/services/libs/jinux-std/src/fs/utils/mod.rs index dce7915d4..ebf9d094a 100644 --- a/services/libs/jinux-std/src/fs/utils/mod.rs +++ b/services/libs/jinux-std/src/fs/utils/mod.rs @@ -6,7 +6,6 @@ pub use creation_flags::CreationFlags; pub use dentry_cache::Dentry; pub use dirent_visitor::DirentVisitor; pub use direntry_vec::DirEntryVecExt; -pub use fcntl::FcntlCmd; pub use file_creation_mask::FileCreationMask; pub use fs::{FileSystem, FsFlags, SuperBlock}; pub use inode::{Inode, InodeMode, InodeType, Metadata}; @@ -23,7 +22,6 @@ mod creation_flags; mod dentry_cache; mod dirent_visitor; mod direntry_vec; -mod fcntl; mod file_creation_mask; mod fs; mod inode; diff --git a/services/libs/jinux-std/src/syscall/epoll.rs b/services/libs/jinux-std/src/syscall/epoll.rs index b164a6edb..50fdbdbdc 100644 --- a/services/libs/jinux-std/src/syscall/epoll.rs +++ b/services/libs/jinux-std/src/syscall/epoll.rs @@ -1,8 +1,8 @@ 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::utils::CreationFlags; +use crate::fs::utils::{CreationFlags, IoEvents}; use crate::log_syscall_entry; use crate::prelude::*; 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 _)) } + +#[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, + ) + } +} diff --git a/services/libs/jinux-std/src/syscall/fcntl.rs b/services/libs/jinux-std/src/syscall/fcntl.rs index e6e539647..f1808c907 100644 --- a/services/libs/jinux-std/src/syscall/fcntl.rs +++ b/services/libs/jinux-std/src/syscall/fcntl.rs @@ -1,5 +1,4 @@ use super::{SyscallReturn, SYS_FCNTL}; -use crate::fs::utils::FcntlCmd; use crate::log_syscall_entry; use crate::{fs::file_table::FileDescripter, prelude::*}; @@ -25,3 +24,13 @@ pub fn sys_fcntl(fd: FileDescripter, cmd: i32, arg: u64) -> Result 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, +} diff --git a/services/libs/jinux-std/src/syscall/poll.rs b/services/libs/jinux-std/src/syscall/poll.rs index 13f564a73..730699e56 100644 --- a/services/libs/jinux-std/src/syscall/poll.rs +++ b/services/libs/jinux-std/src/syscall/poll.rs @@ -99,14 +99,14 @@ fn do_poll(poll_fds: &[PollFd], timeout: Option) -> Result { // https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/poll.h #[derive(Debug, Clone, Copy, Pod)] #[repr(C)] -pub struct c_pollfd { +struct c_pollfd { fd: i32, events: i16, revents: i16, } #[derive(Debug, Clone)] -pub struct PollFd { +struct PollFd { fd: Option, events: IoEvents, revents: Cell,