From 994a6952c07af65e8e3e9ea2e3ea508498d3bd11 Mon Sep 17 00:00:00 2001 From: Mark Poliakov Date: Wed, 23 Mar 2022 12:22:09 +0200 Subject: [PATCH] refactor: move user syscall impl to libusr --- libsys/src/lib.rs | 8 ++++---- libusr/src/allocator.rs | 2 +- libusr/src/file.rs | 6 ++---- libusr/src/io/mod.rs | 2 +- libusr/src/io/stdio.rs | 6 ++---- libusr/src/signal.rs | 8 ++------ {libsys/src => libusr/src/sys}/calls.rs | 4 ++-- libusr/src/sys/mod.rs | 5 ++++- libusr/src/thread.rs | 8 ++++---- user/src/bin/mkdir.rs | 3 ++- user/src/sbin/login.rs | 8 ++++---- 11 files changed, 28 insertions(+), 32 deletions(-) rename {libsys/src => libusr/src/sys}/calls.rs (99%) diff --git a/libsys/src/lib.rs b/libsys/src/lib.rs index b503c5e..e2c0891 100644 --- a/libsys/src/lib.rs +++ b/libsys/src/lib.rs @@ -70,7 +70,7 @@ impl fmt::Display for FixedStr { } } -#[cfg(feature = "user")] -pub mod calls; -#[cfg(feature = "user")] -pub use calls::*; +// #[cfg(feature = "user")] +// pub mod calls; +// #[cfg(feature = "user")] +// pub use calls::*; diff --git a/libusr/src/allocator.rs b/libusr/src/allocator.rs index 91a433b..cad05a1 100644 --- a/libusr/src/allocator.rs +++ b/libusr/src/allocator.rs @@ -1,8 +1,8 @@ use core::alloc::{GlobalAlloc, Layout}; use core::mem::{size_of, MaybeUninit}; use core::ptr::null_mut; +use crate::sys::{sys_mmap, sys_munmap}; use libsys::{ - calls::{sys_mmap, sys_munmap}, error::Errno, proc::{MemoryAccess, MemoryMap}, }; diff --git a/libusr/src/file.rs b/libusr/src/file.rs index 229cf87..0040ba9 100644 --- a/libusr/src/file.rs +++ b/libusr/src/file.rs @@ -1,8 +1,6 @@ use crate::io::{AsRawFd, Error, Read}; -use libsys::{ - calls::{sys_close, sys_openat, sys_read}, - stat::{FileDescriptor, FileMode, OpenFlags}, -}; +use crate::sys::{sys_close, sys_openat, sys_read}; +use libsys::stat::{FileDescriptor, FileMode, OpenFlags}; pub struct File { fd: FileDescriptor, diff --git a/libusr/src/io/mod.rs b/libusr/src/io/mod.rs index 9a51c33..e55fb86 100644 --- a/libusr/src/io/mod.rs +++ b/libusr/src/io/mod.rs @@ -1,7 +1,7 @@ +use crate::sys::{sys_fstatat, sys_ioctl}; use core::fmt; use core::mem::size_of; use libsys::{ - calls::{sys_fstatat, sys_ioctl}, error::Errno, ioctl::IoctlCmd, proc::Pid, diff --git a/libusr/src/io/stdio.rs b/libusr/src/io/stdio.rs index 17f8afe..88482a9 100644 --- a/libusr/src/io/stdio.rs +++ b/libusr/src/io/stdio.rs @@ -1,10 +1,8 @@ use crate::io::{Error, Read, Write}; use crate::sync::Mutex; +use crate::sys::{sys_read, sys_write}; use core::fmt; -use libsys::{ - calls::{sys_read, sys_write}, - stat::FileDescriptor, -}; +use libsys::stat::FileDescriptor; struct InputInner { fd: FileDescriptor, diff --git a/libusr/src/signal.rs b/libusr/src/signal.rs index fd79f58..a1f9852 100644 --- a/libusr/src/signal.rs +++ b/libusr/src/signal.rs @@ -1,10 +1,6 @@ +use crate::sys::{sys_ex_sigreturn, sys_exit}; use crate::trace; -use libsys::{ - calls::{sys_ex_sigreturn, sys_exit}, - debug::TraceLevel, - proc::ExitCode, - signal::Signal, -}; +use libsys::{debug::TraceLevel, proc::ExitCode, signal::Signal}; #[derive(Clone, Copy)] pub enum SignalHandler { diff --git a/libsys/src/calls.rs b/libusr/src/sys/calls.rs similarity index 99% rename from libsys/src/calls.rs rename to libusr/src/sys/calls.rs index 180a4b9..4cfc7d7 100644 --- a/libsys/src/calls.rs +++ b/libusr/src/sys/calls.rs @@ -1,5 +1,5 @@ -use crate::abi::SystemCall; -use crate::{ +use libsys::abi::SystemCall; +use libsys::{ debug::TraceLevel, error::Errno, ioctl::IoctlCmd, diff --git a/libusr/src/sys/mod.rs b/libusr/src/sys/mod.rs index bca5ab4..fa5cf50 100644 --- a/libusr/src/sys/mod.rs +++ b/libusr/src/sys/mod.rs @@ -1,5 +1,5 @@ pub use libsys::abi; -pub use libsys::calls::*; +// pub use libsys::calls::*; pub use libsys::debug; pub use libsys::error::Errno; pub use libsys::proc::{self, ExitCode}; @@ -7,6 +7,9 @@ pub use libsys::signal::{Signal, SignalDestination}; pub use libsys::stat::{self, AccessMode, FileDescriptor}; pub use libsys::termios; +pub mod calls; +pub use calls::*; + use core::sync::atomic::{AtomicBool, Ordering}; // TODO replace with a proper mutex impl diff --git a/libusr/src/thread.rs b/libusr/src/thread.rs index 8289615..5bbfbce 100644 --- a/libusr/src/thread.rs +++ b/libusr/src/thread.rs @@ -1,14 +1,14 @@ use crate::signal; +use crate::sys::{ + sys_ex_clone, sys_ex_gettid, sys_ex_signal, sys_ex_thread_exit, sys_ex_thread_wait, +}; use alloc::{boxed::Box, sync::Arc, vec}; use core::any::Any; use core::arch::asm; use core::cell::UnsafeCell; use core::fmt; use core::mem::MaybeUninit; -use libsys::{ - calls::{sys_ex_clone, sys_ex_gettid, sys_ex_signal, sys_ex_thread_exit, sys_ex_thread_wait}, - proc::{ExitCode, Tid}, -}; +use libsys::proc::{ExitCode, Tid}; struct NativeData where diff --git a/user/src/bin/mkdir.rs b/user/src/bin/mkdir.rs index 967996a..f1e6b5e 100644 --- a/user/src/bin/mkdir.rs +++ b/user/src/bin/mkdir.rs @@ -4,7 +4,8 @@ #[macro_use] extern crate libusr; -use libsys::{stat::FileMode, sys_mkdirat}; +use libsys::stat::FileMode; +use libusr::sys::sys_mkdirat; #[no_mangle] fn main() -> i32 { diff --git a/user/src/sbin/login.rs b/user/src/sbin/login.rs index b7d1c0d..954a9b7 100644 --- a/user/src/sbin/login.rs +++ b/user/src/sbin/login.rs @@ -5,15 +5,15 @@ extern crate libusr; use libsys::{ - calls::{ - sys_close, sys_dup, sys_execve, sys_fork, sys_getgid, sys_getpgid, sys_getuid, sys_ioctl, - sys_openat, sys_read, sys_setgid, sys_setpgid, sys_setsid, sys_setuid, sys_waitpid, - }, error::Errno, ioctl::IoctlCmd, stat::{FileDescriptor, FileMode, GroupId, OpenFlags, UserId}, termios::{Termios, TermiosLflag}, }; +use libusr::sys::{ + sys_close, sys_dup, sys_execve, sys_fork, sys_getgid, sys_getpgid, sys_getuid, sys_ioctl, + sys_openat, sys_read, sys_setgid, sys_setpgid, sys_setsid, sys_setuid, sys_waitpid, +}; use libusr::{ env::{self, UserInfo, UserShadow}, io,