MCPcopy Create free account
hub / github.com/chyyuu/os_kernel_lab / syscall

Function syscall

os/src/syscall/mod.rs:47–82  ·  view source on GitHub ↗
(syscall_id: usize, args: [usize; 3])

Source from the content-addressed store, hash-verified

45use thread::*;
46
47pub fn syscall(syscall_id: usize, args: [usize; 3]) -> isize {
48 match syscall_id {
49 SYSCALL_DUP => sys_dup(args[0]),
50 SYSCALL_OPEN => sys_open(args[0] as *const u8, args[1] as u32),
51 SYSCALL_CLOSE => sys_close(args[0]),
52 SYSCALL_PIPE => sys_pipe(args[0] as *mut usize),
53 SYSCALL_READ => sys_read(args[0], args[1] as *const u8, args[2]),
54 SYSCALL_WRITE => sys_write(args[0], args[1] as *const u8, args[2]),
55 SYSCALL_EXIT => sys_exit(args[0] as i32),
56 SYSCALL_SLEEP => sys_sleep(args[0]),
57 SYSCALL_YIELD => sys_yield(),
58 SYSCALL_KILL => sys_kill(args[0], args[1] as u32),
59 SYSCALL_GET_TIME => sys_get_time(),
60 SYSCALL_GETPID => sys_getpid(),
61 SYSCALL_FORK => sys_fork(),
62 SYSCALL_EXEC => sys_exec(args[0] as *const u8, args[1] as *const usize),
63 SYSCALL_WAITPID => sys_waitpid(args[0] as isize, args[1] as *mut i32),
64 SYSCALL_THREAD_CREATE => sys_thread_create(args[0], args[1]),
65 SYSCALL_GETTID => sys_gettid(),
66 SYSCALL_WAITTID => sys_waittid(args[0]) as isize,
67 SYSCALL_MUTEX_CREATE => sys_mutex_create(args[0] == 1),
68 SYSCALL_MUTEX_LOCK => sys_mutex_lock(args[0]),
69 SYSCALL_MUTEX_UNLOCK => sys_mutex_unlock(args[0]),
70 SYSCALL_SEMAPHORE_CREATE => sys_semaphore_create(args[0]),
71 SYSCALL_SEMAPHORE_UP => sys_semaphore_up(args[0]),
72 SYSCALL_SEMAPHORE_DOWN => sys_semaphore_down(args[0]),
73 SYSCALL_CONDVAR_CREATE => sys_condvar_create(args[0]),
74 SYSCALL_CONDVAR_SIGNAL => sys_condvar_signal(args[0]),
75 SYSCALL_CONDVAR_WAIT => sys_condvar_wait(args[0], args[1]),
76 SYSCALL_FRAMEBUFFER => sys_framebuffer(),
77 SYSCALL_FRAMEBUFFER_FLUSH => sys_framebuffer_flush(),
78 SYSCALL_EVENT_GET => sys_event_get(),
79 SYSCALL_KEY_PRESSED => sys_key_pressed(),
80 _ => panic!("Unsupported syscall_id: {}", syscall_id),
81 }
82}

Callers 1

trap_handlerFunction · 0.50

Calls 15

sys_dupFunction · 0.70
sys_openFunction · 0.70
sys_closeFunction · 0.70
sys_pipeFunction · 0.70
sys_readFunction · 0.70
sys_writeFunction · 0.70
sys_exitFunction · 0.70
sys_sleepFunction · 0.70
sys_yieldFunction · 0.70
sys_killFunction · 0.70
sys_get_timeFunction · 0.70
sys_getpidFunction · 0.70

Tested by

no test coverage detected