home *** CD-ROM | disk | FTP | other *** search
- #include "register.h"
- #include "symtab.h"
- #include "diblock.h"
- #include "instrn.h"
- #include "process.h"
- #include "res.h"
-
- extern int bufset();
- extern int fd_close();
- extern int fd_invalid();
- extern int fd_lookup();
- extern int fd_open();
- extern int mgets();
- extern int dmget();
- extern int mget();
- extern int dmput();
- extern int mput();
-
- extern int errno;
-
- extern unsigned long arg[];
-
- extern int return_errno; /* errno goes here. */
- extern long return_value0; /* Result 1 value goes here. */
- extern long return_value1; /* Result 2 value goes here. */
-
- extern char *sys_call_buf; /* Scratch buf. */
-
- int
- generic_accept(syscallno)
- int syscallno;
- {
- int addrlen;
- void *addrlenp;
- void *addrp;
-
- addrlen = 0;
-
- if (mget(arg[2], &addrlen, sizeof(addrlen), &addrlenp) == -1)
- return -1;
-
- if (dmget(arg[1], addrlen, &addrp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), addrp, addrlenp);
- return_errno = errno;
- Rstop;
-
- if (return_value0 != -1)
- return_value0 = fd_open(return_value0);
-
- if (dmput(arg[1], addrp, addrlen, return_value0) == -1)
- return -1;
-
- if (mput(arg[2], addrlenp, sizeof(addrlen), return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_access(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_acct(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_adjtime(syscallno, tv, tvz, otv, otvz)
- int syscallno;
- void *tv;
- int tvz;
- void *otv;
- int otvz;
- {
- void *tvp;
- void *otvp;
-
- if (mget(arg[0], tv, tvz, &tvp) == -1)
- return -1;
-
- if (mget(arg[1], otv, otvz, &otvp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, tvp, otvp);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[1], otvp, otvz, return_value0) == -1)
- return -1;
-
- if (mput(arg[0], tvp, tvz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_alarm(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_async_daemon(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_bind(syscallno)
- int syscallno;
- {
- int namelen;
- void *namep;
-
- namelen = arg[2];
-
- if (dmget(arg[1], namelen, &namep) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), namep, namelen);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], namep, namelen, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_brk(syscallno)
- int syscallno;
- {
- if (quiet_procbreakget(&return_value1) == -1)
- return -1;
-
- if (quiet_procbreakput(arg[0]) == -1)
- return -1;
-
- return_value0 = 0;
- return_errno = 0;
-
- return 0;
- }
-
- int
- generic_cachectl(syscallno)
- int syscallno;
- {
- /*
- * TODO: check args to cachectl.
- *
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
- */
-
- return 0;
- }
-
- int
- generic_cacheflush(syscallno)
- int syscallno;
- {
- /*
- * TODO: check args to cacheflush.
- *
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
- */
-
- return 0;
- }
-
- int
- generic_chdir(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_chmod(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_chown(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, (int)arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_chroot(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_close(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]));
- return_errno = errno;
- Rstop;
-
- return fd_close((int)arg[0]);
- }
-
- int
- generic_connect(syscallno)
- int syscallno;
- {
- int namelen;
- void *namep;
-
- namelen = arg[2];
-
- if (dmget(arg[1], namelen, &namep) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), namep, namelen);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], namep, namelen, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_creat(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- if (return_value0 != -1)
- {
- if ((return_value0 = fd_open(return_value0)) == -1)
- return -1;
- }
-
- return 0;
- }
-
- int
- generic_dup(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]));
- return_errno = errno;
- Rstop;
-
- if (return_value0 != -1)
- {
- if ((return_value0 = fd_open(return_value0)) == -1)
- return -1;
- }
-
- return 0;
- }
-
- int
- generic_exit(syscallno)
- int syscallno;
- {
- histo_dump();
- hist_dump();
-
- (void)procclose();
-
- #if defined(PIXIE)
- exit((int)arg[0]);
- #else /* defined(PIXIE) */
- syscall(syscallno, (int)arg[0]);
- #endif /* defined(PIXIE) */
- }
-
- int
- generic_fchmod(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_fchown(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_flock(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_fork(syscallno)
- int syscallno;
- {
- int parent_pid;
-
- parent_pid = getpid();
-
- errno = 0;
-
- Rstart;
- return_value0 = syscall(syscallno);
- return_errno = errno;
- Rstop;
-
- if ((P.p_pid = getpid()) != parent_pid)
- return_value0 = 0;
-
- switch (return_value0)
- {
- case -1: /* error */
- break;
-
- case 0: /* child */
- return_value1 = 1;
- break;
-
- default: /* parent */
- return_value1 = 0;
- break;
- }
-
- return 0;
- }
-
- int
- generic_fstat(syscallno, sbufz)
- int syscallno;
- int sbufz;
- {
- void *sbufp;
-
- if (dmget(arg[1], sbufz, &sbufp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), sbufp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], sbufp, sbufz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_fsync(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]));
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_ftruncate(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_getdents(syscallno)
- int syscallno;
- {
- int nbyte;
- char *buf;
-
- nbyte = arg[2];
-
- if (dmget(arg[1], nbyte, &buf) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), buf, nbyte);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], buf, nbyte, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_getdirentries(syscallno)
- int syscallno;
- {
- int nbytes;
- char *bufp;
- long base;
- long *basep;
-
- nbytes = arg[2];
-
- if (dmget(arg[1], nbytes, &bufp) == -1)
- return -1;
-
- if (mget(arg[3], &base, sizeof(base), &basep) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), bufp, nbytes, basep);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[3], basep, sizeof(base), return_value0) == -1)
- return -1;
-
- if (dmput(arg[1], bufp, return_value0, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_getdomainname(syscallno)
- int syscallno;
- {
- int namelen;
- char *name;
-
- namelen = arg[1];
-
- if (dmget(arg[0], namelen, &name) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, name, namelen);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[0], name, namelen, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_getdtablesize(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_getgroups(syscallno, maxngroups)
- int syscallno;
- int maxngroups;
- {
- int gidsetlen;
- int *gidsetp;
-
- gidsetlen = (int)arg[0];
-
- if (gidsetlen < 0)
- gidsetlen = 0;
- else if (gidsetlen > maxngroups)
- gidsetlen = maxngroups;
-
- if (dmget(arg[1], gidsetlen * sizeof(int), &gidsetp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, gidsetlen, gidsetp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], gidsetp, return_value0 * sizeof(int), return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_gethostid(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_gethostname(syscallno)
- int syscallno;
- {
- int namelen;
- char *name;
-
- namelen = arg[1];
-
- if (dmget(arg[0], namelen, &name) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, name, namelen);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[0], name, namelen, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_getitimer(syscallno, itimervalz)
- int syscallno;
- int itimervalz;
- {
- void *itimervalp;
-
- if (dmget(arg[1], itimervalz, &itimervalp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], itimervalp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], itimervalp, itimervalz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_getpagesize(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_getpeername(syscallno)
- int syscallno;
- {
- int namelen;
- void *namelenp;
- void *namep;
-
- namelen = 0;
-
- if (mget(arg[2], &namelen, sizeof(namelen), &namelenp) == -1)
- return -1;
-
- if (dmget(arg[1], namelen, &namep) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), namep, namelenp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], namep, namelen, return_value0) == -1)
- return -1;
-
- if (mput(arg[2], namelenp, sizeof(namelen), return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_getpid(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_getpriority(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_getrlimit(syscallno, rlimitz)
- int syscallno;
- int rlimitz;
- {
- void *rlimitp;
-
- if (dmget(arg[1], rlimitz, &rlimitp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, arg[0], rlimitp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], rlimitp, rlimitz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_getrusage(syscallno, rusagez)
- int syscallno;
- int rusagez;
- {
- void *rusagep;
-
- if (dmget(arg[1], rusagez, &rusagep) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, arg[0], rusagep);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], rusagep, rusagez, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_gettimeofday(syscallno, tv, tvz, tz, tzz)
- int syscallno;
- void *tv;
- int tvz;
- void *tz;
- int tzz;
- {
- void *tvp;
- void *tzp;
-
- if (mget(arg[0], tv, tvz, &tvp) == -1)
- return -1;
-
- if (mget(arg[1], tz, tzz, &tzp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, tvp, tzp);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[1], tzp, tzz, return_value0) == -1)
- return -1;
-
- if (mput(arg[0], tvp, tvz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_getsockname(syscallno)
- int syscallno;
- {
- int namelen;
- void *namelenp;
- void *namep;
-
- namelen = 0;
-
- if (mget(arg[2], &namelen, sizeof(namelen), &namelenp) == -1)
- return -1;
-
- if (dmget(arg[1], namelen, &namep) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), namep, namelenp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], namep, namelen, return_value0) == -1)
- return -1;
-
- if (mput(arg[2], namelenp, sizeof(namelen), return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_getsockopt(syscallno)
- int syscallno;
- {
- int optlen;
- int *optlenp;
- char *optvalp;
-
- optlen = 0;
-
- if (mget(arg[4], &optlen, sizeof(optlen), &optlenp) == -1)
- return -1;
-
- if (dmget(arg[3], optlen, &optvalp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1], (int)arg[2], optvalp, optlenp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[3], optvalp, optlen, return_value0) == -1)
- return -1;
-
- if (mput(arg[4], optlenp, sizeof(optlen), return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_kill(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_killpg(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_link(syscallno)
- int syscallno;
- {
- char *cp;
- char name1[1024];
- char *name1p;
-
- if (mgets(arg[0], &name1p) == -1)
- return -1;
-
- if (name1p != (char *)0)
- {
- (void)strcpy(&name1[0], name1p);
- name1p = &name1[0];
- }
-
- if (mgets(arg[1], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, name1p, cp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_listen(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_lseek(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_lstat(syscallno, statb, statbz)
- int syscallno;
- void *statb;
- int statbz;
- {
- char *cp;
- void *statbp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- if (mget(arg[1], statb, statbz, &statbp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, statbp);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[1], statbp, statbz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_mkdir(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_mknod(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, (int)arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_nfssvc(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, arg[0]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_nice(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_open(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, (int)arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
-
- if (return_value0 != -1)
- return_value0 = fd_open(return_value0);
-
- return 0;
- }
-
- int
- generic_pause(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_plock(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_profil(syscallno)
- int syscallno;
- {
- /*
- * TODO -- pseudo-profiling
- */
- return_value0 = 0;
- return_errno = 0;
-
- return 0;
- }
-
- int
- generic_ptrace(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2], (int)arg[3]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_read(syscallno)
- int syscallno;
- {
- int nbyte;
- char *buf;
-
- /*
- * It seems that some programs rely on this
- * error being detected before some others
- * (specifically, an illegal buffer address).
- */
- if (fd_invalid((int)arg[0]))
- {
- return_value0 = -1;
- return_errno = errno;
-
- return 0;
- }
-
- nbyte = arg[2];
-
- if (dmget(arg[1], nbyte, &buf) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), buf, nbyte);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], buf, return_value0, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_readlink(syscallno)
- int syscallno;
- {
- char *pathp;
- char path[1024];
- char *buf;
- int bufsiz;
-
- if (mgets(arg[0], &pathp) == -1)
- return -1;
-
- if (pathp != (char *)0)
- {
- (void)strcpy(&path[0], pathp);
- pathp = &path[0];
- }
-
- bufsiz = arg[2];
-
- if (bufset(bufsiz) == -1)
- return -1;
-
- if (mget(arg[1], sys_call_buf, bufsiz, &buf) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, pathp, buf, bufsiz);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[1], buf, return_value0, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_recv(syscallno)
- int syscallno;
- {
- int len;
- char *buf;
-
- len = arg[2];
-
- if (dmget(arg[1], len, &buf) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), buf, len, (int)arg[3]);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], buf, return_value0, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_recvfrom(syscallno, from)
- int syscallno;
- void *from;
- {
- int len;
- char *buf;
- void *fromp;
- int fromlen;
- int *fromlenp;
-
- len = arg[2];
-
- if (dmget(arg[1], len, &buf) == -1)
- return -1;
-
- fromlen = 0;
-
- if (mget(arg[5], &fromlen, sizeof(fromlen), &fromlenp) == -1)
- return -1;
-
- if (mget(arg[4], from, fromlen, &fromp) == -1)
- return -1;
-
- Rstart;
- return_value0 =
- syscall
- (
- syscallno,
- fd_lookup((int)arg[0]),
- buf,
- len,
- (int)arg[3],
- fromp,
- fromlenp
- );
- return_errno = errno;
- Rstop;
-
- if (mput(arg[4], fromp, fromlen, return_value0) == -1)
- return -1;
-
- if (mput(arg[5], fromlenp, sizeof(fromlen), return_value0) == -1)
- return -1;
-
- if (dmput(arg[1], buf, return_value0, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_rename(syscallno)
- int syscallno;
- {
- char *fromp;
- char fromname[1024];
- char *cp;
-
- if (mgets(arg[0], &fromp) == -1)
- return -1;
-
- if (fromp != (char *)0)
- {
- (void)strcpy(&fromname[0], fromp);
- fromp = &fromname[0];
- }
-
- if (mgets(arg[1], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fromp, cp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_rmdir(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_send(syscallno)
- int syscallno;
- {
- int len;
- char *msg;
-
- len = arg[2];
-
- if (dmget(arg[1], len, &msg) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), msg, len, (int)arg[3]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_sendto(syscallno, to)
- int syscallno;
- void *to;
- {
- char *msg;
- int len;
- void *top;
- int tolen;
-
- len = arg[2];
-
- if (dmget(arg[1], len, &msg) == -1)
- return -1;
-
- tolen = arg[5];
-
- if (mget(arg[4], to, tolen, &top) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), msg, len, (int)arg[3], top, tolen);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_setdomainname(syscallno)
- int syscallno;
- {
- int namelen;
- char *name;
-
- namelen = arg[1];
-
- if (dmget(arg[0], namelen, &name) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, name, namelen);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[0], name, namelen, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_setgid(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_setgroups(syscallno)
- int syscallno;
- {
- int ngroups;
- int *gidset;
-
- ngroups = (int)arg[0];
-
- if (ngroups < 0)
- ngroups = 0;
-
- if (dmget(arg[1], ngroups * sizeof(int), &gidset) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, ngroups, gidset);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_sethostid(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, arg[0]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_setitimer(syscallno, it, itz, oit, oitz)
- int syscallno;
- void *it;
- int itz;
- void *oit;
- int oitz;
- {
- void *itp;
- void *oitp;
-
- if (mget(arg[1], it, itz, &itp) == -1)
- return -1;
-
- if (mget(arg[2], oit, oitz, &oitp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], itp, oitp);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[2], oitp, oitz, return_value0) == -1)
- return -1;
-
- if (mput(arg[1], itp, itz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_setpgid(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_setpriority(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_setregid(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_setreuid(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_setrlimit(syscallno, rlimitz)
- int syscallno;
- int rlimitz;
- {
- void *rlimitp;
-
- if (dmget(arg[1], rlimitz, &rlimitp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, arg[0], rlimitp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[1], rlimitp, rlimitz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_setsockopt(syscallno)
- int syscallno;
- {
- int optlen;
- char *optval;
-
- optlen = arg[4];
-
- if (dmget(arg[3], optlen, &optval) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1], (int)arg[2], optval, optlen);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_settimeofday(syscallno, tv, tvz, tz, tzz)
- int syscallno;
- void *tv;
- int tvz;
- void *tz;
- int tzz;
- {
- void *tvp;
- void *tzp;
-
- if (mget(arg[0], tv, tvz, &tvp) == -1)
- return -1;
-
- if (mget(arg[1], tz, tzz, &tzp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, tvp, tzp);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[1], tzp, tzz, return_value0) == -1)
- return -1;
-
- if (mput(arg[0], tvp, tvz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_setuid(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_shutdown(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_socket(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
-
- if (return_value0 != -1)
- return_value0 = fd_open(return_value0);
-
- return 0;
- }
-
- int
- generic_socketpair(syscallno)
- int syscallno;
- {
- int *svp;
-
- if (dmget(arg[3], 2 * sizeof(*svp), &svp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2], svp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[3], svp, 2 * sizeof(*svp), return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_stat(syscallno, statb, statbz)
- int syscallno;
- void *statb;
- int statbz;
- {
- char *cp;
- void *statbp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- if (mget(arg[1], statb, statbz, &statbp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, statbp);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[1], statbp, statbz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_stime(syscallno)
- int syscallno;
- {
- long *tp;
-
- if (dmget(arg[0], sizeof(*tp), &tp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, tp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[0], tp, sizeof(*tp), return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_symlink(syscallno)
- int syscallno;
- {
- char *namep;
- char name1[1024];
- char *cp;
-
- if (mgets(arg[0], &namep) == -1)
- return -1;
-
- if (namep != (char *)0)
- {
- (void)strcpy(&name1[0], namep);
- namep = &name1[0];
- }
-
- if (mgets(arg[1], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, namep, cp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_sync(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_time(syscallno)
- int syscallno;
- {
- long *tlocp;
-
- if (dmget(arg[0], sizeof(*tlocp), &tlocp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, tlocp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[0], tlocp, sizeof(*tlocp), return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_times(syscallno, tz)
- int syscallno;
- int tz;
- {
- void *tp;
-
- if (dmget(arg[0], tz, &tp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, tp);
- return_errno = errno;
- Rstop;
-
- if (dmput(arg[0], tp, tz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_truncate(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_uadmin(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1], (int)arg[2]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_ulimit(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0], (int)arg[1]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_umask(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno, (int)arg[0]);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_unlink(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_unmount(syscallno)
- int syscallno;
- {
- char *cp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_utime(syscallno, t, tz)
- int syscallno;
- void *t;
- int tz;
- {
- char *cp;
- void *tp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- if (mget(arg[1], t, tz, &tp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, tp);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_utimes(syscallno, tv, tvz)
- int syscallno;
- void *tv;
- int tvz;
- {
- char *cp;
- void *tvp;
-
- if (mgets(arg[0], &cp) == -1)
- return -1;
-
- if (mget(arg[1], tv, tvz, &tvp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, cp, tvp);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[1], tvp, tvz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_vhangup(syscallno)
- int syscallno;
- {
- Rstart;
- return_value0 = syscall(syscallno);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-
- int
- generic_wait3(syscallno, s, sz, r, rz)
- int syscallno;
- void *s;
- int sz;
- void *r;
- int rz;
- {
- void *sp;
- void *rp;
-
- if (mget(arg[0], s, sz, &sp) == -1)
- return -1;
-
- if (mget(arg[2], r, rz, &rp) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, sp, arg[1], rp);
- return_errno = errno;
- Rstop;
-
- if (mput(arg[2], rp, rz, return_value0) == -1)
- return -1;
-
- if (mput(arg[0], sp, sz, return_value0) == -1)
- return -1;
-
- return 0;
- }
-
- int
- generic_write(syscallno)
- int syscallno;
- {
- char *buf;
- int nbyte;
-
- nbyte = arg[2];
-
- if (dmget(arg[1], nbyte, &buf) == -1)
- return -1;
-
- Rstart;
- return_value0 = syscall(syscallno, fd_lookup((int)arg[0]), buf, nbyte);
- return_errno = errno;
- Rstop;
-
- return 0;
- }
-