1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright (c) 1990, 2010, Oracle and/or its affiliates. All rights reserved. 24 */ 25 26 #include <errno.h> 27 #include <stdio.h> 28 #include <stdarg.h> 29 #include <sys/syscall.h> 30 #include "xsyscall.h" 31 32 /* 33 * Array of SVR4 system call numbers. The 4.1 numbers are mapped 34 * to their SVR4/5.0 equivalents before trapping into the kernel. 35 */ 36 37 int syscallnum[190] = { SYS_syscall, SYS_exit, -1 /*fork1*/, 38 SYS_read, SYS_write, -1 /*open*/, SYS_close, 39 -1, -1 /*creat*/, -1 /*link*/, -1 /*unlink*/, 40 -1, SYS_chdir, 0, -1 /*mknod*/, 41 -1 /*chmod*/, -1 /*lchown*/, 0, 0, 42 SYS_lseek, SYS_getpid, 0, 0, 43 0, SYS_getuid, 0, 0, 44 0, 0, 0, 0, 45 0, 0, -1 /*access*/, 0, 46 0, SYS_sync, SYS_kill, -1 /*stat*/, 47 0, -1 /*lstat*/, -1 /*dup*/, SYS_pipe, 48 0, SYS_profil, 0, 0, 49 SYS_getgid, 0, 0, 0, 50 SYS_acct, 0, -1, SYS_ioctl, 51 -1 /*reboot*/, 0, -1 /*symlink*/, -1 /*readlink*/, 52 SYS_execve, SYS_umask, SYS_chroot, -1 /*fstat*/, 53 0, -1/*getpagesize*/,-1, 0, 54 0, 0, -1, -1, 55 SYS_mmap, -1, SYS_munmap, SYS_mprotect, 56 -1 /*advise*/, SYS_vhangup, 0, SYS_mincore, 57 SYS_getgroups, SYS_setgroups, -1 /*getpgrp*/, -1 /*setpgrp*/, 58 SYS_setitimer, 0, -1 /*swapon*/, SYS_getitimer, 59 -1/*gethostname*/,-1/*sethostname*/,-1/*getdtablesize*/,-1/*dup2*/, 60 -1/*getdopt*/, SYS_fcntl, -1 /*select*/, -1 /*setdopt*/, 61 SYS_fdsync, -1 /*setprio*/, -1 /*socket*/, -1 /*connect*/, 62 -1 /*accept*/, -1 /*getprio*/, -1 /*send*/, -1 /*recv*/, 63 0, -1 /*bind*/, -1 /*setsockopt*/,-1 /*listen*/, 64 0, -1 /*sigvec*/, -1 /*sigblock*/, -1 /*sigsetmask*/, 65 -1 /*sigpause*/, -1 /*sigstack*/, -1 /*recvmsg*/, -1 /*sendmsg*/, 66 -1 /*vtrace*/, SYS_gettimeofday, -1 /*getrusage*/, -1 /*getsockopt*/, 67 0, SYS_readv, SYS_writev, -1 /*settimeofday*/, 68 -1 /*fchown*/, -1 /*fchmod*/, -1 /*recvfrom*/, -1 /*setreuid*/, 69 -1 /*getregid*/, -1 /*rename*/, -1 /*truncate*/, -1 /*ftruncate*/, 70 -1 /*flock*/, 0, -1 /*sendto*/, -1 /*shutdown*/, 71 -1 /*socketpair*/, -1 /*mkdir*/, -1 /*rmdir*/, -1 /*utimes*/, 72 0, SYS_adjtime, -1 /*getpeername*/,-1 /*gethostid*/, 73 0, SYS_getrlimit, SYS_setrlimit, -1 /*killpg*/, 74 0, 0, 0, -1/*getsockname*/, 75 SYS_getmsg, SYS_putmsg, -1 /*poll*/, 0, 76 -1/*nfssvc*/, -1 /*getdirentries*/, SYS_statfs, SYS_fstatfs, 77 -1/*SYS_umount*/, -1 /*async_daemmon*/ -1 /*getfh*/, -1/*getdomain*/, 78 -1/*setdomain*/, 0, -1 /*quotactl*/, -1 /*exportfs*/, 79 SYS_mount, -1/*ustat*/, SYS_semsys, SYS_msgsys, 80 SYS_shmsys, -1 /*auditsys*/, -1 /*rfsys*/, SYS_getdents, 81 -1 /*setsid*/, SYS_fchdir, SYS_fchroot, -1 /*vpixsys*/, 82 -1 /*aioread*/, -1 /*aiowrite*/, -1 /*aiocancel*/, SYS_sigpending, 83 0, -1 /*setpgid*/, SYS_pathconf, SYS_uname, 84 }; 85 86 int 87 syscall(int sysnum, ...) 88 { 89 va_list ap; 90 int i1, i2, i3, i4; 91 char *c1, *c2, *c3, *c4; 92 int ret_val; 93 94 va_start(ap, sysnum); 95 switch(sysnum) { 96 case XSYS_read: 97 i1 = va_arg(ap, int); 98 c1 = va_arg(ap, char *); 99 i2 = va_arg(ap, int); 100 va_end(ap); 101 return (bc_read(i1, c1, i2)); 102 case XSYS_write: 103 i1 = va_arg(ap, int); 104 c1 = va_arg(ap, char *); 105 i2 = va_arg(ap, int); 106 va_end(ap); 107 return (bc_write(i1, c1, i2)); 108 case XSYS_readv: 109 i1 = va_arg(ap, int); 110 c1 = va_arg(ap, char *); 111 i2 = va_arg(ap, int); 112 va_end(ap); 113 return (bc_readv(i1, c1, i2)); 114 case XSYS_writev: 115 i1 = va_arg(ap, int); 116 c1 = va_arg(ap, char *); 117 i2 = va_arg(ap, int); 118 va_end(ap); 119 return (bc_writev(i1, c1, i2)); 120 case XSYS_open: 121 c1 = va_arg(ap, char *); 122 i1 = va_arg(ap, int); 123 i2 = va_arg(ap, int); 124 va_end(ap); 125 if (i2) 126 return (bc_open(c1, i1, i2)); 127 else 128 return (bc_open(c1, i1)); 129 case XSYS_close: 130 i1 = va_arg(ap, int); 131 va_end(ap); 132 return (bc_close(i1)); 133 case XSYS_fcntl: 134 i1 = va_arg(ap, int); 135 i2 = va_arg(ap, int); 136 i3 = va_arg(ap, int); 137 va_end(ap); 138 return (bc_fcntl(i1, i2, i3)); 139 case XSYS_select: 140 i1 = va_arg(ap, int); 141 c1 = va_arg(ap, char *); 142 c2 = va_arg(ap, char *); 143 c3 = va_arg(ap, char *); 144 c4 = va_arg(ap, char *); 145 va_end(ap); 146 return (select(i1, c1, c2, c3, c4)); 147 case XSYS_ioctl : 148 i1 = va_arg(ap, int); 149 i2 = va_arg(ap, int); 150 c1 = va_arg(ap, char *); 151 va_end(ap); 152 return (bc_ioctl(i1, i2, c1)); 153 case XSYS_stat: 154 c1 = va_arg(ap, char *); 155 c2 = va_arg(ap, char *); 156 va_end(ap); 157 return (bc_stat(c1, c2)); 158 case XSYS_lstat: 159 c1 = va_arg(ap, char *); 160 c2 = va_arg(ap, char *); 161 va_end(ap); 162 return (bc_lstat(c1, c2)); 163 case XSYS_fstat: 164 i1 = va_arg(ap, int); 165 c1 = va_arg(ap, char *); 166 va_end(ap); 167 return (bc_fstat(i1, c1)); 168 case XSYS_getdents: 169 i1 = va_arg(ap, int); 170 c1 = va_arg(ap, char *); 171 i2 = va_arg(ap, int); 172 va_end(ap); 173 return (bc_getdents(i1, c1, i2)); 174 case XSYS_kill: 175 i1 = va_arg(ap, int); 176 i2 = va_arg(ap, int); 177 va_end(ap); 178 return (bc_kill(i1, i2)); 179 case XSYS_mount: 180 c1 = va_arg(ap, char *); 181 c2 = va_arg(ap, char *); 182 i1 = va_arg(ap, int); 183 c3 = va_arg(ap, char *); 184 va_end(ap); 185 return (mount(c1, c2, i1, c3)); 186 case XSYS_getrlimit: 187 i1 = va_arg(ap, int); 188 c1 = va_arg(ap, char *); 189 va_end(ap); 190 return (bc_getrlimit(i1, c1)); 191 case XSYS_setrlimit: 192 i1 = va_arg(ap, int); 193 c1 = va_arg(ap, char *); 194 va_end(ap); 195 return (bc_setrlimit(i1, c1)); 196 case XSYS_uname: 197 c1 = va_arg(ap, char *); 198 va_end(ap); 199 return (bc_uname(c1)); 200 case XSYS_creat: 201 c1 = va_arg(ap, char *); 202 i1 = va_arg(ap, int); 203 va_end(ap); 204 return (creat(c1, i1)); 205 case XSYS_unmount: 206 c1 = va_arg(ap, char *); 207 va_end(ap); 208 return (umount(c1)); 209 case XSYS_link: 210 c1 = va_arg(ap, char *); 211 c2 = va_arg(ap, char *); 212 va_end(ap); 213 return (link(c1, c2)); 214 case XSYS_unlink: 215 c1 = va_arg(ap, char *); 216 va_end(ap); 217 return (unlink(c1)); 218 case XSYS_chdir: 219 c1 = va_arg(ap, char *); 220 va_end(ap); 221 return (chdir(c1)); 222 case XSYS_mknod: 223 c1 = va_arg(ap, char *); 224 i1 = va_arg(ap, int); 225 i2 = va_arg(ap, int); 226 va_end(ap); 227 return (mknod(c1, i1, i2)); 228 case XSYS_chmod: 229 c1 = va_arg(ap, char *); 230 i1 = va_arg(ap, int); 231 va_end(ap); 232 return (chmod(c1, i1)); 233 case XSYS_chown: 234 c1 = va_arg(ap, char *); 235 i1 = va_arg(ap, int); 236 i2 = va_arg(ap, int); 237 va_end(ap); 238 return (chown(c1, i1, i2)); 239 case XSYS_lseek: 240 i1 = va_arg(ap, int); 241 i2 = va_arg(ap, int); 242 i3 = va_arg(ap, int); 243 va_end(ap); 244 return (lseek(i1, i2, i3)); 245 case XSYS_access: 246 c1 = va_arg(ap, char *); 247 i1 = va_arg(ap, int); 248 va_end(ap); 249 return (access(c1, i1)); 250 case XSYS_dup: 251 i1 = va_arg(ap, int); 252 va_end(ap); 253 return (dup(i1)); 254 case XSYS_dup2: 255 i1 = va_arg(ap, int); 256 i2 = va_arg(ap, int); 257 va_end(ap); 258 return (dup2(i1, i2)); 259 case XSYS_pipe: 260 c1 = (char *)va_arg(ap, int *); 261 va_end(ap); 262 return (pipe(c1)); 263 case XSYS_symlink: 264 c1 = va_arg(ap, char *); 265 c2 = va_arg(ap, char *); 266 va_end(ap); 267 return (symlink(c1, c2)); 268 case XSYS_readlink: 269 c1 = va_arg(ap, char *); 270 c2 = va_arg(ap, char *); 271 i1 = va_arg(ap, int); 272 va_end(ap); 273 return (readlink(c1, c2, i1)); 274 case XSYS_execve: 275 c1 = va_arg(ap, char *); 276 c2 = (char *)va_arg(ap, char **); 277 c3 = (char *)va_arg(ap, char **); 278 va_end(ap); 279 return (execve(c1, c2, c3)); 280 case XSYS_chroot: 281 c1 = va_arg(ap, char *); 282 va_end(ap); 283 return (chroot(c1)); 284 case XSYS_getgroups: 285 i1 = va_arg(ap, int); 286 c1 = (char *)va_arg(ap, int *); 287 va_end(ap); 288 return (getgroups(i1, c1)); 289 case XSYS_setgroups: 290 i1 = va_arg(ap, int); 291 c1 = (char *)va_arg(ap, int *); 292 va_end(ap); 293 return (setgroups(i1, c1)); 294 case XSYS_fsync: 295 i1 = va_arg(ap, int); 296 va_end(ap); 297 return (fsync(i1)); 298 case XSYS_gettimeofday: 299 c1 = va_arg(ap, char *); 300 c2 = va_arg(ap, char *); 301 va_end(ap); 302 return (gettimeofday(c1, c2)); 303 case XSYS_settimeofday: 304 c1 = va_arg(ap, char *); 305 c2 = va_arg(ap, char *); 306 va_end(ap); 307 return (settimeofday(c1, c2)); 308 case XSYS_rename: 309 c1 = va_arg(ap, char *); 310 c2 = va_arg(ap, char *); 311 va_end(ap); 312 return (rename(c1, c2)); 313 case XSYS_mkdir: 314 c1 = va_arg(ap, char *); 315 i1 = va_arg(ap, int); 316 va_end(ap); 317 return (mkdir(c1, i1)); 318 case XSYS_rmdir: 319 c1 = va_arg(ap, char *); 320 va_end(ap); 321 return (rmdir(c1)); 322 case XSYS_statfs: 323 c1 = va_arg(ap, char *); 324 c2 = va_arg(ap, char *); 325 va_end(ap); 326 return (statfs(c1, c2)); 327 case XSYS_fstatfs: 328 i1 = va_arg(ap, int); 329 c1 = va_arg(ap, char *); 330 va_end(ap); 331 return (fstatfs(i1, c1)); 332 case XSYS_getpagesize: 333 va_end(ap); 334 return (getpagesize()); 335 case XSYS_gethostid: 336 va_end(ap); 337 return (gethostid()); 338 case XSYS_getdtablesize: 339 va_end(ap); 340 return (getdtablesize()); 341 case XSYS_pathconf: 342 c1 = va_arg(ap, char *); 343 i1 = va_arg(ap, int); 344 va_end(ap); 345 return (pathconf(c1, i1)); 346 case XSYS_gethostname: 347 c1 = va_arg(ap, char *); 348 i1 = va_arg(ap, int); 349 va_end(ap); 350 return (gethostname(c1, i1)); 351 case XSYS_sethostname: 352 c1 = va_arg(ap, char *); 353 i1 = va_arg(ap, int); 354 va_end(ap); 355 return (sethostname(c1, i1)); 356 case XSYS_setreuid: 357 i1 = va_arg(ap, int); 358 i2 = va_arg(ap, int); 359 va_end(ap); 360 return (setreuid(i1, i2)); 361 case XSYS_setregid: 362 i1 = va_arg(ap, int); 363 i2 = va_arg(ap, int); 364 va_end(ap); 365 return (setregid(i1, i2)); 366 case XSYS_getpriority: 367 i1 = va_arg(ap, int); 368 i2 = va_arg(ap, int); 369 va_end(ap); 370 return (getpriority(i1, i2)); 371 case XSYS_setpriority: 372 i1 = va_arg(ap, int); 373 i2 = va_arg(ap, int); 374 i3 = va_arg(ap, int); 375 va_end(ap); 376 return (setpriority(i1, i2, i3)); 377 case XSYS_sigvec: 378 i1 = va_arg(ap, int); 379 c1 = va_arg(ap, char *); 380 c2 = va_arg(ap, char *); 381 va_end(ap); 382 return (sigvec(i1, c1, c2)); 383 case XSYS_sigblock: 384 i1 = va_arg(ap, int); 385 va_end(ap); 386 return (sigblock(i1)); 387 case XSYS_sigpending: 388 c1 = va_arg(ap, char *); 389 va_end(ap); 390 return (sigpending(c1)); 391 case XSYS_sigsetmask: 392 i1 = va_arg(ap, int); 393 va_end(ap); 394 return (sigsetmask(i1)); 395 case XSYS_sigpause: 396 c1 = va_arg(ap, char *); 397 va_end(ap); 398 return (sigpause(c1)); 399 case XSYS_sigstack: 400 c1 = va_arg(ap, char *); 401 c2 = va_arg(ap, char *); 402 va_end(ap); 403 return (sigstack(c1, c2)); 404 case XSYS_truncate: 405 c1 = va_arg(ap, char *); 406 i1 = va_arg(ap, int); 407 va_end(ap); 408 return (truncate(c1, i1)); 409 case XSYS_ftruncate: 410 i1 = va_arg(ap, int); 411 i2 = va_arg(ap, int); 412 va_end(ap); 413 return (ftruncate(i1, i2)); 414 case XSYS_killpg: 415 i1 = va_arg(ap, int); 416 i2 = va_arg(ap, int); 417 va_end(ap); 418 return (killpg(i1, i2)); 419 case XSYS_setpgid: 420 i1 = va_arg(ap, int); 421 i2 = va_arg(ap, int); 422 va_end(ap); 423 return (setpgid(i1, i2)); 424 case XSYS_ptrace: 425 i1 = va_arg(ap, int); 426 i2 = va_arg(ap, int); 427 i3 = va_arg(ap, int); 428 c1 = va_arg(ap, char *); 429 i4 = va_arg(ap, int); 430 c2 = va_arg(ap, char *); 431 va_end(ap); 432 return (ptrace(i1, i2, i3, c1, i4, c2)); 433 #ifdef S5EMUL 434 case XSYS_getpgrp: 435 va_end(ap); 436 return (getpgrp()); 437 case XSYS_setpgrp: 438 va_end(ap); 439 return (setpgrp()); 440 #else 441 case XSYS_getpgrp: 442 i1 = va_arg(ap, int); 443 va_end(ap); 444 return (getpgrp(i1)); 445 case XSYS_setpgrp: 446 i1 = va_arg(ap, int); 447 i2 = va_arg(ap, int); 448 va_end(ap); 449 return (setpgrp(i1, i2)); 450 #endif 451 case XSYS_getrusage: 452 i1 = va_arg(ap, int); 453 c1 = va_arg(ap, char *); 454 va_end(ap); 455 return (getrusage(i1, c1)); 456 case XSYS_setsid: 457 va_end(ap); 458 return (setsid()); 459 460 case XSYS_flock: 461 i1 = va_arg(ap, int); 462 i2 = va_arg(ap, int); 463 va_end(ap); 464 return (flock(i1, i2)); 465 case XSYS_utimes: 466 c1 = va_arg(ap, char *); 467 c2 = va_arg(ap, char *); 468 va_end(ap); 469 return (utimes(c1, c2)); 470 case XSYS_poll: 471 c1 = va_arg(ap, char *); 472 i2 = va_arg(ap, int); 473 i3 = va_arg(ap, int); 474 va_end(ap); 475 return (poll(c1, i2, i3)); 476 case XSYS_fchmod: 477 i1 = va_arg(ap, int); 478 i2 = va_arg(ap, int); 479 va_end(ap); 480 return (fchmod(i1, i2)); 481 case XSYS_fchown: 482 i1 = va_arg(ap, int); 483 i2 = va_arg(ap, int); 484 i3 = va_arg(ap, int); 485 va_end(ap); 486 return (fchown(i1, i2, i3)); 487 case XSYS_fork: 488 va_end(ap); 489 return (fork1()); 490 491 /* the following system calls are now implemented in 492 * libsocket */ 493 case XSYS_accept: 494 i1 = va_arg(ap, int); 495 c1 = va_arg(ap, char *); 496 c2 = (char *)va_arg(ap, int *); 497 va_end(ap); 498 return (_accept(i1, c1, c2)); 499 case XSYS_bind: 500 i1 = va_arg(ap, int); 501 c1 = va_arg(ap, char *); 502 i2 = va_arg(ap, int); 503 va_end(ap); 504 return (_bind(i1, c1, i2)); 505 case XSYS_connect: 506 i1 = va_arg(ap, int); 507 c1 = va_arg(ap, char *); 508 i2 = va_arg(ap, int); 509 va_end(ap); 510 return (_connect(i1, c1, i2)); 511 case XSYS_getsockopt: 512 i1 = va_arg(ap, int); 513 i2 = va_arg(ap, int); 514 i3 = va_arg(ap, int); 515 c1 = va_arg(ap, char *); 516 c2 = va_arg(ap, char *); 517 va_end(ap); 518 return (_getsockopt(i1, i2, i3, c1, c2)); 519 case XSYS_getpeername: 520 i1 = va_arg(ap, int); 521 c1 = va_arg(ap, char *); 522 c2 = va_arg(ap, char *); 523 va_end(ap); 524 return (_getpeername(i1, c1, c2)); 525 case XSYS_getsockname: 526 i1 = va_arg(ap, int); 527 c1 = va_arg(ap, char *); 528 c2 = va_arg(ap, char *); 529 va_end(ap); 530 return (_getsockname(i1, c1, c2)); 531 case XSYS_getdomainname: 532 c1 = va_arg(ap, char *); 533 i1 = va_arg(ap, int); 534 va_end(ap); 535 return (getdomainname(c1, i1)); 536 case XSYS_listen: 537 i1 = va_arg(ap, int); 538 i2 = va_arg(ap, int); 539 va_end(ap); 540 return (_listen(i1, i2)); 541 case XSYS_recv: 542 i1 = va_arg(ap, int); 543 c1 = va_arg(ap, char *); 544 i2 = va_arg(ap, int); 545 i3 = va_arg(ap, int); 546 va_end(ap); 547 return (_recv(i1, c1, i2, i3)); 548 case XSYS_recvfrom: 549 i1 = va_arg(ap, int); 550 c1 = va_arg(ap, char *); 551 i2 = va_arg(ap, int); 552 i3 = va_arg(ap, int); 553 c2 = va_arg(ap, char *); 554 c3 = va_arg(ap, char *); 555 va_end(ap); 556 return (_recvfrom(i1, c1, i2, i3, c2, c3)); 557 case XSYS_recvmsg: 558 i1 = va_arg(ap, int); 559 c1 = va_arg(ap, char *); 560 i2 = va_arg(ap, int); 561 va_end(ap); 562 return (_recvmsg(i1, c1, i2)); 563 case XSYS_send: 564 i1 = va_arg(ap, int); 565 c1 = va_arg(ap, char *); 566 i2 = va_arg(ap, int); 567 i3 = va_arg(ap, int); 568 va_end(ap); 569 return (_send(i1, c1, i2, i3)); 570 case XSYS_sendto: 571 i1 = va_arg(ap, int); 572 c1 = va_arg(ap, char *); 573 i2 = va_arg(ap, int); 574 i3 = va_arg(ap, int); 575 c2 = va_arg(ap, char *); 576 i4 = va_arg(ap, int); 577 va_end(ap); 578 return (_sendto(i1, c1, i2, i3, c2, i4)); 579 case XSYS_sendmsg: 580 i1 = va_arg(ap, int); 581 c1 = va_arg(ap, char *); 582 i2 = va_arg(ap, int); 583 va_end(ap); 584 return (_sendmsg(i1, c1, i2)); 585 case XSYS_setdomainname: 586 c1 = va_arg(ap, char *); 587 i1 = va_arg(ap, int); 588 va_end(ap); 589 return (setdomainname(c1 ,i1)); 590 case XSYS_setsockopt: 591 i1 = va_arg(ap, int); 592 i2 = va_arg(ap, int); 593 i3 = va_arg(ap, int); 594 c1 = va_arg(ap, char *); 595 i4 = va_arg(ap, int); 596 va_end(ap); 597 return (_setsockopt(i1, i2, i3, c1, i4)); 598 case XSYS_shutdown: 599 i1 = va_arg(ap, int); 600 i2 = va_arg(ap, int); 601 va_end(ap); 602 return (_shutdown(i1, i2)); 603 case XSYS_socket: 604 i1 = va_arg(ap, int); 605 i2 = va_arg(ap, int); 606 i3 = va_arg(ap, int); 607 va_end(ap); 608 return (_socket(i1, i2, i3)); 609 case XSYS_socketpair: 610 i1 = va_arg(ap, int); 611 i2 = va_arg(ap, int); 612 i3 = va_arg(ap, int); 613 c1 = va_arg(ap, char *); 614 va_end(ap); 615 return (_socketpair(i1, i2, i3, c1)); 616 617 618 /* The following can directly go through syscall */ 619 case XSYS_acct: 620 case XSYS_adjtime: 621 case XSYS_exit: 622 case XSYS_fchdir: 623 case XSYS_fchroot: 624 case XSYS_getgid: 625 case XSYS_getitimer: 626 case XSYS_getmsg: 627 case XSYS_getpid: 628 case XSYS_getuid: 629 case XSYS_mincore: 630 case XSYS_mprotect: 631 case XSYS_munmap: 632 case XSYS_putmsg: 633 case XSYS_profil: 634 case XSYS_setitimer: 635 case XSYS_sync: 636 case XSYS_umask: 637 case XSYS_semsys: 638 case XSYS_msgsys: 639 case XSYS_shmsys: 640 case XSYS_mmap: 641 case XSYS_vhangup: 642 ret_val = _syscall(syscallnum[sysnum], ap); 643 va_end(ap); 644 return (ret_val); 645 646 case XSYS_aioread: 647 case XSYS_aiowrite: 648 case XSYS_aiocancel: 649 case XSYS_swapon: 650 case XSYS_async_daemon: 651 case XSYS_getfh: 652 case XSYS_nfssvc: 653 case XSYS_exportfs: 654 case XSYS_auditsys: 655 case XSYS_vpixsys: 656 case XSYS_quotactl: 657 case XSYS_getdopt: 658 case XSYS_setdopt: 659 case XSYS_ustat: 660 case XSYS_vtrace: 661 case XSYS_reboot: 662 case XSYS_madvise: 663 case XSYS_vadvise: 664 case XSYS_getdirentries: 665 va_end(ap); 666 fprintf(stderr,"system call not supported\n"); 667 return(-1); 668 } 669 va_end(ap); 670 return (-1); 671 } 672