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