Ultrix-3.1/sys/sys/sysent.c
/**********************************************************************
* Copyright (c) Digital Equipment Corporation 1984, 1985, 1986. *
* All Rights Reserved. *
* Reference "/usr/src/COPYRIGHT" for applicable restrictions. *
**********************************************************************/
/*
* SCCSID: @(#)sysent.c 3.0 4/21/86
*/
/*
* If you add/delete/change this file, make sure you update
* /usr/include/sys/systm.h!!!!
*/
/*
* Added System V Compatability calls:
* fcntl maus msgsys semsys ulimit utssys
* Ohms 4/30/1985
*
* The getfp(), ttlocl(), fperr(), errlog(), and bdflush()
* system calls were added for Unix/v7m.
*
* Fred Canter 12/10/81
*/
#include <sys/param.h>
#include <sys/systm.h>
#ifdef UCB_NET
#include <sys/socket.h>
#endif
/*
* This table is the switch used to transfer
* to the appropriate routine for processing a system call.
* Each row contains the number of arguments expected
* and a pointer to the routine.
*/
int alarm();
int chdir();
int chmod();
int chown();
int chroot();
int close();
int creat();
int dup();
int exec();
int exece();
int fcntl();
int fork();
int fstat();
int getgid();
int getpid();
int getuid();
int gtime();
int gtty();
int ioctl();
int kill();
int link();
int maus();
int msgsys();
int mknod();
int nice();
int nosys();
int nullsys();
int open();
int pause();
int pipe();
int profil();
int ptrace();
int read();
int rexit();
int saccess();
int sbreak();
int seek();
int semsys();
int setgid();
int setuid();
int smount();
int ssig();
int stat();
int stime();
int stty();
int sumount();
int ftime();
int sync();
int sysacct();
int syslock();
int sysphys();
int times();
int ulimit();
int umask();
int unlink();
int utime();
int utssys();
int wait();
int write();
int getfp();
int ttlocl();
int fperr();
int errlog();
int bdflush();
int setpgrp();
int zaptty();
int gethostid();
int sethostid();
#ifdef SELECT
int select();
#endif
int gethostname();
int sethostname();
int fpsim();
int evntflg();
int renice();
int nostk();
int nap();
int setreuid(), setregid();
int gethostid(), sethostid();
#ifdef UCB_NET
int socket(), bind(), listen(), accept(), connect(), socketpair();
int setsockopt(), getsockopt(), getsockname(), getpeername();
int shutdown();
int sendit(), recvit();
#endif
#ifdef UCB_SYMLINKS
int lstat();
int readlink();
int symlink();
#endif
#ifdef NEWLIMITS
int lim();
#endif NEWLIMITS
struct sysent sysent[SYSMAX] =
{
1, 0, nullsys, /* 0 = indir */
1, 1, rexit, /* 1 = exit */
0, 0, fork, /* 2 = fork */
3, 1, read, /* 3 = read */
3, 1, write, /* 4 = write */
3, 0, open, /* 5 = open, now 3 args */
1, 1, close, /* 6 = close */
0, 0, wait, /* 7 = wait */
2, 0, creat, /* 8 = creat */
2, 0, link, /* 9 = link */
1, 0, unlink, /* 10 = unlink */
2, 0, exec, /* 11 = exec */
1, 0, chdir, /* 12 = chdir */
0, 0, gtime, /* 13 = time */
3, 0, mknod, /* 14 = mknod */
2, 0, chmod, /* 15 = chmod */
3, 0, chown, /* 16 = chown; now 3 args */
1, 0, sbreak, /* 17 = break */
2, 0, stat, /* 18 = stat */
4, 1, seek, /* 19 = seek; now 3 args */
0, 0, getpid, /* 20 = getpid */
3, 0, smount, /* 21 = mount */
1, 0, sumount, /* 22 = umount */
1, 1, setuid, /* 23 = setuid */
0, 0, getuid, /* 24 = getuid */
2, 2, stime, /* 25 = stime */
4, 1, ptrace, /* 26 = ptrace */
1, 1, alarm, /* 27 = alarm */
2, 1, fstat, /* 28 = fstat */
0, 0, pause, /* 29 = pause */
2, 0, utime, /* 30 = utime */
2, 1, stty, /* 31 = stty */
2, 1, gtty, /* 32 = gtty */
2, 0, saccess, /* 33 = access */
1, 1, nice, /* 34 = nice */
1, 0, ftime, /* 35 = ftime; formerly sleep */
0, 0, sync, /* 36 = sync */
2, 1, kill, /* 37 = kill */
0, 0, nullsys, /* 38 = switch; inoperative */
2, 1, setpgrp, /* 39 = setpgrp */
1, 1, nosys, /* 40 = tell (obsolete) */
2, 2, dup, /* 41 = dup */
0, 0, pipe, /* 42 = pipe */
1, 0, times, /* 43 = times */
4, 0, profil, /* 44 = prof */
0, 0, nosys, /* 45 = */
1, 1, setgid, /* 46 = setgid */
0, 0, getgid, /* 47 = getgid */
2, 0, ssig, /* 48 = sig */
7, 2, msgsys, /* 49 = IPC messages */
0, 0, nosys, /* 50 = reserved for USG */
1, 0, sysacct, /* 51 = turn acct off/on */
3, 0, sysphys, /* 52 = set user physical addresses */
1, 0, syslock, /* 53 = lock user in core */
3, 0, ioctl, /* 54 = ioctl */
0, 0, nosys, /* 55 = readwrite (in abeyance) */
0, 0, nosys, /* 56 = (WAS) creat mpx comm channel */
3, 2, utssys, /* 57 = utssys */
/* 0, 0, nosys, */ /* 58 = reserved for USG */
1, 0, nosys, /* 58 = Berkeley local syscalls */
3, 0, exece, /* 59 = exece */
1, 0, umask, /* 60 = umask */
1, 0, chroot, /* 61 = chroot */
3, 1, fcntl, /* 62 = fcntl */
3, 0, ulimit, /* 63 = ulimit */
/*
* Here we end the stock V7 system calls, and
* start the ULTRIX-11 system calls.
*/
4, 0, evntflg, /* 64 = eventflag syscall */
2, 0, getfp, /* 65 = for floating point sim. */
2, 0, ttlocl, /* 66 = tty local/remote mode */
2, 0, errlog, /* 67 = error log status & cntrl */
1, 0, bdflush, /* 68 = cancel delay write on buffer */
0, 0, zaptty, /* 69 = zap controlling tty */
1, 0, fpsim, /* 70 = kfpsim - turn on/off or get status */
1, 0, nap, /* 71 = nap system call */
#ifdef NEWLIMITS
1, 1, lim, /* 72 = login limits */
#else NEWLIMITS
0, 0, nosys, /* 72 = unused */
#endif NEWLIMITS
0, 0, nosys, /* 73 = unused */
0, 0, nosys, /* 74 = unused */
0, 0, nosys, /* 75 = unused */
0, 0, nosys, /* 76 = unused */
0, 0, nosys, /* 77 = unused */
/* maus is 58 in sys5, semsys is 53 in sys5 */
1, 0, maus, /* 78 = maus */
5, 2, semsys, /* 79 = semsys */
/*
* This is where the Berkeley 2.9 compatable
* system calls start. Indir's through #58
* an offset to this point
*/
0, 0, nosys, /* 80 (0) = illegal (local) call */
0, 0, nosys, /* 81 (1) = login */
#ifdef UCB_SYMLINKS
2, 0, lstat, /* 82 (2) = like stat, don't follow links */
#else UCB_SYMLINKS
0, 0, nosys, /* 82 (2) = like stat, don't follow links */
#endif UCB_SYMLINKS
0, 0, nosys, /* 83 (3) = submit - allow after logout */
0, 0, nostk, /* 84 (4) = nostk */
0, 0, nosys, /* 85 (5) = killbkg - kill background */
0, 0, nosys, /* 86 (6) = killpg-kill process group */
2, 0, renice, /* 87 (7) = renice - change a nice value */
0, 0, nosys, /* 88 (8) = fetchi */
0, 0, nosys, /* 89 (9) = ucall - call sub from user */
0, 0, nosys, /* 90 (10) = quota - set quota parameters */
0, 0, nosys, /* 91 (11) = qfstat - long fstat for quotas */
0, 0, nosys, /* 92 (12) = qstat - long stat for quotas */
0, 0, setpgrp, /* 93 (13) = setpgrp - set process group */
0, 0, nosys, /* 94 (14) = gldav */
0, 0, fperr, /* 95 (15) = fperr - get FP error regs */
0, 0, nosys, /* 96 (16) = vhangup - close tty files */
0, 0, nosys, /* 97 (17) = unused */
#ifdef SELECT
4, 0, select, /* 98 (18) = select active file descr */
#else SELECT
0, 0, nosys, /* 98 (18) = select active file descr */
#endif SELECT
2, 0, gethostname, /* 99 (19) = get host name */
2, 0, sethostname, /* 100 (20) = set host name */
#ifdef UCB_NET
3, 0, socket, /* 101 (21) = get socket fd */
3, 0, bind, /* 102 (22) = bind a socket */
2, 0, listen, /* 103 (23) = allow connections */
3, 0, accept, /* 104 (24) = passive socket connection */
3, 0, connect, /* 105 (25) = active socket connection */
5, 0, socketpair, /* 106 (26) = make pair of connected sockets */
2, 2, setreuid, /* 107 (27) = set real & effective user id */
2, 2, setregid, /* 108 (28) = set real & effective group id */
#ifdef UCB_SYMLINKS
2, 1, symlink, /* 109 (29) = symlink */
3, 1, readlink, /* 110 (30) = readlink */
#else UCB_SYMLINKS
0, 0, nosys, /* 109 (29) = symlink */
0, 0, nosys, /* 110 (30) = readlink */
#endif UCB_SYMLINKS
0, 0, gethostid, /* 111 (31) = gethostid */
2, 0, sethostid, /* 112 (32) = sethostid */
5, 0, setsockopt, /* 113 (33) = */
5, 0, getsockopt, /* 114 (34) = */
3, 0, getsockname, /* 115 (35) = */
3, 0, getpeername, /* 116 (36) = */
2, 0, shutdown, /* 117 (37) = orderly closing of a socket */
5, 0, sendit, /* 118 (39) = send data over socket */
5, 0, recvit, /* 119 (40) = receive data from socket */
0, 0, nosys, /* 120 (41) = */
0, 0, nosys, /* 121 (42) = */
#endif UCB_NET
/*
* Here is where more system calls can be added if
* need be, but you have to define UCB_NET to keep
* the offsets correct. The maximum number of system
* calls is 127. (bit 0200 in the trap instruction
* is used to specify arguments on the stack)
*/
};