diff options
author | muffin <none@none> | 2005-10-20 11:47:44 -0700 |
---|---|---|
committer | muffin <none@none> | 2005-10-20 11:47:44 -0700 |
commit | 5d54f3d8999eac1762fe0a8c7177d20f1f201fae (patch) | |
tree | 65c7761c305dbd97609e64517f5781b433efa980 /usr/src/lib/libbc/libc/sys/common/syscall.c | |
parent | 1b42782e10f177b2bd092559506a96dbbefefa54 (diff) | |
download | illumos-gate-5d54f3d8999eac1762fe0a8c7177d20f1f201fae.tar.gz |
6309237 gcc and libbc don't get along
Diffstat (limited to 'usr/src/lib/libbc/libc/sys/common/syscall.c')
-rw-r--r-- | usr/src/lib/libbc/libc/sys/common/syscall.c | 302 |
1 files changed, 200 insertions, 102 deletions
diff --git a/usr/src/lib/libbc/libc/sys/common/syscall.c b/usr/src/lib/libbc/libc/sys/common/syscall.c index 93eb70df09..e81069a2fd 100644 --- a/usr/src/lib/libbc/libc/sys/common/syscall.c +++ b/usr/src/lib/libbc/libc/sys/common/syscall.c @@ -18,15 +18,17 @@ * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END - * + */ +/* * Copyright 1995 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ + #pragma ident "%Z%%M% %I% %E% SMI" #include <errno.h> #include <stdio.h> -#include <varargs.h> +#include <stdarg.h> #include <sys/syscall.h> #include "xsyscall.h" @@ -84,280 +86,344 @@ int syscallnum[190] = { SYS_syscall, SYS_exit, SYS_fork, 0, -1 /*setpgid*/, SYS_pathconf, SYS_uname, }; - -syscall(sysnum, va_alist) -int sysnum; -va_dcl +int +syscall(int sysnum, ...) { va_list ap; int i1, i2, i3, i4; char *c1, *c2, *c3, *c4; + int ret_val; - va_start(ap); + va_start(ap, sysnum); switch(sysnum) { case XSYS_read: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); - return(bc_read(i1, c1, i2)); + va_end(ap); + return (bc_read(i1, c1, i2)); case XSYS_write: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); - return(bc_write(i1, c1, i2)); + va_end(ap); + return (bc_write(i1, c1, i2)); case XSYS_readv: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); - return(bc_readv(i1, c1, i2)); + va_end(ap); + return (bc_readv(i1, c1, i2)); case XSYS_writev: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); - return(bc_writev(i1, c1, i2)); + va_end(ap); + return (bc_writev(i1, c1, i2)); case XSYS_open: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); i2 = va_arg(ap, int); + va_end(ap); if (i2) - return(bc_open(c1, i1, i2)); + return (bc_open(c1, i1, i2)); else - return(bc_open(c1, i1)); + return (bc_open(c1, i1)); case XSYS_close: i1 = va_arg(ap, int); - return(bc_close(i1)); + va_end(ap); + return (bc_close(i1)); case XSYS_fcntl: i1 = va_arg(ap, int); i2 = va_arg(ap, int); i3 = va_arg(ap, int); - return(bc_fcntl(i1, i2, i3)); + va_end(ap); + return (bc_fcntl(i1, i2, i3)); case XSYS_select: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); c3 = va_arg(ap, char *); c4 = va_arg(ap, char *); - return(_select(i1, c1, c2, c3, c4)); + va_end(ap); + return (_select(i1, c1, c2, c3, c4)); case XSYS_ioctl : i1 = va_arg(ap, int); i2 = va_arg(ap, int); c1 = va_arg(ap, char *); - return(bc_ioctl(i1, i2, c1)); + va_end(ap); + return (bc_ioctl(i1, i2, c1)); case XSYS_stat: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(bc_stat(c1, c2)); + va_end(ap); + return (bc_stat(c1, c2)); case XSYS_lstat: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(bc_lstat(c1, c2)); + va_end(ap); + return (bc_lstat(c1, c2)); case XSYS_fstat: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); - return(bc_fstat(i1, c1)); + va_end(ap); + return (bc_fstat(i1, c1)); case XSYS_getdents: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); - return(bc_getdents(i1, c1, i2)); + va_end(ap); + return (bc_getdents(i1, c1, i2)); case XSYS_kill: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(bc_kill(i1, i2)); + va_end(ap); + return (bc_kill(i1, i2)); case XSYS_mount: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); i1 = va_arg(ap, int); c3 = va_arg(ap, char *); - return(mount(c1, c2, i1, c3)); + va_end(ap); + return (mount(c1, c2, i1, c3)); case XSYS_getrlimit: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); - return(bc_getrlimit(i1, c1)); + va_end(ap); + return (bc_getrlimit(i1, c1)); case XSYS_setrlimit: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); - return(bc_setrlimit(i1, c1)); + va_end(ap); + return (bc_setrlimit(i1, c1)); case XSYS_uname: c1 = va_arg(ap, char *); - return(bc_uname(c1)); + va_end(ap); + return (bc_uname(c1)); case XSYS_creat: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(creat(c1, i1)); + va_end(ap); + return (creat(c1, i1)); case XSYS_unmount: c1 = va_arg(ap, char *); - return(umount(c1)); + va_end(ap); + return (umount(c1)); case XSYS_link: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(link(c1, c2)); + va_end(ap); + return (link(c1, c2)); case XSYS_unlink: c1 = va_arg(ap, char *); - return(unlink(c1)); + va_end(ap); + return (unlink(c1)); case XSYS_chdir: c1 = va_arg(ap, char *); - return(chdir(c1)); + va_end(ap); + return (chdir(c1)); case XSYS_mknod: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(mknod(c1, i1, i2)); + va_end(ap); + return (mknod(c1, i1, i2)); case XSYS_chmod: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(chmod(c1, i1)); + va_end(ap); + return (chmod(c1, i1)); case XSYS_chown: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(chown(c1, i1, i2)); + va_end(ap); + return (chown(c1, i1, i2)); case XSYS_lseek: i1 = va_arg(ap, int); i2 = va_arg(ap, int); i3 = va_arg(ap, int); - return(lseek(i1, i2, i3)); + va_end(ap); + return (lseek(i1, i2, i3)); case XSYS_access: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(access(c1, i1)); + va_end(ap); + return (access(c1, i1)); case XSYS_dup: i1 = va_arg(ap, int); - return(dup(i1)); + va_end(ap); + return (dup(i1)); case XSYS_dup2: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(dup(i1, i2)); + va_end(ap); + return (dup(i1, i2)); case XSYS_pipe: c1 = (char *)va_arg(ap, int *); - return(pipe(c1)); + va_end(ap); + return (pipe(c1)); case XSYS_symlink: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(symlink(c1, c2)); + va_end(ap); + return (symlink(c1, c2)); case XSYS_readlink: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(readlink(c1, c2, i1)); + va_end(ap); + return (readlink(c1, c2, i1)); case XSYS_execve: c1 = va_arg(ap, char *); c2 = (char *)va_arg(ap, char **); c3 = (char *)va_arg(ap, char **); - return(execve(c1, c2, c3)); + va_end(ap); + return (execve(c1, c2, c3)); case XSYS_chroot: c1 = va_arg(ap, char *); - return(chroot(c1)); + va_end(ap); + return (chroot(c1)); case XSYS_getgroups: i1 = va_arg(ap, int); c1 = (char *)va_arg(ap, int *); - return(getgroups(i1, c1)); + va_end(ap); + return (getgroups(i1, c1)); case XSYS_setgroups: i1 = va_arg(ap, int); c1 = (char *)va_arg(ap, int *); - return(setgroups(i1, c1)); + va_end(ap); + return (setgroups(i1, c1)); case XSYS_fsync: i1 = va_arg(ap, int); - return(fsync(i1)); + va_end(ap); + return (fsync(i1)); case XSYS_gettimeofday: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(gettimeofday(c1, c2)); + va_end(ap); + return (gettimeofday(c1, c2)); case XSYS_settimeofday: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(settimeofday(c1, c2)); + va_end(ap); + return (settimeofday(c1, c2)); case XSYS_rename: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(rename(c1, c2)); + va_end(ap); + return (rename(c1, c2)); case XSYS_mkdir: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(mkdir(c1, i1)); + va_end(ap); + return (mkdir(c1, i1)); case XSYS_rmdir: c1 = va_arg(ap, char *); - return(rmdir(c1)); + va_end(ap); + return (rmdir(c1)); case XSYS_statfs: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(statfs(c1, c2)); + va_end(ap); + return (statfs(c1, c2)); case XSYS_fstatfs: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); - return(fstatfs(i1, c1)); + va_end(ap); + return (fstatfs(i1, c1)); case XSYS_getpagesize: - return(getpagesize()); + va_end(ap); + return (getpagesize()); case XSYS_gethostid: - return(gethostid()); + va_end(ap); + return (gethostid()); case XSYS_getdtablesize: - return(getdtablesize()); + va_end(ap); + return (getdtablesize()); case XSYS_pathconf: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(pathconf(c1, i1)); + va_end(ap); + return (pathconf(c1, i1)); case XSYS_gethostname: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(gethostname(c1, i1)); + va_end(ap); + return (gethostname(c1, i1)); case XSYS_sethostname: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(sethostname(c1, i1)); + va_end(ap); + return (sethostname(c1, i1)); case XSYS_setreuid: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(setreuid(i1, i2)); + va_end(ap); + return (setreuid(i1, i2)); case XSYS_setregid: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(setregid(i1, i2)); + va_end(ap); + return (setregid(i1, i2)); case XSYS_getpriority: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(getpriority(i1, i2)); + va_end(ap); + return (getpriority(i1, i2)); case XSYS_setpriority: i1 = va_arg(ap, int); i2 = va_arg(ap, int); i3 = va_arg(ap, int); - return(setpriority(i1, i2, i3)); + va_end(ap); + return (setpriority(i1, i2, i3)); case XSYS_sigvec: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(sigvec(i1, c1, c2)); + va_end(ap); + return (sigvec(i1, c1, c2)); case XSYS_sigblock: i1 = va_arg(ap, int); - return(sigblock(i1)); + va_end(ap); + return (sigblock(i1)); case XSYS_sigpending: c1 = va_arg(ap, char *); - return(sigpending(c1)); + va_end(ap); + return (sigpending(c1)); case XSYS_sigsetmask: i1 = va_arg(ap, int); - return(sigsetmask(i1)); + va_end(ap); + return (sigsetmask(i1)); case XSYS_sigpause: c1 = va_arg(ap, char *); - return(sigpause(c1)); + va_end(ap); + return (sigpause(c1)); case XSYS_sigstack: c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(sigstack(c1, c2)); + va_end(ap); + return (sigstack(c1, c2)); case XSYS_truncate: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(truncate(c1, i1)); + va_end(ap); + return (truncate(c1, i1)); case XSYS_ftruncate: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(ftruncate(i1, i2)); + va_end(ap); + return (ftruncate(i1, i2)); case XSYS_killpg: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(killpg(i1, i2)); + va_end(ap); + return (killpg(i1, i2)); case XSYS_setpgid: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(setpgid(i1, i2)); + va_end(ap); + return (setpgid(i1, i2)); case XSYS_ptrace: i1 = va_arg(ap, int); i2 = va_arg(ap, int); @@ -365,32 +431,40 @@ va_dcl c1 = va_arg(ap, char *); i4 = va_arg(ap, int); c2 = va_arg(ap, char *); - return(ptrace(i1, i2, i3, c1, i4, c2)); + va_end(ap); + return (ptrace(i1, i2, i3, c1, i4, c2)); #ifdef S5EMUL case XSYS_getpgrp: - return(getpgrp()); + va_end(ap); + return (getpgrp()); case XSYS_setpgrp: - return(setpgrp()); + va_end(ap); + return (setpgrp()); #else case XSYS_getpgrp: i1 = va_arg(ap, int); - return(getpgrp(i1)); + va_end(ap); + return (getpgrp(i1)); case XSYS_setpgrp: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(setpgrp(i1, i2)); + va_end(ap); + return (setpgrp(i1, i2)); #endif case XSYS_getrusage: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); - return(getrusage(i1, c1)); + va_end(ap); + return (getrusage(i1, c1)); case XSYS_setsid: - return(setsid()); + va_end(ap); + return (setsid()); case XSYS_flock: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(flock(i1, i2)); + va_end(ap); + return (flock(i1, i2)); /* the following system calls are now implemented in * libsocket */ @@ -398,48 +472,57 @@ va_dcl i1 = va_arg(ap, int); c1 = va_arg(ap, char *); c2 = (char *)va_arg(ap, int *); - return(_accept(i1, c1, c2)); + va_end(ap); + return (_accept(i1, c1, c2)); case XSYS_bind: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); - return(_bind(i1, c1, i2)); + va_end(ap); + return (_bind(i1, c1, i2)); case XSYS_connect: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); - return(_connect(i1, c1, i2)); + va_end(ap); + return (_connect(i1, c1, i2)); case XSYS_getsockopt: i1 = va_arg(ap, int); i2 = va_arg(ap, int); i3 = va_arg(ap, int); c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(_getsockopt(i1, i2, i3, c1, c2)); + va_end(ap); + return (_getsockopt(i1, i2, i3, c1, c2)); case XSYS_getpeername: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(_getpeername(i1, c1, c2)); + va_end(ap); + return (_getpeername(i1, c1, c2)); case XSYS_getsockname: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); c2 = va_arg(ap, char *); - return(_getsockname(i1, c1, c2)); + va_end(ap); + return (_getsockname(i1, c1, c2)); case XSYS_getdomainname: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(getdomainname(c1, i1)); + va_end(ap); + return (getdomainname(c1, i1)); case XSYS_listen: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(_listen(i1, i2)); + va_end(ap); + return (_listen(i1, i2)); case XSYS_recv: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); i3 = va_arg(ap, int); - return(_recv(i1, c1, i2, i3)); + va_end(ap); + return (_recv(i1, c1, i2, i3)); case XSYS_recvfrom: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); @@ -447,18 +530,21 @@ va_dcl i3 = va_arg(ap, int); c2 = va_arg(ap, char *); c3 = va_arg(ap, char *); - return(_recvfrom(i1, c1, i2, i3, c2, c3)); + va_end(ap); + return (_recvfrom(i1, c1, i2, i3, c2, c3)); case XSYS_recvmsg: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); - return(_recvmsg(i1, c1, i2)); + va_end(ap); + return (_recvmsg(i1, c1, i2)); case XSYS_send: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); i3 = va_arg(ap, int); - return(_send(i1, c1, i2, i3)); + va_end(ap); + return (_send(i1, c1, i2, i3)); case XSYS_sendto: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); @@ -466,38 +552,45 @@ va_dcl i3 = va_arg(ap, int); c2 = va_arg(ap, char *); i4 = va_arg(ap, int); - return(_sendto(i1, c1, i2, i3, c2, i4)); + va_end(ap); + return (_sendto(i1, c1, i2, i3, c2, i4)); case XSYS_sendmsg: i1 = va_arg(ap, int); c1 = va_arg(ap, char *); i2 = va_arg(ap, int); - return(_sendmsg(i1, c1, i2)); + va_end(ap); + return (_sendmsg(i1, c1, i2)); case XSYS_setdomainname: c1 = va_arg(ap, char *); i1 = va_arg(ap, int); - return(setdomainname(c1 ,i1)); + va_end(ap); + return (setdomainname(c1 ,i1)); case XSYS_setsockopt: i1 = va_arg(ap, int); i2 = va_arg(ap, int); i3 = va_arg(ap, int); c1 = va_arg(ap, char *); i4 = va_arg(ap, int); - return(_setsockopt(i1, i2, i3, c1, i4)); + va_end(ap); + return (_setsockopt(i1, i2, i3, c1, i4)); case XSYS_shutdown: i1 = va_arg(ap, int); i2 = va_arg(ap, int); - return(_shutdown(i1, i2)); + va_end(ap); + return (_shutdown(i1, i2)); case XSYS_socket: i1 = va_arg(ap, int); i2 = va_arg(ap, int); i3 = va_arg(ap, int); - return(_socket(i1, i2, i3)); + va_end(ap); + return (_socket(i1, i2, i3)); case XSYS_socketpair: i1 = va_arg(ap, int); i2 = va_arg(ap, int); i3 = va_arg(ap, int); c1 = va_arg(ap, char *); - return(_socketpair(i1, i2, i3, c1)); + va_end(ap); + return (_socketpair(i1, i2, i3, c1)); /* The following can directly go through syscall */ @@ -528,8 +621,10 @@ va_dcl case XSYS_msgsys: case XSYS_shmsys: case XSYS_mmap: - case XSYS_vhangup: - return(_syscall(syscallnum[sysnum], va_alist)); + case XSYS_vhangup: + ret_val = _syscall(syscallnum[sysnum], ap); + va_end(ap); + return (ret_val); case XSYS_aioread: case XSYS_aiowrite: @@ -550,7 +645,10 @@ va_dcl case XSYS_madvise: case XSYS_vadvise: case XSYS_getdirentries: + va_end(ap); fprintf(stderr,"system call not supported\n"); return(-1); } + va_end(ap); + return (-1); } |