diff options
author | rsc <rsc> | 2007-08-24 20:04:53 +0000 |
---|---|---|
committer | rsc <rsc> | 2007-08-24 20:04:53 +0000 |
commit | 4bcd0f6a77e20c78632b64fe6ee57129556a531d (patch) | |
tree | f7cc23fb6d5b036a22fe9a16819a02883493ee48 | |
parent | 1b789e1d50df4e7b98fa131fc29caf29a5f38bfa (diff) | |
download | xv6-labs-4bcd0f6a77e20c78632b64fe6ee57129556a531d.tar.gz xv6-labs-4bcd0f6a77e20c78632b64fe6ee57129556a531d.tar.bz2 xv6-labs-4bcd0f6a77e20c78632b64fe6ee57129556a531d.zip |
Add yield system call, for zombie test program (bad idea?).
-rw-r--r-- | syscall.c | 2 | ||||
-rw-r--r-- | syscall.h | 1 | ||||
-rw-r--r-- | sysproc.c | 7 | ||||
-rw-r--r-- | usys.S | 1 | ||||
-rw-r--r-- | zombie.c | 6 |
5 files changed, 16 insertions, 1 deletions
@@ -105,6 +105,7 @@ extern int sys_sbrk(void); extern int sys_unlink(void); extern int sys_wait(void); extern int sys_write(void); +extern int sys_yield(void); static int (*syscalls[])(void) = { [SYS_chdir] sys_chdir, @@ -126,6 +127,7 @@ static int (*syscalls[])(void) = { [SYS_unlink] sys_unlink, [SYS_wait] sys_wait, [SYS_write] sys_write, +[SYS_yield] sys_yield, }; void @@ -18,3 +18,4 @@ #define SYS_dup 17 #define SYS_getpid 18 #define SYS_sbrk 19 +#define SYS_yield 20 @@ -68,3 +68,10 @@ sys_sbrk(void) setupsegs(cp); return addr; } + +int +sys_yield(void) +{ + yield(); + return 0; +} @@ -27,3 +27,4 @@ STUB(chdir) STUB(dup) STUB(getpid) STUB(sbrk) +STUB(yield) @@ -7,6 +7,10 @@ int main(void) { - fork(); + int i; + + if(fork() > 0) + for(i=0; i<10; i++) + yield(); exit(); } |