Selaa lähdekoodia

cleanup codes

Samuka007 1 viikko sitten
vanhempi
commit
9700b685d6

+ 18 - 52
kernel/src/arch/x86_64/syscall/mod.rs

@@ -1,7 +1,7 @@
 use crate::{
     arch::{
         ipc::signal::X86_64SignalArch,
-        syscall::nr::{SysCall, SYS_ARCH_PRCTL, SYS_RT_SIGRETURN},
+        syscall::nr::{SYS_ARCH_PRCTL, SYS_RT_SIGRETURN},
         CurrentIrqArch,
     },
     exception::InterruptArch,
@@ -11,6 +11,7 @@ use crate::{
     process::ProcessManager,
     syscall::{Syscall, SYS_SCHED},
 };
+use log::debug;
 use system_error::SystemError;
 
 use super::{
@@ -52,7 +53,7 @@ macro_rules! syscall_return {
 
         if $show {
             let pid = ProcessManager::current_pcb().pid();
-            log::debug!("[SYS] [Pid: {:?}] [Retn: {:?}]", pid, ret as i64);
+            debug!("syscall return:pid={:?},ret= {:?}\n", pid, ret as isize);
         }
 
         unsafe {
@@ -62,24 +63,6 @@ macro_rules! syscall_return {
     }};
 }
 
-macro_rules! normal_syscall_return {
-    ($val:expr, $regs:expr, $show:expr) => {{
-        let ret = $val;
-
-        if $show {
-            let pid = ProcessManager::current_pcb().pid();
-            log::debug!("[SYS] [Pid: {:?}] [Retn: {:?}]", pid, ret);
-        }
-
-        $regs.rax = ret.unwrap_or_else(|e| e.to_posix_errno() as usize) as u64;
-
-        unsafe {
-            CurrentIrqArch::interrupt_disable();
-        }
-        return;
-    }};
-}
-
 #[no_mangle]
 pub extern "sysv64" fn syscall_handler(frame: &mut TrapFrame) {
     // 系统调用进入时,把系统调用号存入errcode字段,以便在syscall_handler退出后,仍能获取到系统调用号
@@ -106,37 +89,15 @@ pub extern "sysv64" fn syscall_handler(frame: &mut TrapFrame) {
     ];
     mfence();
     let pid = ProcessManager::current_pcb().pid();
-    let mut show = (syscall_num != SYS_SCHED) && (pid.data() >= 7);
-    // false;
-
-    let to_print = SysCall::try_from(syscall_num);
-    if let Ok(to_print) = to_print {
-        use SysCall::*;
-        match to_print {
-            SYS_ACCEPT | SYS_ACCEPT4 | SYS_BIND | SYS_CONNECT | SYS_SHUTDOWN | SYS_LISTEN => {
-                // show &= false;
-            }
-            SYS_RECVFROM | SYS_SENDTO | SYS_SENDMSG | SYS_RECVMSG => {
-                show &= false;
-            }
-            SYS_SOCKET | SYS_GETSOCKNAME | SYS_GETPEERNAME | SYS_SOCKETPAIR | SYS_SETSOCKOPT
-            | SYS_GETSOCKOPT => {
-                show &= false;
-            }
-            SYS_OPEN | SYS_OPENAT | SYS_CREAT | SYS_CLOSE => {
-                show &= false;
-            }
-            SYS_READ | SYS_WRITE | SYS_READV | SYS_WRITEV | SYS_PREAD64 | SYS_PWRITE64
-            | SYS_PREADV | SYS_PWRITEV | SYS_PREADV2 => {
-                show &= false;
-            }
-            _ => {
-                show &= false;
-            }
-        }
-        if show {
-            log::debug!("[SYS] [Pid: {:?}] [Call: {:?}]", pid, to_print);
-        }
+    let show = false;
+    // let show = if syscall_num != SYS_SCHED && pid.data() >= 7 {
+    //     true
+    // } else {
+    //     false
+    // };
+
+    if show {
+        debug!("syscall: pid: {:?}, num={:?}\n", pid, syscall_num);
     }
 
     // Arch specific syscall
@@ -149,7 +110,12 @@ pub extern "sysv64" fn syscall_handler(frame: &mut TrapFrame) {
             );
         }
         SYS_ARCH_PRCTL => {
-            normal_syscall_return!(Syscall::arch_prctl(args[0], args[1]), frame, show);
+            syscall_return!(
+                Syscall::arch_prctl(args[0], args[1])
+                    .unwrap_or_else(|e| e.to_posix_errno() as usize),
+                frame,
+                show
+            );
         }
         _ => {}
     }

+ 0 - 378
kernel/src/arch/x86_64/syscall/nr.rs

@@ -355,381 +355,3 @@ pub const SYS_WAIT4: usize = 61;
 pub const SYS_WAITID: usize = 247;
 pub const SYS_WRITE: usize = 1;
 pub const SYS_WRITEV: usize = 20;
-
-use num_traits::{FromPrimitive, ToPrimitive};
-use system_error::SystemError;
-#[allow(non_camel_case_types)]
-#[derive(Debug, Clone, Copy, FromPrimitive, ToPrimitive, PartialEq, Eq)]
-pub enum SysCall {
-    SYS__SYSCTL = 156,
-    SYS_ACCEPT = 43,
-    SYS_ACCEPT4 = 288,
-    SYS_ACCESS = 21,
-    SYS_ACCT = 163,
-    SYS_ADD_KEY = 248,
-    SYS_ADJTIMEX = 159,
-    SYS_AFS_SYSCALL = 183,
-    SYS_ALARM = 37,
-    SYS_ARCH_PRCTL = 158,
-    SYS_BIND = 49,
-    SYS_BPF = 321,
-    SYS_BRK = 12,
-    SYS_CAPGET = 125,
-    SYS_CAPSET = 126,
-    SYS_CHDIR = 80,
-    SYS_CHMOD = 90,
-    SYS_CHOWN = 92,
-    SYS_CHROOT = 161,
-    SYS_CLOCK_ADJTIME = 305,
-    SYS_CLOCK_GETRES = 229,
-    SYS_CLOCK_GETTIME = 228,
-    SYS_CLOCK_NANOSLEEP = 230,
-    SYS_CLOCK_SETTIME = 227,
-    SYS_CLONE = 56,
-    SYS_CLONE3 = 435,
-    SYS_CLOSE = 3,
-    SYS_CLOSE_RANGE = 436,
-    SYS_CONNECT = 42,
-    SYS_COPY_FILE_RANGE = 326,
-    SYS_CREAT = 85,
-    SYS_CREATE_MODULE = 174,
-    SYS_DELETE_MODULE = 176,
-    SYS_DUP = 32,
-    SYS_DUP2 = 33,
-    SYS_DUP3 = 292,
-    SYS_EPOLL_CREATE = 213,
-    SYS_EPOLL_CREATE1 = 291,
-    SYS_EPOLL_CTL = 233,
-    SYS_EPOLL_CTL_OLD = 214,
-    SYS_EPOLL_PWAIT = 281,
-    SYS_EPOLL_PWAIT2 = 441,
-    SYS_EPOLL_WAIT = 232,
-    SYS_EPOLL_WAIT_OLD = 215,
-    SYS_EVENTFD = 284,
-    SYS_EVENTFD2 = 290,
-    SYS_EXECVE = 59,
-    SYS_EXECVEAT = 322,
-    SYS_EXIT = 60,
-    SYS_EXIT_GROUP = 231,
-    SYS_FACCESSAT = 269,
-    SYS_FACCESSAT2 = 439,
-    SYS_FADVISE64 = 221,
-    SYS_FALLOCATE = 285,
-    SYS_FANOTIFY_INIT = 300,
-    SYS_FANOTIFY_MARK = 301,
-    SYS_FCHDIR = 81,
-    SYS_FCHMOD = 91,
-    SYS_FCHMODAT = 268,
-    SYS_FCHOWN = 93,
-    SYS_FCHOWNAT = 260,
-    SYS_FCNTL = 72,
-    SYS_FDATASYNC = 75,
-    SYS_FGETXATTR = 193,
-    SYS_FINIT_MODULE = 313,
-    SYS_FLISTXATTR = 196,
-    SYS_FLOCK = 73,
-    SYS_FORK = 57,
-    SYS_FREMOVEXATTR = 199,
-    SYS_FSCONFIG = 431,
-    SYS_FSETXATTR = 190,
-    SYS_FSMOUNT = 432,
-    SYS_FSOPEN = 430,
-    SYS_FSPICK = 433,
-    SYS_FSTAT = 5,
-    SYS_FSTATFS = 138,
-    SYS_FSYNC = 74,
-    SYS_FTRUNCATE = 77,
-    SYS_FUTEX = 202,
-    SYS_FUTIMESAT = 261,
-    SYS_GET_KERNEL_SYMS = 177,
-    SYS_GET_MEMPOLICY = 239,
-    SYS_GET_ROBUST_LIST = 274,
-    SYS_GET_THREAD_AREA = 211,
-    SYS_GETCPU = 309,
-    SYS_GETCWD = 79,
-    SYS_GETDENTS = 78,
-    SYS_GETDENTS64 = 217,
-    SYS_GETEGID = 108,
-    SYS_GETEUID = 107,
-    SYS_GETGID = 104,
-    SYS_GETGROUPS = 115,
-    SYS_GETITIMER = 36,
-    SYS_GETPEERNAME = 52,
-    SYS_GETPGID = 121,
-    SYS_GETPGRP = 111,
-    SYS_GETPID = 39,
-    SYS_GETPMSG = 181,
-    SYS_GETPPID = 110,
-    SYS_GETPRIORITY = 140,
-    SYS_GETRANDOM = 318,
-    SYS_GETRESGID = 120,
-    SYS_GETRESUID = 118,
-    SYS_GETRLIMIT = 97,
-    SYS_GETRUSAGE = 98,
-    SYS_GETSID = 124,
-    SYS_GETSOCKNAME = 51,
-    SYS_GETSOCKOPT = 55,
-    SYS_GETTID = 186,
-    SYS_GETTIMEOFDAY = 96,
-    SYS_GETUID = 102,
-    SYS_GETXATTR = 191,
-    SYS_INIT_MODULE = 175,
-    SYS_INOTIFY_ADD_WATCH = 254,
-    SYS_INOTIFY_INIT = 253,
-    SYS_INOTIFY_INIT1 = 294,
-    SYS_INOTIFY_RM_WATCH = 255,
-    SYS_IO_CANCEL = 210,
-    SYS_IO_DESTROY = 207,
-    SYS_IO_GETEVENTS = 208,
-    SYS_IO_PGETEVENTS = 333,
-    SYS_IO_SETUP = 206,
-    SYS_IO_SUBMIT = 209,
-    SYS_IO_URING_ENTER = 426,
-    SYS_IO_URING_REGISTER = 427,
-    SYS_IO_URING_SETUP = 425,
-    SYS_IOCTL = 16,
-    SYS_IOPERM = 173,
-    SYS_IOPL = 172,
-    SYS_IOPRIO_GET = 252,
-    SYS_IOPRIO_SET = 251,
-    SYS_KCMP = 312,
-    SYS_KEXEC_FILE_LOAD = 320,
-    SYS_KEXEC_LOAD = 246,
-    SYS_KEYCTL = 250,
-    SYS_KILL = 62,
-    SYS_LCHOWN = 94,
-    SYS_LGETXATTR = 192,
-    SYS_LINK = 86,
-    SYS_LINKAT = 265,
-    SYS_LISTEN = 50,
-    SYS_LISTXATTR = 194,
-    SYS_LLISTXATTR = 195,
-    SYS_LOOKUP_DCOOKIE = 212,
-    SYS_LREMOVEXATTR = 198,
-    SYS_LSEEK = 8,
-    SYS_LSETXATTR = 189,
-    SYS_LSTAT = 6,
-    SYS_MADVISE = 28,
-    SYS_MBIND = 237,
-    SYS_MEMBARRIER = 324,
-    SYS_MEMFD_CREATE = 319,
-    SYS_MIGRATE_PAGES = 256,
-    SYS_MINCORE = 27,
-    SYS_MKDIR = 83,
-    SYS_MKDIRAT = 258,
-    SYS_MKNOD = 133,
-    SYS_MKNODAT = 259,
-    SYS_MLOCK = 149,
-    SYS_MLOCK2 = 325,
-    SYS_MLOCKALL = 151,
-    SYS_MMAP = 9,
-    SYS_MODIFY_LDT = 154,
-    SYS_MOUNT = 165,
-    SYS_MOUNT_SETATTR = 442,
-    SYS_MOVE_MOUNT = 429,
-    SYS_MOVE_PAGES = 279,
-    SYS_MPROTECT = 10,
-    SYS_MQ_GETSETATTR = 245,
-    SYS_MQ_NOTIFY = 244,
-    SYS_MQ_OPEN = 240,
-    SYS_MQ_TIMEDRECEIVE = 243,
-    SYS_MQ_TIMEDSEND = 242,
-    SYS_MQ_UNLINK = 241,
-    SYS_MREMAP = 25,
-    SYS_MSGCTL = 71,
-    SYS_MSGGET = 68,
-    SYS_MSGRCV = 70,
-    SYS_MSGSND = 69,
-    SYS_MSYNC = 26,
-    SYS_MUNLOCK = 150,
-    SYS_MUNLOCKALL = 152,
-    SYS_MUNMAP = 11,
-    SYS_NAME_TO_HANDLE_AT = 303,
-    SYS_NANOSLEEP = 35,
-    SYS_NEWFSTATAT = 262,
-    SYS_NFSSERVCTL = 180,
-    SYS_OPEN = 2,
-    SYS_OPEN_BY_HANDLE_AT = 304,
-    SYS_OPEN_TREE = 428,
-    SYS_OPENAT = 257,
-    SYS_OPENAT2 = 437,
-    SYS_PAUSE = 34,
-    SYS_PERF_EVENT_OPEN = 298,
-    SYS_PERSONALITY = 135,
-    SYS_PIDFD_GETFD = 438,
-    SYS_PIDFD_OPEN = 434,
-    SYS_PIDFD_SEND_SIGNAL = 424,
-    SYS_PIPE = 22,
-    SYS_PIPE2 = 293,
-    SYS_PIVOT_ROOT = 155,
-    SYS_PKEY_ALLOC = 330,
-    SYS_PKEY_FREE = 331,
-    SYS_PKEY_MPROTECT = 329,
-    SYS_POLL = 7,
-    SYS_PPOLL = 271,
-    SYS_PRCTL = 157,
-    SYS_PREAD64 = 17,
-    SYS_PREADV = 295,
-    SYS_PREADV2 = 327,
-    SYS_PRLIMIT64 = 302,
-    SYS_PROCESS_MADVISE = 440,
-    SYS_PROCESS_VM_READV = 310,
-    SYS_PROCESS_VM_WRITEV = 311,
-    SYS_PSELECT6 = 270,
-    SYS_PTRACE = 101,
-    SYS_PUTPMSG = 182,
-    SYS_PWRITE64 = 18,
-    SYS_PWRITEV = 296,
-    SYS_PWRITEV2 = 328,
-    SYS_QUERY_MODULE = 178,
-    SYS_QUOTACTL = 179,
-    SYS_READ = 0,
-    SYS_READAHEAD = 187,
-    SYS_READLINK = 89,
-    SYS_READLINKAT = 267,
-    SYS_READV = 19,
-    SYS_REBOOT = 169,
-    SYS_RECVFROM = 45,
-    SYS_RECVMMSG = 299,
-    SYS_RECVMSG = 47,
-    SYS_REMAP_FILE_PAGES = 216,
-    SYS_REMOVEXATTR = 197,
-    SYS_RENAME = 82,
-    SYS_RENAMEAT = 264,
-    SYS_RENAMEAT2 = 316,
-    SYS_REQUEST_KEY = 249,
-    SYS_RESTART_SYSCALL = 219,
-    SYS_RMDIR = 84,
-    SYS_RSEQ = 334,
-    SYS_RT_SIGACTION = 13,
-    SYS_RT_SIGPENDING = 127,
-    SYS_RT_SIGPROCMASK = 14,
-    SYS_RT_SIGQUEUEINFO = 129,
-    SYS_RT_SIGRETURN = 15,
-    SYS_RT_SIGSUSPEND = 130,
-    SYS_RT_SIGTIMEDWAIT = 128,
-    SYS_RT_TGSIGQUEUEINFO = 297,
-    SYS_SCHED_GET_PRIORITY_MAX = 146,
-    SYS_SCHED_GET_PRIORITY_MIN = 147,
-    SYS_SCHED_GETAFFINITY = 204,
-    SYS_SCHED_GETATTR = 315,
-    SYS_SCHED_GETPARAM = 143,
-    SYS_SCHED_GETSCHEDULER = 145,
-    SYS_SCHED_RR_GET_INTERVAL = 148,
-    SYS_SCHED_SETAFFINITY = 203,
-    SYS_SCHED_SETATTR = 314,
-    SYS_SCHED_SETPARAM = 142,
-    SYS_SCHED_SETSCHEDULER = 144,
-    SYS_SCHED_YIELD = 24,
-    SYS_SECCOMP = 317,
-    SYS_SECURITY = 185,
-    SYS_SELECT = 23,
-    SYS_SEMCTL = 66,
-    SYS_SEMGET = 64,
-    SYS_SEMOP = 65,
-    SYS_SEMTIMEDOP = 220,
-    SYS_SENDFILE = 40,
-    SYS_SENDMMSG = 307,
-    SYS_SENDMSG = 46,
-    SYS_SENDTO = 44,
-    SYS_SET_MEMPOLICY = 238,
-    SYS_SET_ROBUST_LIST = 273,
-    SYS_SET_THREAD_AREA = 205,
-    SYS_SET_TID_ADDRESS = 218,
-    SYS_SETDOMAINNAME = 171,
-    SYS_SETFSGID = 123,
-    SYS_SETFSUID = 122,
-    SYS_SETGID = 106,
-    SYS_SETGROUPS = 116,
-    SYS_SETHOSTNAME = 170,
-    SYS_SETITIMER = 38,
-    SYS_SETNS = 308,
-    SYS_SETPGID = 109,
-    SYS_SETPRIORITY = 141,
-    SYS_SETREGID = 114,
-    SYS_SETRESGID = 119,
-    SYS_SETRESUID = 117,
-    SYS_SETREUID = 113,
-    SYS_SETRLIMIT = 160,
-    SYS_SETSID = 112,
-    SYS_SETSOCKOPT = 54,
-    SYS_SETTIMEOFDAY = 164,
-    SYS_SETUID = 105,
-    SYS_SETXATTR = 188,
-    SYS_SHMAT = 30,
-    SYS_SHMCTL = 31,
-    SYS_SHMDT = 67,
-    SYS_SHMGET = 29,
-    SYS_SHUTDOWN = 48,
-    SYS_SIGALTSTACK = 131,
-    SYS_SIGNALFD = 282,
-    SYS_SIGNALFD4 = 289,
-    SYS_SOCKET = 41,
-    SYS_SOCKETPAIR = 53,
-    SYS_SPLICE = 275,
-    SYS_STAT = 4,
-    SYS_STATFS = 137,
-    SYS_STATX = 332,
-    SYS_SWAPOFF = 168,
-    SYS_SWAPON = 167,
-    SYS_SYMLINK = 88,
-    SYS_SYMLINKAT = 266,
-    SYS_SYNC = 162,
-    SYS_SYNC_FILE_RANGE = 277,
-    SYS_SYNCFS = 306,
-    SYS_SYSFS = 139,
-    SYS_SYSINFO = 99,
-    SYS_SYSLOG = 103,
-    SYS_TEE = 276,
-    SYS_TGKILL = 234,
-    SYS_TIME = 201,
-    SYS_TIMER_CREATE = 222,
-    SYS_TIMER_DELETE = 226,
-    SYS_TIMER_GETOVERRUN = 225,
-    SYS_TIMER_GETTIME = 224,
-    SYS_TIMER_SETTIME = 223,
-    SYS_TIMERFD_CREATE = 283,
-    SYS_TIMERFD_GETTIME = 287,
-    SYS_TIMERFD_SETTIME = 286,
-    SYS_TIMES = 100,
-    SYS_TKILL = 200,
-    SYS_TRUNCATE = 76,
-    SYS_TUXCALL = 184,
-    SYS_UMASK = 95,
-    SYS_UMOUNT2 = 166,
-    SYS_UNAME = 63,
-    SYS_UNLINK = 87,
-    SYS_UNLINKAT = 263,
-    SYS_UNSHARE = 272,
-    SYS_USELIB = 134,
-    SYS_USERFAULTFD = 323,
-    SYS_USTAT = 136,
-    SYS_UTIME = 132,
-    SYS_UTIMENSAT = 280,
-    SYS_UTIMES = 235,
-    SYS_VFORK = 58,
-    SYS_VHANGUP = 153,
-    SYS_VMSPLICE = 278,
-    SYS_VSERVER = 236,
-    SYS_WAIT4 = 61,
-    SYS_WAITID = 247,
-    SYS_WRITE = 1,
-    SYS_WRITEV = 20,
-}
-
-impl TryFrom<usize> for SysCall {
-    type Error = SystemError;
-
-    fn try_from(value: usize) -> Result<Self, Self::Error> {
-        match <Self as FromPrimitive>::from_usize(value) {
-            Some(p) => Ok(p),
-            None => Err(SystemError::EINVAL),
-        }
-    }
-}
-
-impl From<SysCall> for usize {
-    fn from(value: SysCall) -> Self {
-        <SysCall as ToPrimitive>::to_usize(&value).unwrap()
-    }
-}

+ 1 - 0
kernel/src/net/socket/buffer.rs

@@ -1,3 +1,4 @@
+#!(allow(unused))
 use alloc::vec::Vec;
 
 use alloc::sync::Arc;

+ 3 - 1
kernel/src/net/socket/common/shutdown.rs

@@ -1,4 +1,6 @@
-use core::{default, sync::atomic::AtomicU8};
+// TODO: 其他模块需要实现shutdown的具体逻辑
+#![allow(dead_code)]
+use core::sync::atomic::AtomicU8;
 
 use system_error::SystemError;
 

+ 0 - 5
kernel/src/net/socket/inet/datagram/inner.rs

@@ -122,11 +122,6 @@ impl BoundUdp {
         })
     }
 
-    #[inline]
-    pub fn can_recv(&self) -> bool {
-        self.with_socket(|socket| socket.can_recv())
-    }
-
     pub fn try_send(
         &self,
         buf: &[u8],

+ 1 - 11
kernel/src/net/socket/inet/datagram/mod.rs

@@ -101,6 +101,7 @@ impl UdpSocket {
     }
 
     #[inline]
+    #[allow(dead_code)]
     pub fn can_send(&self) -> bool {
         self.event().contains(EP::EPOLLOUT)
     }
@@ -130,17 +131,6 @@ impl UdpSocket {
         return result;
     }
 
-    pub fn read(&self, buf: &mut [u8]) -> Result<usize, SystemError> {
-        if self.is_nonblock() {
-            return self.try_recv(buf).map(|(size, _)| size);
-        } else {
-            // return self
-            //     .wait_queue
-            //     .busy_wait(EP::EPOLLIN, || self.try_recv(buf).map(|(size, _)| size));
-            todo!()
-        }
-    }
-
     pub fn event(&self) -> EPollEventType {
         let mut event = EPollEventType::empty();
         match self.inner.read().as_ref().unwrap() {

+ 15 - 18
kernel/src/net/syscall.rs

@@ -319,29 +319,26 @@ impl Syscall {
     ///
     /// @return 成功返回接收的字节数,失败返回错误码
     pub fn recvmsg(fd: usize, msg: &mut MsgHdr, flags: u32) -> Result<usize, SystemError> {
-        todo!("recvmsg, fd={}, msg={:?}, flags={}", fd, msg, flags);
-        // // 检查每个缓冲区地址是否合法,生成iovecs
-        // let mut iovs = unsafe { IoVecs::from_user(msg.msg_iov, msg.msg_iovlen, true)? };
+        // 检查每个缓冲区地址是否合法,生成iovecs
+        let mut iovs = unsafe {
+            crate::filesystem::vfs::syscall::IoVecs::from_user(msg.msg_iov, msg.msg_iovlen, true)?
+        };
 
-        // let socket: Arc<socket::Inode> = ProcessManager::current_pcb()
-        //     .get_socket(fd as i32)
-        //     .ok_or(SystemError::EBADF)?;
+        let socket: Arc<socket::Inode> = ProcessManager::current_pcb()
+            .get_socket(fd as i32)
+            .ok_or(SystemError::EBADF)?;
 
-        // let flags = socket::PMSG::from_bits_truncate(flags as u32);
+        let flags = socket::PMSG::from_bits_truncate(flags);
 
-        // let mut buf = iovs.new_buf(true);
-        // // 从socket中读取数据
-        // let recv_size = socket.recv_msg(&mut buf, flags)?;
-        // drop(socket);
+        let mut buf = iovs.new_buf(true);
+        // 从socket中读取数据
+        let recv_size = socket.recv(&mut buf, flags)?;
+        drop(socket);
 
-        // // 将数据写入用户空间的iovecs
-        // iovs.scatter(&buf[..recv_size]);
+        // 将数据写入用户空间的iovecs
+        iovs.scatter(&buf[..recv_size]);
 
-        // // let sockaddr_in = SockAddr::from(endpoint);
-        // // unsafe {
-        // //     sockaddr_in.write_to_user(msg.msg_name, &mut msg.msg_namelen)?;
-        // // }
-        // return Ok(recv_size);
+        return Ok(recv_size);
     }
 
     /// @brief sys_listen系统调用的实际执行函数