Pristine Ack-5.5
[Ack-5.5.git] / lang / m2 / libm2 / Unix.def
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: Unix.def,v 1.7 1994/06/24 12:50:29 ceriel Exp $
7 *)
8   FROM SYSTEM IMPORT WORD, ADDRESS;
9
10 (* Type needed for Signal *)
11   TYPE SignalPrc = PROCEDURE(INTEGER);
12   CONST
13         SIGDFL = SignalPrc(NIL);
14         SIGIGN = SignalPrc(NIL+1);
15         ILLBREAK = ADDRESS(NIL-1);
16
17   VAR errno: INTEGER;
18 (* Possible values of errno: *)
19   CONST
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 *)
54
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;
69                    argv: 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;
91   PROCEDURE pause();
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;
97                  buf: ADDRESS;
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;
108   PROCEDURE sync();
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;
117                   buf: ADDRESS;
118                   nbyte: CARDINAL) : INTEGER;
119 END Unix.