From 57e0b2e96ab1321b38edc39b297e918f08c12ea3 Mon Sep 17 00:00:00 2001 From: xiaolin2004 <1553367438@qq.com> Date: Thu, 28 Nov 2024 14:38:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(socket):=20=E5=AE=9E=E7=8E=B0shutdown?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=B0=83=E7=94=A8=E7=9A=84=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E5=B9=B6=E5=90=AF=E7=94=A8=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/src/net/socket/base.rs | 2 ++ kernel/src/net/socket/common/shutdown.rs | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/kernel/src/net/socket/base.rs b/kernel/src/net/socket/base.rs index 6b38f181..a7215d1a 100644 --- a/kernel/src/net/socket/base.rs +++ b/kernel/src/net/socket/base.rs @@ -118,6 +118,8 @@ pub trait Socket: Sync + Send + Debug + Any { } /// # `shutdown` fn shutdown(&self, how: ShutdownTemp) -> Result<(), SystemError> { + // TODO 构建shutdown系统调用 + // set shutdown bit Err(ENOSYS) } // sockatmark diff --git a/kernel/src/net/socket/common/shutdown.rs b/kernel/src/net/socket/common/shutdown.rs index 48bf98d2..69c90ad2 100644 --- a/kernel/src/net/socket/common/shutdown.rs +++ b/kernel/src/net/socket/common/shutdown.rs @@ -53,21 +53,21 @@ impl Shutdown { .fetch_or(SEND_SHUTDOWN, core::sync::atomic::Ordering::SeqCst); } - // pub fn is_recv_shutdown(&self) -> bool { - // self.bit.load(core::sync::atomic::Ordering::SeqCst) & RCV_SHUTDOWN != 0 - // } + pub fn is_recv_shutdown(&self) -> bool { + self.bit.load(core::sync::atomic::Ordering::SeqCst) & RCV_SHUTDOWN != 0 + } - // pub fn is_send_shutdown(&self) -> bool { - // self.bit.load(core::sync::atomic::Ordering::SeqCst) & SEND_SHUTDOWN != 0 - // } + pub fn is_send_shutdown(&self) -> bool { + self.bit.load(core::sync::atomic::Ordering::SeqCst) & SEND_SHUTDOWN != 0 + } - // pub fn is_both_shutdown(&self) -> bool { - // self.bit.load(core::sync::atomic::Ordering::SeqCst) & SHUTDOWN_MASK == SHUTDOWN_MASK - // } + pub fn is_both_shutdown(&self) -> bool { + self.bit.load(core::sync::atomic::Ordering::SeqCst) & SHUTDOWN_MASK == SHUTDOWN_MASK + } - // pub fn is_empty(&self) -> bool { - // self.bit.load(core::sync::atomic::Ordering::SeqCst) == 0 - // } + pub fn is_empty(&self) -> bool { + self.bit.load(core::sync::atomic::Ordering::SeqCst) == 0 + } pub fn from_how(how: usize) -> Self { Self::from(ShutdownBit::from_bits_truncate(how as u8))