10Sstevel@tonic-gate /*
20Sstevel@tonic-gate * CDDL HEADER START
30Sstevel@tonic-gate *
40Sstevel@tonic-gate * The contents of this file are subject to the terms of the
53224Sraf * Common Development and Distribution License (the "License").
63224Sraf * You may not use this file except in compliance with the License.
70Sstevel@tonic-gate *
80Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
90Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
100Sstevel@tonic-gate * See the License for the specific language governing permissions
110Sstevel@tonic-gate * and limitations under the License.
120Sstevel@tonic-gate *
130Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
140Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
150Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
160Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
170Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
180Sstevel@tonic-gate *
190Sstevel@tonic-gate * CDDL HEADER END
20722Smuffin */
213224Sraf
22722Smuffin /*
23*12789SRoger.Faulkner@Oracle.COM * Copyright (c) 1990, 2010, Oracle and/or its affiliates. All rights reserved.
240Sstevel@tonic-gate */
25722Smuffin
260Sstevel@tonic-gate #include <errno.h>
270Sstevel@tonic-gate #include <stdio.h>
28722Smuffin #include <stdarg.h>
290Sstevel@tonic-gate #include <sys/syscall.h>
300Sstevel@tonic-gate #include "xsyscall.h"
310Sstevel@tonic-gate
323224Sraf /*
330Sstevel@tonic-gate * Array of SVR4 system call numbers. The 4.1 numbers are mapped
340Sstevel@tonic-gate * to their SVR4/5.0 equivalents before trapping into the kernel.
350Sstevel@tonic-gate */
360Sstevel@tonic-gate
3711798SRoger.Faulkner@Sun.COM int syscallnum[190] = { SYS_syscall, SYS_exit, -1 /*fork1*/,
3811798SRoger.Faulkner@Sun.COM SYS_read, SYS_write, -1 /*open*/, SYS_close,
39*12789SRoger.Faulkner@Oracle.COM -1, -1 /*creat*/, -1 /*link*/, -1 /*unlink*/,
40*12789SRoger.Faulkner@Oracle.COM -1, SYS_chdir, 0, -1 /*mknod*/,
41*12789SRoger.Faulkner@Oracle.COM -1 /*chmod*/, -1 /*lchown*/, 0, 0,
420Sstevel@tonic-gate SYS_lseek, SYS_getpid, 0, 0,
433224Sraf 0, SYS_getuid, 0, 0,
443224Sraf 0, 0, 0, 0,
4511798SRoger.Faulkner@Sun.COM 0, 0, -1 /*access*/, 0,
4611798SRoger.Faulkner@Sun.COM 0, SYS_sync, SYS_kill, -1 /*stat*/,
4711798SRoger.Faulkner@Sun.COM 0, -1 /*lstat*/, -1 /*dup*/, SYS_pipe,
480Sstevel@tonic-gate 0, SYS_profil, 0, 0,
490Sstevel@tonic-gate SYS_getgid, 0, 0, 0,
500Sstevel@tonic-gate SYS_acct, 0, -1, SYS_ioctl,
51*12789SRoger.Faulkner@Oracle.COM -1 /*reboot*/, 0, -1 /*symlink*/, -1 /*readlink*/,
5211798SRoger.Faulkner@Sun.COM SYS_execve, SYS_umask, SYS_chroot, -1 /*fstat*/,
530Sstevel@tonic-gate 0, -1/*getpagesize*/,-1, 0,
540Sstevel@tonic-gate 0, 0, -1, -1,
550Sstevel@tonic-gate SYS_mmap, -1, SYS_munmap, SYS_mprotect,
560Sstevel@tonic-gate -1 /*advise*/, SYS_vhangup, 0, SYS_mincore,
570Sstevel@tonic-gate SYS_getgroups, SYS_setgroups, -1 /*getpgrp*/, -1 /*setpgrp*/,
580Sstevel@tonic-gate SYS_setitimer, 0, -1 /*swapon*/, SYS_getitimer,
590Sstevel@tonic-gate -1/*gethostname*/,-1/*sethostname*/,-1/*getdtablesize*/,-1/*dup2*/,
600Sstevel@tonic-gate -1/*getdopt*/, SYS_fcntl, -1 /*select*/, -1 /*setdopt*/,
613224Sraf SYS_fdsync, -1 /*setprio*/, -1 /*socket*/, -1 /*connect*/,
620Sstevel@tonic-gate -1 /*accept*/, -1 /*getprio*/, -1 /*send*/, -1 /*recv*/,
633224Sraf 0, -1 /*bind*/, -1 /*setsockopt*/,-1 /*listen*/,
640Sstevel@tonic-gate 0, -1 /*sigvec*/, -1 /*sigblock*/, -1 /*sigsetmask*/,
650Sstevel@tonic-gate -1 /*sigpause*/, -1 /*sigstack*/, -1 /*recvmsg*/, -1 /*sendmsg*/,
660Sstevel@tonic-gate -1 /*vtrace*/, SYS_gettimeofday, -1 /*getrusage*/, -1 /*getsockopt*/,
670Sstevel@tonic-gate 0, SYS_readv, SYS_writev, -1 /*settimeofday*/,
68*12789SRoger.Faulkner@Oracle.COM -1 /*fchown*/, -1 /*fchmod*/, -1 /*recvfrom*/, -1 /*setreuid*/,
6911798SRoger.Faulkner@Sun.COM -1 /*getregid*/, -1 /*rename*/, -1 /*truncate*/, -1 /*ftruncate*/,
700Sstevel@tonic-gate -1 /*flock*/, 0, -1 /*sendto*/, -1 /*shutdown*/,
71*12789SRoger.Faulkner@Oracle.COM -1 /*socketpair*/, -1 /*mkdir*/, -1 /*rmdir*/, -1 /*utimes*/,
723224Sraf 0, SYS_adjtime, -1 /*getpeername*/,-1 /*gethostid*/,
730Sstevel@tonic-gate 0, SYS_getrlimit, SYS_setrlimit, -1 /*killpg*/,
740Sstevel@tonic-gate 0, 0, 0, -1/*getsockname*/,
7511798SRoger.Faulkner@Sun.COM SYS_getmsg, SYS_putmsg, -1 /*poll*/, 0,
760Sstevel@tonic-gate -1/*nfssvc*/, -1 /*getdirentries*/, SYS_statfs, SYS_fstatfs,
7711798SRoger.Faulkner@Sun.COM -1/*SYS_umount*/, -1 /*async_daemmon*/ -1 /*getfh*/, -1/*getdomain*/,
780Sstevel@tonic-gate -1/*setdomain*/, 0, -1 /*quotactl*/, -1 /*exportfs*/,
790Sstevel@tonic-gate SYS_mount, -1/*ustat*/, SYS_semsys, SYS_msgsys,
800Sstevel@tonic-gate SYS_shmsys, -1 /*auditsys*/, -1 /*rfsys*/, SYS_getdents,
810Sstevel@tonic-gate -1 /*setsid*/, SYS_fchdir, SYS_fchroot, -1 /*vpixsys*/,
823224Sraf -1 /*aioread*/, -1 /*aiowrite*/, -1 /*aiocancel*/, SYS_sigpending,
830Sstevel@tonic-gate 0, -1 /*setpgid*/, SYS_pathconf, SYS_uname,
843224Sraf };
850Sstevel@tonic-gate
86722Smuffin int
syscall(int sysnum,...)87722Smuffin syscall(int sysnum, ...)
880Sstevel@tonic-gate {
890Sstevel@tonic-gate va_list ap;
900Sstevel@tonic-gate int i1, i2, i3, i4;
910Sstevel@tonic-gate char *c1, *c2, *c3, *c4;
92722Smuffin int ret_val;
930Sstevel@tonic-gate
94722Smuffin va_start(ap, sysnum);
950Sstevel@tonic-gate switch(sysnum) {
963224Sraf case XSYS_read:
970Sstevel@tonic-gate i1 = va_arg(ap, int);
980Sstevel@tonic-gate c1 = va_arg(ap, char *);
990Sstevel@tonic-gate i2 = va_arg(ap, int);
100722Smuffin va_end(ap);
101722Smuffin return (bc_read(i1, c1, i2));
1020Sstevel@tonic-gate case XSYS_write:
1030Sstevel@tonic-gate i1 = va_arg(ap, int);
1040Sstevel@tonic-gate c1 = va_arg(ap, char *);
1050Sstevel@tonic-gate i2 = va_arg(ap, int);
106722Smuffin va_end(ap);
107722Smuffin return (bc_write(i1, c1, i2));
1083224Sraf case XSYS_readv:
1090Sstevel@tonic-gate i1 = va_arg(ap, int);
1100Sstevel@tonic-gate c1 = va_arg(ap, char *);
1110Sstevel@tonic-gate i2 = va_arg(ap, int);
112722Smuffin va_end(ap);
113722Smuffin return (bc_readv(i1, c1, i2));
1140Sstevel@tonic-gate case XSYS_writev:
1150Sstevel@tonic-gate i1 = va_arg(ap, int);
1160Sstevel@tonic-gate c1 = va_arg(ap, char *);
1170Sstevel@tonic-gate i2 = va_arg(ap, int);
118722Smuffin va_end(ap);
119722Smuffin return (bc_writev(i1, c1, i2));
1203224Sraf case XSYS_open:
1210Sstevel@tonic-gate c1 = va_arg(ap, char *);
1220Sstevel@tonic-gate i1 = va_arg(ap, int);
1230Sstevel@tonic-gate i2 = va_arg(ap, int);
124722Smuffin va_end(ap);
1250Sstevel@tonic-gate if (i2)
126722Smuffin return (bc_open(c1, i1, i2));
1270Sstevel@tonic-gate else
128722Smuffin return (bc_open(c1, i1));
1293224Sraf case XSYS_close:
1300Sstevel@tonic-gate i1 = va_arg(ap, int);
131722Smuffin va_end(ap);
132722Smuffin return (bc_close(i1));
1330Sstevel@tonic-gate case XSYS_fcntl:
1340Sstevel@tonic-gate i1 = va_arg(ap, int);
1350Sstevel@tonic-gate i2 = va_arg(ap, int);
1360Sstevel@tonic-gate i3 = va_arg(ap, int);
137722Smuffin va_end(ap);
138722Smuffin return (bc_fcntl(i1, i2, i3));
1390Sstevel@tonic-gate case XSYS_select:
1400Sstevel@tonic-gate i1 = va_arg(ap, int);
1410Sstevel@tonic-gate c1 = va_arg(ap, char *);
1420Sstevel@tonic-gate c2 = va_arg(ap, char *);
1430Sstevel@tonic-gate c3 = va_arg(ap, char *);
1440Sstevel@tonic-gate c4 = va_arg(ap, char *);
145722Smuffin va_end(ap);
1466812Sraf return (select(i1, c1, c2, c3, c4));
1473224Sraf case XSYS_ioctl :
1480Sstevel@tonic-gate i1 = va_arg(ap, int);
1490Sstevel@tonic-gate i2 = va_arg(ap, int);
1500Sstevel@tonic-gate c1 = va_arg(ap, char *);
151722Smuffin va_end(ap);
152722Smuffin return (bc_ioctl(i1, i2, c1));
1533224Sraf case XSYS_stat:
1540Sstevel@tonic-gate c1 = va_arg(ap, char *);
1550Sstevel@tonic-gate c2 = va_arg(ap, char *);
156722Smuffin va_end(ap);
157722Smuffin return (bc_stat(c1, c2));
1580Sstevel@tonic-gate case XSYS_lstat:
1590Sstevel@tonic-gate c1 = va_arg(ap, char *);
1600Sstevel@tonic-gate c2 = va_arg(ap, char *);
161722Smuffin va_end(ap);
162722Smuffin return (bc_lstat(c1, c2));
1633224Sraf case XSYS_fstat:
1640Sstevel@tonic-gate i1 = va_arg(ap, int);
1650Sstevel@tonic-gate c1 = va_arg(ap, char *);
166722Smuffin va_end(ap);
167722Smuffin return (bc_fstat(i1, c1));
1683224Sraf case XSYS_getdents:
1690Sstevel@tonic-gate i1 = va_arg(ap, int);
1700Sstevel@tonic-gate c1 = va_arg(ap, char *);
1710Sstevel@tonic-gate i2 = va_arg(ap, int);
172722Smuffin va_end(ap);
173722Smuffin return (bc_getdents(i1, c1, i2));
1743224Sraf case XSYS_kill:
1750Sstevel@tonic-gate i1 = va_arg(ap, int);
1760Sstevel@tonic-gate i2 = va_arg(ap, int);
177722Smuffin va_end(ap);
178722Smuffin return (bc_kill(i1, i2));
1793224Sraf case XSYS_mount:
1800Sstevel@tonic-gate c1 = va_arg(ap, char *);
1810Sstevel@tonic-gate c2 = va_arg(ap, char *);
1820Sstevel@tonic-gate i1 = va_arg(ap, int);
1830Sstevel@tonic-gate c3 = va_arg(ap, char *);
184722Smuffin va_end(ap);
185722Smuffin return (mount(c1, c2, i1, c3));
1860Sstevel@tonic-gate case XSYS_getrlimit:
1870Sstevel@tonic-gate i1 = va_arg(ap, int);
1880Sstevel@tonic-gate c1 = va_arg(ap, char *);
189722Smuffin va_end(ap);
190722Smuffin return (bc_getrlimit(i1, c1));
1913224Sraf case XSYS_setrlimit:
1920Sstevel@tonic-gate i1 = va_arg(ap, int);
1930Sstevel@tonic-gate c1 = va_arg(ap, char *);
194722Smuffin va_end(ap);
195722Smuffin return (bc_setrlimit(i1, c1));
1960Sstevel@tonic-gate case XSYS_uname:
1970Sstevel@tonic-gate c1 = va_arg(ap, char *);
198722Smuffin va_end(ap);
199722Smuffin return (bc_uname(c1));
2003224Sraf case XSYS_creat:
2010Sstevel@tonic-gate c1 = va_arg(ap, char *);
2020Sstevel@tonic-gate i1 = va_arg(ap, int);
203722Smuffin va_end(ap);
204722Smuffin return (creat(c1, i1));
2053224Sraf case XSYS_unmount:
2060Sstevel@tonic-gate c1 = va_arg(ap, char *);
207722Smuffin va_end(ap);
208722Smuffin return (umount(c1));
2093224Sraf case XSYS_link:
2100Sstevel@tonic-gate c1 = va_arg(ap, char *);
2110Sstevel@tonic-gate c2 = va_arg(ap, char *);
212722Smuffin va_end(ap);
213722Smuffin return (link(c1, c2));
2143224Sraf case XSYS_unlink:
2150Sstevel@tonic-gate c1 = va_arg(ap, char *);
216722Smuffin va_end(ap);
217722Smuffin return (unlink(c1));
2180Sstevel@tonic-gate case XSYS_chdir:
2190Sstevel@tonic-gate c1 = va_arg(ap, char *);
220722Smuffin va_end(ap);
221722Smuffin return (chdir(c1));
2223224Sraf case XSYS_mknod:
2230Sstevel@tonic-gate c1 = va_arg(ap, char *);
2240Sstevel@tonic-gate i1 = va_arg(ap, int);
2250Sstevel@tonic-gate i2 = va_arg(ap, int);
226722Smuffin va_end(ap);
227722Smuffin return (mknod(c1, i1, i2));
2283224Sraf case XSYS_chmod:
2290Sstevel@tonic-gate c1 = va_arg(ap, char *);
2300Sstevel@tonic-gate i1 = va_arg(ap, int);
231722Smuffin va_end(ap);
232722Smuffin return (chmod(c1, i1));
2333224Sraf case XSYS_chown:
2340Sstevel@tonic-gate c1 = va_arg(ap, char *);
2350Sstevel@tonic-gate i1 = va_arg(ap, int);
2360Sstevel@tonic-gate i2 = va_arg(ap, int);
237722Smuffin va_end(ap);
238722Smuffin return (chown(c1, i1, i2));
2393224Sraf case XSYS_lseek:
2400Sstevel@tonic-gate i1 = va_arg(ap, int);
2410Sstevel@tonic-gate i2 = va_arg(ap, int);
2420Sstevel@tonic-gate i3 = va_arg(ap, int);
243722Smuffin va_end(ap);
244722Smuffin return (lseek(i1, i2, i3));
2453224Sraf case XSYS_access:
2460Sstevel@tonic-gate c1 = va_arg(ap, char *);
2470Sstevel@tonic-gate i1 = va_arg(ap, int);
248722Smuffin va_end(ap);
249722Smuffin return (access(c1, i1));
2503224Sraf case XSYS_dup:
2510Sstevel@tonic-gate i1 = va_arg(ap, int);
252722Smuffin va_end(ap);
253722Smuffin return (dup(i1));
2540Sstevel@tonic-gate case XSYS_dup2:
2550Sstevel@tonic-gate i1 = va_arg(ap, int);
2560Sstevel@tonic-gate i2 = va_arg(ap, int);
257722Smuffin va_end(ap);
25811798SRoger.Faulkner@Sun.COM return (dup2(i1, i2));
2593224Sraf case XSYS_pipe:
2600Sstevel@tonic-gate c1 = (char *)va_arg(ap, int *);
261722Smuffin va_end(ap);
262722Smuffin return (pipe(c1));
2633224Sraf case XSYS_symlink:
2640Sstevel@tonic-gate c1 = va_arg(ap, char *);
2650Sstevel@tonic-gate c2 = va_arg(ap, char *);
266722Smuffin va_end(ap);
267722Smuffin return (symlink(c1, c2));
2683224Sraf case XSYS_readlink:
2690Sstevel@tonic-gate c1 = va_arg(ap, char *);
2700Sstevel@tonic-gate c2 = va_arg(ap, char *);
2710Sstevel@tonic-gate i1 = va_arg(ap, int);
272722Smuffin va_end(ap);
273722Smuffin return (readlink(c1, c2, i1));
2743224Sraf case XSYS_execve:
2750Sstevel@tonic-gate c1 = va_arg(ap, char *);
2760Sstevel@tonic-gate c2 = (char *)va_arg(ap, char **);
2770Sstevel@tonic-gate c3 = (char *)va_arg(ap, char **);
278722Smuffin va_end(ap);
279722Smuffin return (execve(c1, c2, c3));
2803224Sraf case XSYS_chroot:
2810Sstevel@tonic-gate c1 = va_arg(ap, char *);
282722Smuffin va_end(ap);
283722Smuffin return (chroot(c1));
2843224Sraf case XSYS_getgroups:
2850Sstevel@tonic-gate i1 = va_arg(ap, int);
2860Sstevel@tonic-gate c1 = (char *)va_arg(ap, int *);
287722Smuffin va_end(ap);
288722Smuffin return (getgroups(i1, c1));
2893224Sraf case XSYS_setgroups:
2900Sstevel@tonic-gate i1 = va_arg(ap, int);
2910Sstevel@tonic-gate c1 = (char *)va_arg(ap, int *);
292722Smuffin va_end(ap);
293722Smuffin return (setgroups(i1, c1));
2943224Sraf case XSYS_fsync:
2950Sstevel@tonic-gate i1 = va_arg(ap, int);
296722Smuffin va_end(ap);
297722Smuffin return (fsync(i1));
2980Sstevel@tonic-gate case XSYS_gettimeofday:
2990Sstevel@tonic-gate c1 = va_arg(ap, char *);
3000Sstevel@tonic-gate c2 = va_arg(ap, char *);
301722Smuffin va_end(ap);
302722Smuffin return (gettimeofday(c1, c2));
3030Sstevel@tonic-gate case XSYS_settimeofday:
3040Sstevel@tonic-gate c1 = va_arg(ap, char *);
3050Sstevel@tonic-gate c2 = va_arg(ap, char *);
306722Smuffin va_end(ap);
307722Smuffin return (settimeofday(c1, c2));
3083224Sraf case XSYS_rename:
3090Sstevel@tonic-gate c1 = va_arg(ap, char *);
3100Sstevel@tonic-gate c2 = va_arg(ap, char *);
311722Smuffin va_end(ap);
312722Smuffin return (rename(c1, c2));
3133224Sraf case XSYS_mkdir:
3140Sstevel@tonic-gate c1 = va_arg(ap, char *);
3150Sstevel@tonic-gate i1 = va_arg(ap, int);
316722Smuffin va_end(ap);
317722Smuffin return (mkdir(c1, i1));
3183224Sraf case XSYS_rmdir:
3190Sstevel@tonic-gate c1 = va_arg(ap, char *);
320722Smuffin va_end(ap);
321722Smuffin return (rmdir(c1));
3223224Sraf case XSYS_statfs:
3230Sstevel@tonic-gate c1 = va_arg(ap, char *);
3240Sstevel@tonic-gate c2 = va_arg(ap, char *);
325722Smuffin va_end(ap);
326722Smuffin return (statfs(c1, c2));
3273224Sraf case XSYS_fstatfs:
3280Sstevel@tonic-gate i1 = va_arg(ap, int);
3290Sstevel@tonic-gate c1 = va_arg(ap, char *);
330722Smuffin va_end(ap);
331722Smuffin return (fstatfs(i1, c1));
3320Sstevel@tonic-gate case XSYS_getpagesize:
333722Smuffin va_end(ap);
334722Smuffin return (getpagesize());
3350Sstevel@tonic-gate case XSYS_gethostid:
336722Smuffin va_end(ap);
337722Smuffin return (gethostid());
3380Sstevel@tonic-gate case XSYS_getdtablesize:
339722Smuffin va_end(ap);
340722Smuffin return (getdtablesize());
3413224Sraf case XSYS_pathconf:
3420Sstevel@tonic-gate c1 = va_arg(ap, char *);
3430Sstevel@tonic-gate i1 = va_arg(ap, int);
344722Smuffin va_end(ap);
345722Smuffin return (pathconf(c1, i1));
3460Sstevel@tonic-gate case XSYS_gethostname:
3470Sstevel@tonic-gate c1 = va_arg(ap, char *);
3480Sstevel@tonic-gate i1 = va_arg(ap, int);
349722Smuffin va_end(ap);
350722Smuffin return (gethostname(c1, i1));
3510Sstevel@tonic-gate case XSYS_sethostname:
3520Sstevel@tonic-gate c1 = va_arg(ap, char *);
3530Sstevel@tonic-gate i1 = va_arg(ap, int);
354722Smuffin va_end(ap);
355722Smuffin return (sethostname(c1, i1));
3563224Sraf case XSYS_setreuid:
3570Sstevel@tonic-gate i1 = va_arg(ap, int);
3580Sstevel@tonic-gate i2 = va_arg(ap, int);
359722Smuffin va_end(ap);
360722Smuffin return (setreuid(i1, i2));
3613224Sraf case XSYS_setregid:
3620Sstevel@tonic-gate i1 = va_arg(ap, int);
3630Sstevel@tonic-gate i2 = va_arg(ap, int);
364722Smuffin va_end(ap);
365722Smuffin return (setregid(i1, i2));
3663224Sraf case XSYS_getpriority:
3670Sstevel@tonic-gate i1 = va_arg(ap, int);
3680Sstevel@tonic-gate i2 = va_arg(ap, int);
369722Smuffin va_end(ap);
370722Smuffin return (getpriority(i1, i2));
3713224Sraf case XSYS_setpriority:
3720Sstevel@tonic-gate i1 = va_arg(ap, int);
3730Sstevel@tonic-gate i2 = va_arg(ap, int);
3740Sstevel@tonic-gate i3 = va_arg(ap, int);
375722Smuffin va_end(ap);
376722Smuffin return (setpriority(i1, i2, i3));
3770Sstevel@tonic-gate case XSYS_sigvec:
3780Sstevel@tonic-gate i1 = va_arg(ap, int);
3790Sstevel@tonic-gate c1 = va_arg(ap, char *);
3800Sstevel@tonic-gate c2 = va_arg(ap, char *);
381722Smuffin va_end(ap);
382722Smuffin return (sigvec(i1, c1, c2));
3830Sstevel@tonic-gate case XSYS_sigblock:
3840Sstevel@tonic-gate i1 = va_arg(ap, int);
385722Smuffin va_end(ap);
386722Smuffin return (sigblock(i1));
3870Sstevel@tonic-gate case XSYS_sigpending:
3880Sstevel@tonic-gate c1 = va_arg(ap, char *);
389722Smuffin va_end(ap);
390722Smuffin return (sigpending(c1));
3910Sstevel@tonic-gate case XSYS_sigsetmask:
3920Sstevel@tonic-gate i1 = va_arg(ap, int);
393722Smuffin va_end(ap);
394722Smuffin return (sigsetmask(i1));
3950Sstevel@tonic-gate case XSYS_sigpause:
3960Sstevel@tonic-gate c1 = va_arg(ap, char *);
397722Smuffin va_end(ap);
398722Smuffin return (sigpause(c1));
3990Sstevel@tonic-gate case XSYS_sigstack:
4000Sstevel@tonic-gate c1 = va_arg(ap, char *);
4010Sstevel@tonic-gate c2 = va_arg(ap, char *);
402722Smuffin va_end(ap);
403722Smuffin return (sigstack(c1, c2));
4040Sstevel@tonic-gate case XSYS_truncate:
4050Sstevel@tonic-gate c1 = va_arg(ap, char *);
4060Sstevel@tonic-gate i1 = va_arg(ap, int);
407722Smuffin va_end(ap);
408722Smuffin return (truncate(c1, i1));
4090Sstevel@tonic-gate case XSYS_ftruncate:
4100Sstevel@tonic-gate i1 = va_arg(ap, int);
4110Sstevel@tonic-gate i2 = va_arg(ap, int);
412722Smuffin va_end(ap);
413722Smuffin return (ftruncate(i1, i2));
4140Sstevel@tonic-gate case XSYS_killpg:
4150Sstevel@tonic-gate i1 = va_arg(ap, int);
4160Sstevel@tonic-gate i2 = va_arg(ap, int);
417722Smuffin va_end(ap);
418722Smuffin return (killpg(i1, i2));
4190Sstevel@tonic-gate case XSYS_setpgid:
4200Sstevel@tonic-gate i1 = va_arg(ap, int);
4210Sstevel@tonic-gate i2 = va_arg(ap, int);
422722Smuffin va_end(ap);
423722Smuffin return (setpgid(i1, i2));
4243224Sraf case XSYS_ptrace:
4250Sstevel@tonic-gate i1 = va_arg(ap, int);
4260Sstevel@tonic-gate i2 = va_arg(ap, int);
4270Sstevel@tonic-gate i3 = va_arg(ap, int);
4280Sstevel@tonic-gate c1 = va_arg(ap, char *);
4290Sstevel@tonic-gate i4 = va_arg(ap, int);
4300Sstevel@tonic-gate c2 = va_arg(ap, char *);
431722Smuffin va_end(ap);
4323224Sraf return (ptrace(i1, i2, i3, c1, i4, c2));
4330Sstevel@tonic-gate #ifdef S5EMUL
4340Sstevel@tonic-gate case XSYS_getpgrp:
435722Smuffin va_end(ap);
436722Smuffin return (getpgrp());
4370Sstevel@tonic-gate case XSYS_setpgrp:
438722Smuffin va_end(ap);
439722Smuffin return (setpgrp());
4400Sstevel@tonic-gate #else
4410Sstevel@tonic-gate case XSYS_getpgrp:
4420Sstevel@tonic-gate i1 = va_arg(ap, int);
443722Smuffin va_end(ap);
444722Smuffin return (getpgrp(i1));
4450Sstevel@tonic-gate case XSYS_setpgrp:
4460Sstevel@tonic-gate i1 = va_arg(ap, int);
4470Sstevel@tonic-gate i2 = va_arg(ap, int);
448722Smuffin va_end(ap);
449722Smuffin return (setpgrp(i1, i2));
4500Sstevel@tonic-gate #endif
4510Sstevel@tonic-gate case XSYS_getrusage:
4520Sstevel@tonic-gate i1 = va_arg(ap, int);
4530Sstevel@tonic-gate c1 = va_arg(ap, char *);
454722Smuffin va_end(ap);
455722Smuffin return (getrusage(i1, c1));
4560Sstevel@tonic-gate case XSYS_setsid:
457722Smuffin va_end(ap);
458722Smuffin return (setsid());
4590Sstevel@tonic-gate
4600Sstevel@tonic-gate case XSYS_flock:
4610Sstevel@tonic-gate i1 = va_arg(ap, int);
4620Sstevel@tonic-gate i2 = va_arg(ap, int);
463722Smuffin va_end(ap);
464722Smuffin return (flock(i1, i2));
46511798SRoger.Faulkner@Sun.COM case XSYS_utimes:
46611798SRoger.Faulkner@Sun.COM c1 = va_arg(ap, char *);
46711798SRoger.Faulkner@Sun.COM c2 = va_arg(ap, char *);
46811798SRoger.Faulkner@Sun.COM va_end(ap);
46911798SRoger.Faulkner@Sun.COM return (utimes(c1, c2));
47011798SRoger.Faulkner@Sun.COM case XSYS_poll:
47111798SRoger.Faulkner@Sun.COM c1 = va_arg(ap, char *);
47211798SRoger.Faulkner@Sun.COM i2 = va_arg(ap, int);
47311798SRoger.Faulkner@Sun.COM i3 = va_arg(ap, int);
47411798SRoger.Faulkner@Sun.COM va_end(ap);
47511798SRoger.Faulkner@Sun.COM return (poll(c1, i2, i3));
476*12789SRoger.Faulkner@Oracle.COM case XSYS_fchmod:
477*12789SRoger.Faulkner@Oracle.COM i1 = va_arg(ap, int);
478*12789SRoger.Faulkner@Oracle.COM i2 = va_arg(ap, int);
479*12789SRoger.Faulkner@Oracle.COM va_end(ap);
480*12789SRoger.Faulkner@Oracle.COM return (fchmod(i1, i2));
48111798SRoger.Faulkner@Sun.COM case XSYS_fchown:
48211798SRoger.Faulkner@Sun.COM i1 = va_arg(ap, int);
48311798SRoger.Faulkner@Sun.COM i2 = va_arg(ap, int);
48411798SRoger.Faulkner@Sun.COM i3 = va_arg(ap, int);
48511798SRoger.Faulkner@Sun.COM va_end(ap);
48611798SRoger.Faulkner@Sun.COM return (fchown(i1, i2, i3));
48711798SRoger.Faulkner@Sun.COM case XSYS_fork:
48811798SRoger.Faulkner@Sun.COM va_end(ap);
48911798SRoger.Faulkner@Sun.COM return (fork1());
4903224Sraf
4910Sstevel@tonic-gate /* the following system calls are now implemented in
4920Sstevel@tonic-gate * libsocket */
4930Sstevel@tonic-gate case XSYS_accept:
4940Sstevel@tonic-gate i1 = va_arg(ap, int);
4950Sstevel@tonic-gate c1 = va_arg(ap, char *);
4960Sstevel@tonic-gate c2 = (char *)va_arg(ap, int *);
497722Smuffin va_end(ap);
498722Smuffin return (_accept(i1, c1, c2));
4990Sstevel@tonic-gate case XSYS_bind:
5000Sstevel@tonic-gate i1 = va_arg(ap, int);
5010Sstevel@tonic-gate c1 = va_arg(ap, char *);
5020Sstevel@tonic-gate i2 = va_arg(ap, int);
503722Smuffin va_end(ap);
504722Smuffin return (_bind(i1, c1, i2));
5050Sstevel@tonic-gate case XSYS_connect:
5060Sstevel@tonic-gate i1 = va_arg(ap, int);
5070Sstevel@tonic-gate c1 = va_arg(ap, char *);
5080Sstevel@tonic-gate i2 = va_arg(ap, int);
509722Smuffin va_end(ap);
510722Smuffin return (_connect(i1, c1, i2));
5110Sstevel@tonic-gate case XSYS_getsockopt:
5120Sstevel@tonic-gate i1 = va_arg(ap, int);
5130Sstevel@tonic-gate i2 = va_arg(ap, int);
5140Sstevel@tonic-gate i3 = va_arg(ap, int);
5150Sstevel@tonic-gate c1 = va_arg(ap, char *);
5160Sstevel@tonic-gate c2 = va_arg(ap, char *);
517722Smuffin va_end(ap);
518722Smuffin return (_getsockopt(i1, i2, i3, c1, c2));
5190Sstevel@tonic-gate case XSYS_getpeername:
5200Sstevel@tonic-gate i1 = va_arg(ap, int);
5210Sstevel@tonic-gate c1 = va_arg(ap, char *);
5220Sstevel@tonic-gate c2 = va_arg(ap, char *);
523722Smuffin va_end(ap);
524722Smuffin return (_getpeername(i1, c1, c2));
5250Sstevel@tonic-gate case XSYS_getsockname:
5260Sstevel@tonic-gate i1 = va_arg(ap, int);
5270Sstevel@tonic-gate c1 = va_arg(ap, char *);
5280Sstevel@tonic-gate c2 = va_arg(ap, char *);
529722Smuffin va_end(ap);
530722Smuffin return (_getsockname(i1, c1, c2));
5310Sstevel@tonic-gate case XSYS_getdomainname:
5320Sstevel@tonic-gate c1 = va_arg(ap, char *);
5330Sstevel@tonic-gate i1 = va_arg(ap, int);
534722Smuffin va_end(ap);
535722Smuffin return (getdomainname(c1, i1));
5360Sstevel@tonic-gate case XSYS_listen:
5370Sstevel@tonic-gate i1 = va_arg(ap, int);
5380Sstevel@tonic-gate i2 = va_arg(ap, int);
539722Smuffin va_end(ap);
540722Smuffin return (_listen(i1, i2));
5410Sstevel@tonic-gate case XSYS_recv:
5420Sstevel@tonic-gate i1 = va_arg(ap, int);
5430Sstevel@tonic-gate c1 = va_arg(ap, char *);
5440Sstevel@tonic-gate i2 = va_arg(ap, int);
5450Sstevel@tonic-gate i3 = va_arg(ap, int);
546722Smuffin va_end(ap);
547722Smuffin return (_recv(i1, c1, i2, i3));
5480Sstevel@tonic-gate case XSYS_recvfrom:
5490Sstevel@tonic-gate i1 = va_arg(ap, int);
5500Sstevel@tonic-gate c1 = va_arg(ap, char *);
5510Sstevel@tonic-gate i2 = va_arg(ap, int);
5520Sstevel@tonic-gate i3 = va_arg(ap, int);
5530Sstevel@tonic-gate c2 = va_arg(ap, char *);
5540Sstevel@tonic-gate c3 = va_arg(ap, char *);
555722Smuffin va_end(ap);
556722Smuffin return (_recvfrom(i1, c1, i2, i3, c2, c3));
5570Sstevel@tonic-gate case XSYS_recvmsg:
5580Sstevel@tonic-gate i1 = va_arg(ap, int);
5590Sstevel@tonic-gate c1 = va_arg(ap, char *);
5600Sstevel@tonic-gate i2 = va_arg(ap, int);
561722Smuffin va_end(ap);
562722Smuffin return (_recvmsg(i1, c1, i2));
5630Sstevel@tonic-gate case XSYS_send:
5640Sstevel@tonic-gate i1 = va_arg(ap, int);
5650Sstevel@tonic-gate c1 = va_arg(ap, char *);
5660Sstevel@tonic-gate i2 = va_arg(ap, int);
5670Sstevel@tonic-gate i3 = va_arg(ap, int);
568722Smuffin va_end(ap);
569722Smuffin return (_send(i1, c1, i2, i3));
5700Sstevel@tonic-gate case XSYS_sendto:
5710Sstevel@tonic-gate i1 = va_arg(ap, int);
5720Sstevel@tonic-gate c1 = va_arg(ap, char *);
5730Sstevel@tonic-gate i2 = va_arg(ap, int);
5740Sstevel@tonic-gate i3 = va_arg(ap, int);
5750Sstevel@tonic-gate c2 = va_arg(ap, char *);
5760Sstevel@tonic-gate i4 = va_arg(ap, int);
577722Smuffin va_end(ap);
578722Smuffin return (_sendto(i1, c1, i2, i3, c2, i4));
5790Sstevel@tonic-gate case XSYS_sendmsg:
5800Sstevel@tonic-gate i1 = va_arg(ap, int);
5810Sstevel@tonic-gate c1 = va_arg(ap, char *);
5820Sstevel@tonic-gate i2 = va_arg(ap, int);
583722Smuffin va_end(ap);
584722Smuffin return (_sendmsg(i1, c1, i2));
5850Sstevel@tonic-gate case XSYS_setdomainname:
5860Sstevel@tonic-gate c1 = va_arg(ap, char *);
5870Sstevel@tonic-gate i1 = va_arg(ap, int);
588722Smuffin va_end(ap);
589722Smuffin return (setdomainname(c1 ,i1));
5900Sstevel@tonic-gate case XSYS_setsockopt:
5910Sstevel@tonic-gate i1 = va_arg(ap, int);
5920Sstevel@tonic-gate i2 = va_arg(ap, int);
5930Sstevel@tonic-gate i3 = va_arg(ap, int);
5940Sstevel@tonic-gate c1 = va_arg(ap, char *);
5950Sstevel@tonic-gate i4 = va_arg(ap, int);
596722Smuffin va_end(ap);
597722Smuffin return (_setsockopt(i1, i2, i3, c1, i4));
5980Sstevel@tonic-gate case XSYS_shutdown:
5990Sstevel@tonic-gate i1 = va_arg(ap, int);
6000Sstevel@tonic-gate i2 = va_arg(ap, int);
601722Smuffin va_end(ap);
602722Smuffin return (_shutdown(i1, i2));
6030Sstevel@tonic-gate case XSYS_socket:
6040Sstevel@tonic-gate i1 = va_arg(ap, int);
6050Sstevel@tonic-gate i2 = va_arg(ap, int);
6060Sstevel@tonic-gate i3 = va_arg(ap, int);
607722Smuffin va_end(ap);
608722Smuffin return (_socket(i1, i2, i3));
6090Sstevel@tonic-gate case XSYS_socketpair:
6100Sstevel@tonic-gate i1 = va_arg(ap, int);
6110Sstevel@tonic-gate i2 = va_arg(ap, int);
6120Sstevel@tonic-gate i3 = va_arg(ap, int);
6130Sstevel@tonic-gate c1 = va_arg(ap, char *);
614722Smuffin va_end(ap);
615722Smuffin return (_socketpair(i1, i2, i3, c1));
6160Sstevel@tonic-gate
6170Sstevel@tonic-gate
6180Sstevel@tonic-gate /* The following can directly go through syscall */
6190Sstevel@tonic-gate case XSYS_acct:
6203224Sraf case XSYS_adjtime:
6213224Sraf case XSYS_exit:
6223224Sraf case XSYS_fchdir:
6230Sstevel@tonic-gate case XSYS_fchroot:
6243224Sraf case XSYS_getgid:
6250Sstevel@tonic-gate case XSYS_getitimer:
6260Sstevel@tonic-gate case XSYS_getmsg:
6273224Sraf case XSYS_getpid:
6283224Sraf case XSYS_getuid:
6293224Sraf case XSYS_mincore:
6303224Sraf case XSYS_mprotect:
6313224Sraf case XSYS_munmap:
6323224Sraf case XSYS_putmsg:
6333224Sraf case XSYS_profil:
6340Sstevel@tonic-gate case XSYS_setitimer:
6353224Sraf case XSYS_sync:
6363224Sraf case XSYS_umask:
6370Sstevel@tonic-gate case XSYS_semsys:
6383224Sraf case XSYS_msgsys:
6393224Sraf case XSYS_shmsys:
6403224Sraf case XSYS_mmap:
641722Smuffin case XSYS_vhangup:
642722Smuffin ret_val = _syscall(syscallnum[sysnum], ap);
643722Smuffin va_end(ap);
644722Smuffin return (ret_val);
6450Sstevel@tonic-gate
6460Sstevel@tonic-gate case XSYS_aioread:
6470Sstevel@tonic-gate case XSYS_aiowrite:
6480Sstevel@tonic-gate case XSYS_aiocancel:
6490Sstevel@tonic-gate case XSYS_swapon:
6500Sstevel@tonic-gate case XSYS_async_daemon:
6513224Sraf case XSYS_getfh:
6520Sstevel@tonic-gate case XSYS_nfssvc:
6533224Sraf case XSYS_exportfs:
6543224Sraf case XSYS_auditsys:
6553224Sraf case XSYS_vpixsys:
6560Sstevel@tonic-gate case XSYS_quotactl:
6573224Sraf case XSYS_getdopt:
6580Sstevel@tonic-gate case XSYS_setdopt:
6590Sstevel@tonic-gate case XSYS_ustat:
6600Sstevel@tonic-gate case XSYS_vtrace:
6610Sstevel@tonic-gate case XSYS_reboot:
6620Sstevel@tonic-gate case XSYS_madvise:
6630Sstevel@tonic-gate case XSYS_vadvise:
6640Sstevel@tonic-gate case XSYS_getdirentries:
665722Smuffin va_end(ap);
6660Sstevel@tonic-gate fprintf(stderr,"system call not supported\n");
6670Sstevel@tonic-gate return(-1);
6680Sstevel@tonic-gate }
669722Smuffin va_end(ap);
670722Smuffin return (-1);
6710Sstevel@tonic-gate }
672