Browse Source

feat(socket): 实现shutdown系统调用的基础结构并启用相关方法

xiaolin2004 3 months ago
parent
commit
57e0b2e96a
2 changed files with 14 additions and 12 deletions
  1. 2 0
      kernel/src/net/socket/base.rs
  2. 12 12
      kernel/src/net/socket/common/shutdown.rs

+ 2 - 0
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

+ 12 - 12
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))