Unix.def 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. (*$Foreign language module *)
  2. DEFINITION MODULE Unix;
  3. (*
  4. Module: interface to some Unix systemcalls
  5. Author: Ceriel J.H. Jacobs
  6. Version: $Id$
  7. *)
  8. FROM SYSTEM IMPORT WORD, ADDRESS;
  9. (* Type needed for Signal *)
  10. TYPE SignalPrc = PROCEDURE(INTEGER);
  11. CONST
  12. SIGDFL = SignalPrc(NIL);
  13. SIGIGN = SignalPrc(NIL+1);
  14. ILLBREAK = ADDRESS(NIL-1);
  15. VAR errno: INTEGER;
  16. (* Possible values of errno: *)
  17. CONST
  18. EPERM = 1; (* Not owner *)
  19. ENOENT = 2; (* No such file or directory *)
  20. ESRCH = 3; (* No such process *)
  21. EINTR = 4; (* Interrupted system call *)
  22. EIO = 5; (* I/O error *)
  23. ENXIO = 6; (* No such device or address *)
  24. E2BIG = 7; (* Arg list too long *)
  25. ENOEXEC = 8; (* Exec format error *)
  26. EBADF = 9; (* Bad file number *)
  27. ECHILD = 10; (* No child processes *)
  28. EAGAIN = 11; (* No more processes *)
  29. ENOMEM = 12; (* Not enough space *)
  30. EACCES = 13; (* Permission denied *)
  31. EFAULT = 14; (* Bad address *)
  32. ENOTBLK = 15; (* Block device required *)
  33. EBUSY = 16; (* Mount device busy *)
  34. EEXIST = 17; (* File exists *)
  35. EXDEV = 18; (* Cross-device link *)
  36. ENODEV = 19; (* No such device *)
  37. ENOTDIR = 20; (* Not a directory *)
  38. EISDIR = 21; (* Is a directory *)
  39. EINVAL = 22; (* Invalid argument *)
  40. ENFILE = 23; (* File table overflow *)
  41. EMFILE = 24; (* Too many open files *)
  42. ENOTTY = 25; (* Not a typewriter *)
  43. ETXTBSY = 26; (* Text file busy *)
  44. EFBIG = 27; (* File too large *)
  45. ENOSPC = 28; (* No space left on device *)
  46. ESPIPE = 29; (* Illegal seek *)
  47. EROFS = 30; (* Read-only file system *)
  48. EMLINK = 31; (* Too many links *)
  49. EPIPE = 32; (* Broken pipe *)
  50. EDOM = 33; (* Math argument *)
  51. ERANGE = 34; (* Result too large *)
  52. PROCEDURE access(path: ADDRESS; amode : INTEGER) : INTEGER;
  53. PROCEDURE acct(path: ADDRESS) : INTEGER;
  54. PROCEDURE alarm(sec: CARDINAL) : CARDINAL;
  55. PROCEDURE brk(endds: ADDRESS) : INTEGER;
  56. PROCEDURE sbrk(incr: INTEGER) : ADDRESS;
  57. PROCEDURE chdir(path: ADDRESS) : INTEGER;
  58. PROCEDURE chmod(path: ADDRESS; mode: INTEGER) : INTEGER;
  59. PROCEDURE chown(path: ADDRESS; owner, group: INTEGER) : INTEGER;
  60. PROCEDURE chroot(path: ADDRESS) : INTEGER;
  61. PROCEDURE close(fildes: INTEGER) : INTEGER;
  62. PROCEDURE creat(path: ADDRESS;
  63. mode: INTEGER) : INTEGER;
  64. PROCEDURE dup(fildes: INTEGER) : INTEGER;
  65. PROCEDURE execve(path: ADDRESS;
  66. argv: ADDRESS;
  67. envp: ADDRESS) : INTEGER;
  68. PROCEDURE exit(status: INTEGER);
  69. (* Sys5 *) PROCEDURE fcntl(fildes, request, arg: INTEGER) : INTEGER;
  70. PROCEDURE ftime(bufp:ADDRESS) : INTEGER;
  71. PROCEDURE fork() : INTEGER;
  72. PROCEDURE getpid() : INTEGER;
  73. PROCEDURE getppid() : INTEGER;
  74. PROCEDURE getuid() : INTEGER;
  75. PROCEDURE geteuid() : INTEGER;
  76. PROCEDURE getgid() : INTEGER;
  77. PROCEDURE getegid() : INTEGER;
  78. PROCEDURE ioctl(fildes, request: INTEGER; arg: ADDRESS) : INTEGER;
  79. PROCEDURE stty(fildes: INTEGER; buf: ADDRESS) : INTEGER;
  80. PROCEDURE gtty(fildes: INTEGER; buf: ADDRESS) : INTEGER;
  81. PROCEDURE kill(pid, sig: INTEGER) : INTEGER;
  82. PROCEDURE link(path1, path2: ADDRESS) : INTEGER;
  83. PROCEDURE lseek(fildes: INTEGER; offset: LONGINT; whence: INTEGER) : LONGINT;
  84. PROCEDURE mknod(path: ADDRESS; mode, dev: INTEGER) : INTEGER;
  85. PROCEDURE mount(spec, dir: ADDRESS; rwflag: INTEGER) : INTEGER;
  86. PROCEDURE nice(incr: INTEGER) : INTEGER;
  87. PROCEDURE open(path: ADDRESS; oflag: INTEGER) : INTEGER;
  88. PROCEDURE pause();
  89. PROCEDURE pipe(fildes: ADDRESS) : INTEGER;
  90. PROCEDURE profil(buff: ADDRESS;
  91. bufsiz, offset, scale: INTEGER);
  92. PROCEDURE ptrace(request, pid, addr, data: WORD) : INTEGER;
  93. PROCEDURE read(fildes: INTEGER;
  94. buf: ADDRESS;
  95. nbyte: CARDINAL) : INTEGER;
  96. PROCEDURE setuid(uid: INTEGER) : INTEGER;
  97. PROCEDURE setgid(gid: INTEGER) : INTEGER;
  98. PROCEDURE signal(sig: INTEGER;
  99. func: SignalPrc) : SignalPrc;
  100. PROCEDURE sigtrp(trapno, signo: INTEGER) : INTEGER;
  101. (* Let Unix signal signo cause EM trap trapno to occur *)
  102. PROCEDURE stat(path: ADDRESS; statbuf: ADDRESS) : INTEGER;
  103. PROCEDURE fstat(fildes: INTEGER; statbuf: ADDRESS) : INTEGER;
  104. PROCEDURE stime(t: LONGINT) : INTEGER;
  105. PROCEDURE sync();
  106. PROCEDURE time(tloc: ADDRESS) : LONGINT;
  107. PROCEDURE times(buffer: ADDRESS) : LONGINT;
  108. PROCEDURE umask(cmask: INTEGER) : INTEGER;
  109. PROCEDURE umount(spec: ADDRESS) : INTEGER;
  110. PROCEDURE unlink(path: ADDRESS) : INTEGER;
  111. PROCEDURE utime(path: ADDRESS; times: ADDRESS) : INTEGER;
  112. PROCEDURE wait(VAR statloc: INTEGER): INTEGER;
  113. PROCEDURE write(fildes: INTEGER;
  114. buf: ADDRESS;
  115. nbyte: CARDINAL) : INTEGER;
  116. END Unix.