home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / EFFO / pd3.lzh / SBPROLOG2.2 / SIM / BUILTIN / syscall.c < prev    next >
Text File  |  1991-08-10  |  1KB  |  40 lines

  1.  
  2. /*    This file implements some of the syscall() facilities
  3.     for OS9 Microware C and is totally machine dependent */
  4.  
  5. #ifdef OS9
  6.  
  7. /*    syscall(n,arg1,arg2 ...) can be called with >= 1 arguments,
  8.     OS9 Microware C passes the first 2 arguments in registers,
  9.     so multi-argument functions have to be handled carefully,
  10.     all arguments are supposed to be of int size (4 bytes) */
  11.  
  12. int syscall(n,arg1,other_args)
  13. int n, arg1, other_args;
  14. {
  15.     int *args;
  16.  
  17.     args = &other_args;    /* pointer to argument array (arg2,arg3 ...) */
  18.     switch (n) {
  19.     case 1:        return (exit(arg1));                    /* exit */
  20.     case 3:        return (read(arg1,args[0],args[1]));    /* read */
  21.     case 4:        return (write(arg1,args[0],args[1]));    /* write */
  22.     case 5:        return (open(arg1,args[0]));            /* open */
  23.     case 6:        return (close(arg1));                    /* close */
  24.     case 8:        return (creat(arg1,args[0]));            /* creat */
  25.     case 10:    return (unlink(arg1));                    /* unlink */
  26.     case 12:    return (chdir(arg1));                    /* chdir */
  27.     case 15:    return (chmod(arg1,args[0]));            /* chmod */
  28.     case 19:    return (lseek(arg1,args[0],args[1]));    /* lseek */
  29.     case 33:    return (access(arg1,args[0]));            /* access */
  30.     case 37:    return (kill(arg1,args[0]));            /* kill */
  31.     case 84:    return (wait(arg1));                    /* wait */
  32.     case 136:    return (mknod(arg1,args[0]));            /* mknod */
  33.     default:    quit("This SYSCALL is not implemented !");
  34.     }
  35. }
  36.  
  37. #endif
  38.  
  39.  
  40.