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 }
|
||||
}
|
||||
}
|
||||
|
||||
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 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;
|
||||
|
@ -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,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -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<SyscallReturn
|
||||
_ => 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
|
||||
#[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<FileDescripter>,
|
||||
events: IoEvents,
|
||||
revents: Cell<IoEvents>,
|
||||
|
Reference in New Issue
Block a user