From de148a1dd6a90b0f9862fe08b195e9ffe16ace2c Mon Sep 17 00:00:00 2001 From: Samuka007 Date: Wed, 16 Oct 2024 08:15:04 +0000 Subject: [PATCH] remove unused imports --- kernel/src/driver/net/loopback.rs | 4 +- kernel/src/driver/net/mod.rs | 4 - kernel/src/filesystem/vfs/open.rs | 3 +- kernel/src/filesystem/vfs/syscall.rs | 5 +- kernel/src/net/mod.rs | 5 +- kernel/src/net/socket/buffer.rs | 3 +- kernel/src/net/socket/common/epoll_items.rs | 6 +- kernel/src/net/socket/inet/common/mod.rs | 1 + kernel/src/net/socket/inet/datagram/mod.rs | 29 +--- kernel/src/net/socket/inet/stream/inner.rs | 4 +- kernel/src/net/socket/inet/stream/mod.rs | 174 +------------------- kernel/src/net/socket/inode.rs | 6 +- kernel/src/net/socket/mod.rs | 2 +- kernel/src/net/socket/unix/seqpacket/mod.rs | 1 + kernel/src/net/socket/utils.rs | 4 +- kernel/src/net/syscall.rs | 42 +---- kernel/src/net/syscall_util.rs | 11 +- 17 files changed, 38 insertions(+), 266 deletions(-) diff --git a/kernel/src/driver/net/loopback.rs b/kernel/src/driver/net/loopback.rs index 72dbbd3a..ffb81962 100644 --- a/kernel/src/driver/net/loopback.rs +++ b/kernel/src/driver/net/loopback.rs @@ -8,7 +8,7 @@ use crate::driver::base::kobject::{ }; use crate::driver::base::kset::KSet; use crate::filesystem::kernfs::KernFSInode; -use crate::init::initcall::INITCALL_DEVICE; +// use crate::init::initcall::INITCALL_DEVICE; use crate::libs::rwlock::{RwLockReadGuard, RwLockWriteGuard}; use crate::libs::spinlock::{SpinLock, SpinLockGuard}; use crate::net::{generate_iface_id, NET_DEVICES}; @@ -26,7 +26,7 @@ use smoltcp::{ wire::{IpAddress, IpCidr}, }; use system_error::SystemError; -use unified_init::macros::unified_init; +// use unified_init::macros::unified_init; use super::{register_netdevice, NetDeivceState, NetDeviceCommonData, Operstate}; diff --git a/kernel/src/driver/net/mod.rs b/kernel/src/driver/net/mod.rs index bf57a885..85067e3a 100644 --- a/kernel/src/driver/net/mod.rs +++ b/kernel/src/driver/net/mod.rs @@ -1,9 +1,5 @@ use alloc::{fmt, vec::Vec}; use alloc::{string::String, sync::Arc}; -use smoltcp::{ - iface, - wire::{self, EthernetAddress}, -}; use sysfs::netdev_register_kobject; use crate::{ diff --git a/kernel/src/filesystem/vfs/open.rs b/kernel/src/filesystem/vfs/open.rs index 610de65f..8544a345 100644 --- a/kernel/src/filesystem/vfs/open.rs +++ b/kernel/src/filesystem/vfs/open.rs @@ -1,5 +1,4 @@ use alloc::sync::Arc; -use log::{debug, warn}; use system_error::SystemError; use super::{ @@ -58,7 +57,7 @@ pub fn do_fchmodat(dirfd: i32, path: *const u8, _mode: ModeType) -> Result Result { - // if flags.contains(MessageFlag::DONTWAIT) { + if flags.contains(MessageFlag::DONTWAIT) { + log::warn!("Nonblock send is not implemented yet"); + } return self.try_send(buffer, None); - // } else { - // // return self - // // .wait_queue - // // .busy_wait(EP::EPOLLOUT, || self.try_send(buffer, None)); - // todo!() - // } } fn send_to( @@ -227,21 +221,14 @@ impl Socket for UdpSocket { flags: MessageFlag, address: Endpoint, ) -> Result { - // if flags.contains(MessageFlag::DONTWAIT) { + if flags.contains(MessageFlag::DONTWAIT) { + log::warn!("Nonblock send is not implemented yet"); + } + if let Endpoint::Ip(remote) = address { return self.try_send(buffer, Some(remote)); } - // } else { - // // return self - // // .wait_queue - // // .busy_wait(EP::EPOLLOUT, || { - // // if let Endpoint::Ip(remote) = address { - // // return self.try_send(buffer, Some(remote.addr)); - // // } - // // return Err(EAFNOSUPPORT); - // // }); - // todo!() - // } + return Err(EINVAL); } diff --git a/kernel/src/net/socket/inet/stream/inner.rs b/kernel/src/net/socket/inet/stream/inner.rs index 4d7499ae..5e093832 100644 --- a/kernel/src/net/socket/inet/stream/inner.rs +++ b/kernel/src/net/socket/inet/stream/inner.rs @@ -1,4 +1,4 @@ -use core::sync::atomic::{AtomicU32, AtomicUsize}; +use core::sync::atomic::AtomicUsize; use crate::libs::rwlock::RwLock; use crate::net::socket::EPollEventType; @@ -10,7 +10,7 @@ use system_error::SystemError::{self, *}; use super::inet::UNSPECIFIED_LOCAL_ENDPOINT; -pub const DEFAULT_METADATA_BUF_SIZE: usize = 1024; +// pub const DEFAULT_METADATA_BUF_SIZE: usize = 1024; pub const DEFAULT_RX_BUF_SIZE: usize = 512 * 1024; pub const DEFAULT_TX_BUF_SIZE: usize = 512 * 1024; diff --git a/kernel/src/net/socket/inet/stream/mod.rs b/kernel/src/net/socket/inet/stream/mod.rs index e3c37cd3..5e9a16ae 100644 --- a/kernel/src/net/socket/inet/stream/mod.rs +++ b/kernel/src/net/socket/inet/stream/mod.rs @@ -20,9 +20,8 @@ type EP = EPollEventType; #[derive(Debug)] pub struct TcpSocket { inner: RwLock>, - shutdown: Shutdown, + shutdown: Shutdown, // TODO set shutdown status nonblock: AtomicBool, - epitems: EPollItems, wait_queue: WaitQueue, self_ref: Weak, pollee: AtomicUsize, @@ -34,7 +33,6 @@ impl TcpSocket { inner: RwLock::new(Some(Inner::Init(Init::new()))), shutdown: Shutdown::new(), nonblock: AtomicBool::new(nonblock), - epitems: EPollItems::default(), wait_queue: WaitQueue::default(), self_ref: me.clone(), pollee: AtomicUsize::new((EP::EPOLLIN.bits() | EP::EPOLLOUT.bits()) as usize), @@ -46,7 +44,6 @@ impl TcpSocket { inner: RwLock::new(Some(Inner::Established(inner))), shutdown: Shutdown::new(), nonblock: AtomicBool::new(nonblock), - epitems: EPollItems::default(), wait_queue: WaitQueue::default(), self_ref: me.clone(), pollee: AtomicUsize::new((EP::EPOLLIN.bits() | EP::EPOLLOUT.bits()) as usize), @@ -57,18 +54,6 @@ impl TcpSocket { self.nonblock.load(core::sync::atomic::Ordering::Relaxed) } - #[inline] - fn write_state(&self, mut f: F) -> Result<(), SystemError> - where - F: FnMut(Inner) -> Result, - { - let mut inner_guard = self.inner.write(); - let inner = inner_guard.take().expect("Tcp Inner is None"); - let update = f(inner)?; - inner_guard.replace(update); - Ok(()) - } - pub fn do_bind(&self, local_endpoint: smoltcp::wire::IpEndpoint) -> Result<(), SystemError> { let mut writer = self.inner.write(); match writer.take().expect("Tcp Inner is None") { @@ -335,163 +320,8 @@ impl Socket for TcpSocket { impl InetSocket for TcpSocket { fn on_iface_events(&self) { if self.update_events() { - let result = self.finish_connect(); + let _result = self.finish_connect(); // set error } } } - -// #[derive(Debug)] -// // #[cast_to([sync] IndexNode)] -// struct TcpStream { -// inner: Established, -// shutdown: Shutdown, -// nonblock: AtomicBool, -// epitems: EPollItems, -// wait_queue: WaitQueue, -// self_ref: Weak, -// } - -// impl TcpStream { -// pub fn is_nonblock(&self) -> bool { -// self.nonblock.load(core::sync::atomic::Ordering::Relaxed) -// } - -// pub fn read(&self, buf: &mut [u8]) -> Result { -// if self.nonblock.load(core::sync::atomic::Ordering::Relaxed) { -// return self.recv_slice(buf); -// } else { -// return self.wait_queue().busy_wait( -// EP::EPOLLIN, -// || self.recv_slice(buf) -// ) -// } -// } - -// pub fn recv_slice(&self, buf: &mut [u8]) -> Result { -// let received = self.inner.recv_slice(buf); -// poll_ifaces(); -// received -// } - -// pub fn send_slice(&self, buf: &[u8]) -> Result { -// let sent = self.inner.send_slice(buf); -// poll_ifaces(); -// sent -// } -// } - -// use crate::net::socket::{Inode, Socket}; -// use crate::filesystem::vfs::IndexNode; - -// impl IndexNode for TcpStream { -// fn read_at( -// &self, -// _offset: usize, -// _len: usize, -// buf: &mut [u8], -// data: crate::libs::spinlock::SpinLockGuard, -// ) -> Result { -// drop(data); -// self.read(buf) -// } - -// fn write_at( -// &self, -// _offset: usize, -// _len: usize, -// buf: &[u8], -// data: crate::libs::spinlock::SpinLockGuard, -// ) -> Result { -// drop(data); -// self.send_slice(buf) -// } - -// fn fs(&self) -> alloc::sync::Arc { -// todo!("TcpSocket::fs") -// } - -// fn as_any_ref(&self) -> &dyn core::any::Any { -// self -// } - -// fn list(&self) -> Result, SystemError> { -// todo!("TcpSocket::list") -// } - -// } - -// impl Socket for TcpStream { - -// fn wait_queue(&self) -> WaitQueue { -// self.wait_queue.clone() -// } - -// fn poll(&self) -> usize { -// // self.inner.with(|socket| { -// // let mut mask = EPollEventType::empty(); -// // let shutdown = self.shutdown.get(); -// // let state = socket.state(); -// // use smoltcp::socket::tcp::State::*; -// // type EP = crate::net::event_poll::EPollEventType; - -// // if shutdown.is_both_shutdown() || state == Closed { -// // mask |= EP::EPOLLHUP; -// // } - -// // if shutdown.is_recv_shutdown() { -// // mask |= EP::EPOLLIN | EP::EPOLLRDNORM | EP::EPOLLRDHUP; -// // } - -// // if state != SynSent && state != SynReceived { -// // if socket.can_recv() { -// // mask |= EP::EPOLLIN | EP::EPOLLRDNORM; -// // } - -// // if !shutdown.is_send_shutdown() { -// // // __sk_stream_is_writeable,这是一个内联函数,用于判断一个TCP套接字是否可写。 -// // // -// // // 以下是函数的逐行解释: -// // // static inline bool __sk_stream_is_writeable(const struct sock *sk, int wake) -// // // - 这行定义了函数__sk_stream_is_writeable,它是一个内联函数(static inline), -// // // 这意味着在调用点直接展开代码,而不是调用函数体。函数接收两个参数: -// // // 一个指向struct sock对象的指针sk(代表套接字),和一个整型变量wake。 -// // // -// // // return sk_stream_wspace(sk) >= sk_stream_min_wspace(sk) && -// // // - 这行代码调用了sk_stream_wspace函数,获取套接字sk的可写空间(write space)大小。 -// // // 随后与sk_stream_min_wspace调用结果进行比较,该函数返回套接字为了保持稳定写入速度所需的 -// // // 最小可写空间。如果当前可写空间大于或等于最小可写空间,则表达式为真。 -// // // __sk_stream_memory_free(sk, wake); -// // // - 这行代码调用了__sk_stream_memory_free函数,它可能用于检查套接字的内存缓冲区是否 -// // // 有足够的空间可供写入数据。参数wake可能用于通知网络协议栈有数据需要发送,如果设置了相应的标志。 -// // // 综上所述,__sk_stream_is_writeable函数的目的是判断一个TCP套接字是否可以安全地进行写操作, -// // // 它基于套接字的当前可写空间和所需的最小空间以及内存缓冲区的可用性。只有当这两个条件都满足时, -// // // 函数才会返回true,表示套接字是可写的。 -// // if socket.can_send() { -// // mask |= EP::EPOLLOUT | EP::EPOLLWRNORM | EP::EPOLLWRBAND; -// // } else { -// // todo!("TcpStream::poll: buffer space not enough"); -// // } -// // } else { -// // mask |= EP::EPOLLOUT | EP::EPOLLWRNORM; -// // } -// // // TODO tcp urg data => EPOLLPRI -// // } else if state == SynSent /* inet_test_bit */ { -// // log::warn!("Active TCP fastopen socket with defer_connect"); -// // mask |= EP::EPOLLOUT | EP::EPOLLWRNORM; -// // } - -// // // TODO socket error -// // return Ok(mask); -// // }) -// self.pollee.load(core::sync::atomic::Ordering::Relaxed) -// } - -// fn send_buffer_size(&self) -> usize { -// self.inner.with(|socket| socket.send_capacity()) -// } - -// fn recv_buffer_size(&self) -> usize { -// self.inner.with(|socket| socket.recv_capacity()) -// } -// } diff --git a/kernel/src/net/socket/inode.rs b/kernel/src/net/socket/inode.rs index b2a098f4..b68c95ac 100644 --- a/kernel/src/net/socket/inode.rs +++ b/kernel/src/net/socket/inode.rs @@ -49,7 +49,7 @@ impl IndexNode for Inode { fn poll( &self, - private_data: &crate::filesystem::vfs::FilePrivateData, + _: &crate::filesystem::vfs::FilePrivateData, ) -> Result { Ok(self.inner.poll()) } @@ -180,11 +180,11 @@ impl Inode { self.epoll_items.clone() } - pub fn set_nonblock(&self, nonblock: bool) { + pub fn set_nonblock(&self, _nonblock: bool) { log::warn!("nonblock is not support yet"); } - pub fn set_close_on_exec(&self, close_on_exec: bool) { + pub fn set_close_on_exec(&self, _close_on_exec: bool) { log::warn!("close_on_exec is not support yet"); } diff --git a/kernel/src/net/socket/mod.rs b/kernel/src/net/socket/mod.rs index 7a2611ca..a8a14508 100644 --- a/kernel/src/net/socket/mod.rs +++ b/kernel/src/net/socket/mod.rs @@ -11,7 +11,7 @@ mod utils; use crate::libs::wait_queue::WaitQueue; pub use base::Socket; -use buffer::Buffer; + pub use common::{ shutdown::*, // poll_unit::{EPollItems, WaitQueue}, diff --git a/kernel/src/net/socket/unix/seqpacket/mod.rs b/kernel/src/net/socket/unix/seqpacket/mod.rs index 7e6d17c4..17d8d592 100644 --- a/kernel/src/net/socket/unix/seqpacket/mod.rs +++ b/kernel/src/net/socket/unix/seqpacket/mod.rs @@ -118,6 +118,7 @@ impl SeqpacketSocket { self.is_nonblocking.load(Ordering::Relaxed) } + #[allow(dead_code)] fn set_nonblocking(&self, nonblocking: bool) { self.is_nonblocking.store(nonblocking, Ordering::Relaxed); } diff --git a/kernel/src/net/socket/utils.rs b/kernel/src/net/socket/utils.rs index 844b5a46..4a1f2860 100644 --- a/kernel/src/net/socket/utils.rs +++ b/kernel/src/net/socket/utils.rs @@ -21,7 +21,7 @@ pub fn create_socket( todo!("unsupport address family"); } }; - // inode.set_nonblock(is_nonblock); - // inode.set_close_on_exec(is_close_on_exec); + inode.set_nonblock(is_nonblock); + inode.set_close_on_exec(is_close_on_exec); return Ok(inode); } diff --git a/kernel/src/net/syscall.rs b/kernel/src/net/syscall.rs index a05390b0..16567641 100644 --- a/kernel/src/net/syscall.rs +++ b/kernel/src/net/syscall.rs @@ -1,27 +1,14 @@ -use core::{cmp::min, ffi::CStr}; - -use acpi::address; -use alloc::{boxed::Box, sync::Arc}; +use alloc::sync::Arc; use log::debug; -use num_traits::{FromPrimitive, ToPrimitive}; -use smoltcp::wire; use system_error::SystemError::{self, *}; use crate::{ - filesystem::vfs::{ - file::{File, FileMode}, - syscall::{IoVec, IoVecs}, - FileType, - }, - libs::spinlock::SpinLockGuard, - mm::{verify_area, VirtAddr}, - // net::socket::{netlink::af_netlink::NetlinkSock, AddressFamily}, + filesystem::vfs::file::{File, FileMode}, process::ProcessManager, syscall::Syscall, }; -use super::socket::{self, Endpoint, Socket}; -use super::socket::{unix::Unix, AddressFamily as AF}; +use super::socket::{self, Endpoint, unix::Unix, AddressFamily as AF}; pub use super::syscall_util::*; @@ -94,31 +81,10 @@ impl Syscall { // check address family, only support AF_UNIX if address_family != AF::Unix { + log::warn!("only support AF_UNIX, {:?} with protocol {:?} is not supported", address_family, protocol); return Err(SystemError::EAFNOSUPPORT); } - // 创建一对socket - // let inode0 = socket::create_socket( - // address_family, - // stype, - // protocol as u32, - // socket_type.is_nonblock(), - // socket_type.is_cloexec(), - // )?; - // let inode1 = socket::create_socket( - // address_family, - // stype, - // protocol as u32, - // socket_type.is_nonblock(), - // socket_type.is_cloexec(), - // )?; - - // // 进行pair - // unsafe { - // inode0.connect(socket::Endpoint::Inode(inode1.clone()))?; - // inode1.connect(socket::Endpoint::Inode(inode0.clone()))?; - // } - // 创建一对新的unix socket pair let (inode0, inode1) = Unix::new_pairs(stype)?; diff --git a/kernel/src/net/syscall_util.rs b/kernel/src/net/syscall_util.rs index 12c47e7a..350f1880 100644 --- a/kernel/src/net/syscall_util.rs +++ b/kernel/src/net/syscall_util.rs @@ -33,20 +33,17 @@ impl SysArgSocketType { use alloc::sync::Arc; use core::ffi::CStr; -use unix::INODE_MAP; use crate::{ filesystem::vfs::{ - file::FileMode, FileType, IndexNode, MAX_PATHLEN, ROOT_INODE, VFS_MAX_FOLLOW_SYMLINK_TIMES, + FileType, IndexNode, ROOT_INODE, VFS_MAX_FOLLOW_SYMLINK_TIMES, }, - libs::casting::DowncastArc, mm::{verify_area, VirtAddr}, - net::socket::{self, *}, - process::ProcessManager, - syscall::Syscall, + net::socket::*, + process::ProcessManager }; use smoltcp; -use system_error::SystemError::{self, *}; +use system_error::SystemError; // 参考资料: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html#tag_13_32 #[repr(C)]