find out the STUPID bug. recover syscall consts.

This commit is contained in:
WangRunji 2019-03-19 23:11:41 +08:00 committed by Tate Tian
parent 6e9f00b5db
commit c1c61c4e21
2 changed files with 369 additions and 38 deletions

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

@ -12,9 +12,13 @@ use {fs, process, std, vm};
//use std::libc_fs as fs;
//use std::libc_io as io;
use self::consts::*;
use fs::File;
mod consts;
#[no_mangle]
#[deny(unreachable_patterns)]
pub extern "C" fn dispatch_syscall(
num: u32,
arg0: isize,
@ -26,37 +30,37 @@ pub extern "C" fn dispatch_syscall(
) -> isize {
debug!("syscall {}: {:#x}, {:#x}, {:#x}, {:#x}, {:#x}, {:#x}", num, arg0, arg1, arg2, arg3, arg4, arg5);
let ret = match num {
002 => do_open(arg0 as *const i8, arg1 as u32, arg2 as u32),
003 => do_close(arg0 as FileDesc),
000 => do_read(arg0 as FileDesc, arg1 as *mut u8, arg2 as usize),
001 => do_write(arg0 as FileDesc, arg1 as *const u8, arg2 as usize),
019 => do_readv(arg0 as FileDesc, arg1 as *mut iovec_t, arg2 as i32),
020 => do_writev(arg0 as FileDesc, arg1 as *mut iovec_t, arg2 as i32),
004 => do_stat(arg0 as *const i8, arg1 as *mut fs::Stat),
005 => do_fstat(arg0 as FileDesc, arg1 as *mut fs::Stat),
006 => do_lstat(arg0 as *const i8, arg1 as *mut fs::Stat),
008 => do_lseek(arg0 as FileDesc, arg1 as off_t, arg2 as i32),
074 => do_fsync(arg0 as FileDesc),
075 => do_fdatasync(arg0 as FileDesc),
076 => do_truncate(arg0 as *const i8, arg1 as usize),
077 => do_ftruncate(arg0 as FileDesc, arg1 as usize),
217 => do_getdents64(arg0 as FileDesc, arg1 as *mut u8, arg2 as usize),
162 => do_sync(),
079 => do_getcwd(arg0 as *mut u8, arg1 as usize),
SYS_OPEN => do_open(arg0 as *const i8, arg1 as u32, arg2 as u32),
SYS_CLOSE => do_close(arg0 as FileDesc),
SYS_READ => do_read(arg0 as FileDesc, arg1 as *mut u8, arg2 as usize),
SYS_WRITE => do_write(arg0 as FileDesc, arg1 as *const u8, arg2 as usize),
SYS_READV => do_readv(arg0 as FileDesc, arg1 as *mut iovec_t, arg2 as i32),
SYS_WRITEV => do_writev(arg0 as FileDesc, arg1 as *mut iovec_t, arg2 as i32),
SYS_STAT => do_stat(arg0 as *const i8, arg1 as *mut fs::Stat),
SYS_FSTAT => do_fstat(arg0 as FileDesc, arg1 as *mut fs::Stat),
SYS_LSTAT => do_lstat(arg0 as *const i8, arg1 as *mut fs::Stat),
SYS_LSEEK => do_lseek(arg0 as FileDesc, arg1 as off_t, arg2 as i32),
SYS_FSYNC => do_fsync(arg0 as FileDesc),
SYS_FDATASYNC => do_fdatasync(arg0 as FileDesc),
SYS_TRUNCATE => do_truncate(arg0 as *const i8, arg1 as usize),
SYS_FTRUNCATE => do_ftruncate(arg0 as FileDesc, arg1 as usize),
SYS_GETDENTS64 => do_getdents64(arg0 as FileDesc, arg1 as *mut u8, arg2 as usize),
SYS_SYNC => do_sync(),
SYS_GETCWD => do_getcwd(arg0 as *mut u8, arg1 as usize),
060 => do_exit(arg0 as i32),
360 => do_spawn(
SYS_EXIT => do_exit(arg0 as i32),
SYS_SPAWN => do_spawn(
arg0 as *mut u32,
arg1 as *mut i8,
arg2 as *const *const i8,
arg3 as *const *const i8,
arg4 as *const FdOp,
),
061 => do_wait4(arg0 as i32, arg1 as *mut i32),
039 => do_getpid(),
110 => do_getppid(),
SYS_WAIT4 => do_wait4(arg0 as i32, arg1 as *mut i32),
SYS_GETPID => do_getpid(),
SYS_GETPPID => do_getppid(),
009 => do_mmap(
SYS_MMAP => do_mmap(
arg0 as usize,
arg1 as usize,
arg2 as i32,
@ -64,23 +68,23 @@ pub extern "C" fn dispatch_syscall(
arg4 as FileDesc,
arg5 as off_t,
),
011 => do_munmap(arg0 as usize, arg1 as usize),
025 => do_mremap(
SYS_MUNMAP => do_munmap(arg0 as usize, arg1 as usize),
SYS_MREMAP => do_mremap(
arg0 as usize,
arg1 as usize,
arg2 as usize,
arg3 as i32,
arg4 as usize,
),
012 => do_brk(arg0 as usize),
SYS_BRK => do_brk(arg0 as usize),
022 => do_pipe2(arg0 as *mut i32, 0),
293 => do_pipe2(arg0 as *mut i32, arg1 as u32),
032 => do_dup(arg0 as FileDesc),
033 => do_dup2(arg0 as FileDesc, arg1 as FileDesc),
292 => do_dup3(arg0 as FileDesc, arg1 as FileDesc, arg2 as u32),
SYS_PIPE => do_pipe2(arg0 as *mut i32, 0),
SYS_PIPE2 => do_pipe2(arg0 as *mut i32, arg1 as u32),
SYS_DUP => do_dup(arg0 as FileDesc),
SYS_DUP2 => do_dup2(arg0 as FileDesc, arg1 as FileDesc),
SYS_DUP3 => do_dup3(arg0 as FileDesc, arg1 as FileDesc, arg2 as u32),
096 => do_gettimeofday(arg0 as *mut timeval_t),
SYS_GETTIMEOFDAY => do_gettimeofday(arg0 as *mut timeval_t),
_ => do_unknown(num),
};
@ -174,13 +178,11 @@ fn do_open(path: *const i8, flags: u32, mode: u32) -> Result<isize, Error> {
}
fn do_close(fd: FileDesc) -> Result<isize, Error> {
info!("close: fd: {}", fd);
fs::do_close(fd)?;
Ok(0)
}
fn do_read(fd: FileDesc, buf: *mut u8, size: usize) -> Result<isize, Error> {
info!("write: fd: {}, buf: {:?}, size: {}", fd, buf, size);
let safe_buf = {
check_mut_array(buf, size)?;
unsafe { std::slice::from_raw_parts_mut(buf, size) }
@ -190,7 +192,6 @@ fn do_read(fd: FileDesc, buf: *mut u8, size: usize) -> Result<isize, Error> {
}
fn do_write(fd: FileDesc, buf: *const u8, size: usize) -> Result<isize, Error> {
info!("write: fd: {}, buf: {:?}, size: {}", fd, buf, size);
let safe_buf = {
check_array(buf, size)?;
unsafe { std::slice::from_raw_parts(buf, size) }
@ -404,7 +405,6 @@ fn do_wait4(pid: i32, _exit_status: *mut i32) -> Result<isize, Error> {
}
fn do_getpid() -> Result<isize, Error> {
info!("getpid");
let pid = process::do_getpid();
Ok(pid as isize)
}
@ -454,7 +454,6 @@ fn do_gettimeofday(tv_u: *mut timeval_t) -> Result<isize, Error> {
const MAP_FAILED: *const c_void = ((-1) as i64) as *const c_void;
fn do_exit(status: i32) -> ! {
info!("exit: {}", status);
extern "C" {
fn do_exit_task() -> !;
}
@ -465,7 +464,9 @@ fn do_exit(status: i32) -> ! {
}
fn do_unknown(num: u32) -> Result<isize, Error> {
warn!("Unknown syscall (num = {})", num);
if cfg!(debug_assertions) {
//println!("[WARNING] Unknown syscall (num = {})", num);
}
Err(Error::new(ENOSYS, "Unknown syscall"))
}