Stage2: multiple user threads based on uniprocessor, see new added test race_adder and threads.
This commit is contained in:
parent
4fa4e9cab4
commit
a341b338c8
12 changed files with 254 additions and 57 deletions
|
@ -11,6 +11,9 @@ const SYSCALL_GETPID: usize = 172;
|
|||
const SYSCALL_FORK: usize = 220;
|
||||
const SYSCALL_EXEC: usize = 221;
|
||||
const SYSCALL_WAITPID: usize = 260;
|
||||
const SYSCALL_THREAD_CREATE: usize = 1000;
|
||||
const SYSCALL_GETTID: usize = 1001;
|
||||
const SYSCALL_WAITTID: usize = 1002;
|
||||
|
||||
fn syscall(id: usize, args: [usize; 3]) -> isize {
|
||||
let mut ret: isize;
|
||||
|
@ -77,4 +80,16 @@ pub fn sys_exec(path: &str, args: &[*const u8]) -> isize {
|
|||
|
||||
pub fn sys_waitpid(pid: isize, exit_code: *mut i32) -> isize {
|
||||
syscall(SYSCALL_WAITPID, [pid as usize, exit_code as usize, 0])
|
||||
}
|
||||
}
|
||||
|
||||
pub fn sys_thread_create(entry: usize) -> isize {
|
||||
syscall(SYSCALL_THREAD_CREATE, [entry, 0, 0])
|
||||
}
|
||||
|
||||
pub fn sys_gettid() -> isize {
|
||||
syscall(SYSCALL_GETTID, [0; 3])
|
||||
}
|
||||
|
||||
pub fn sys_waittid(tid: usize) -> isize {
|
||||
syscall(SYSCALL_WAITTID, [tid, 0, 0])
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue