diff options
| -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();  } | 
