summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/os/sysent.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/os/sysent.c')
-rw-r--r--usr/src/uts/common/os/sysent.c538
1 files changed, 280 insertions, 258 deletions
diff --git a/usr/src/uts/common/os/sysent.c b/usr/src/uts/common/os/sysent.c
index 7a40be6d9e..a79b101796 100644
--- a/usr/src/uts/common/os/sysent.c
+++ b/usr/src/uts/common/os/sysent.c
@@ -23,6 +23,7 @@
/*
* Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2012 Milan Jurik. All rights reserved.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
@@ -35,6 +36,21 @@
#include <sys/systm.h>
#include <sys/systrace.h>
#include <sys/procfs.h>
+#include <sys/mman.h>
+#include <sys/int_types.h>
+#include <c2/audit.h>
+#include <sys/stat.h>
+#include <sys/times.h>
+#include <sys/statfs.h>
+#include <sys/stropts.h>
+#include <sys/statvfs.h>
+#include <sys/utsname.h>
+#include <sys/timex.h>
+#include <sys/socket.h>
+#include <sys/sendfile.h>
+
+struct hrtsysa;
+struct mmaplf32a;
/* ONC_PLUS EXTRACT START */
/*
@@ -46,228 +62,230 @@
*/
/* ONC_PLUS EXTRACT END */
-int access();
-int alarm();
-int auditsys();
-int64_t brandsys();
-int brk();
-int chdir();
-int chmod();
-int chown();
-int chroot();
-int cladm();
-int close();
-int exece();
-int faccessat();
-int fchmodat();
-int fchownat();
-int fcntl();
+int access(char *, int);
+int alarm(int);
+int auditsys(struct auditcalls *, rval_t *);
+int64_t brandsys(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t,
+ uintptr_t);
+int brk(caddr_t);
+int chdir(char *);
+int chmod(char *, int);
+int chown(char *, uid_t, gid_t);
+int chroot(char *);
+int cladm(int, int, void *);
+int close(int);
+int exece(const char *, const char **, const char **);
+int faccessat(int, char *, int, int);
+int fchmodat(int, char *, int, int);
+int fchownat(int, char *, uid_t, gid_t, int);
+int fcntl(int, int, intptr_t);
int64_t vfork();
-int64_t forksys();
-int fstat();
-int fdsync();
+int64_t forksys(int, int);
+int fstat(int, struct stat *);
+int fdsync(int, int);
int64_t getgid();
-int ucredsys();
+int ucredsys(int, int, void *);
int64_t getpid();
int64_t getuid();
time_t gtime();
-int getloadavg();
-int rusagesys();
-int getpagesizes();
-int gtty();
+int getloadavg(int *, int);
+int rusagesys(int, void *, void *, void *, void *);
+int getpagesizes(int, size_t *, int);
+int gtty(int, intptr_t);
#if defined(__i386) || defined(__amd64)
-int hrtsys();
+int hrtsys(struct hrtsysa *, rval_t *);
#endif /* __i386 || __amd64 */
-int ioctl();
+int ioctl(int, int, intptr_t);
int kill();
-int labelsys();
-int link();
-int linkat();
-off32_t lseek32();
-off_t lseek64();
-int lgrpsys();
-int mmapobjsys();
-int mknod();
-int mknodat();
-int mount();
-int nice();
+int labelsys(int, void *, void *, void *, void *, void *);
+int link(char *, char *);
+int linkat(int, char *, int, char *, int);
+off32_t lseek32(int32_t, off32_t, int32_t);
+off_t lseek64(int, off_t, int);
+int lgrpsys(int, long, void *);
+int mmapobjsys(int, uint_t, mmapobj_result_t *, uint_t *, void *);
+int mknod(char *, mode_t, dev_t);
+int mknodat(int, char *, mode_t, dev_t);
+int mount(long *, rval_t *);
+int nice(int);
int nullsys();
-int open();
-int openat();
+int open(char *, int, int);
+int openat(int, char *, int, int);
int pause();
-long pcsample();
-int privsys();
-int profil();
-ssize_t pread();
-ssize_t pwrite();
-ssize_t read();
-int rename();
-int renameat();
-void rexit();
+long pcsample(void *, long);
+int privsys(int, priv_op_t, priv_ptype_t, void *, size_t, int);
+int profil(unsigned short *, size_t, ulong_t, uint_t);
+ssize_t pread(int, void *, size_t, off_t);
+ssize_t pwrite(int, void *, size_t, off_t);
+ssize_t read(int, void *, size_t);
+int rename(char *, char *);
+int renameat(int, char *, int, char *);
+void rexit(int);
int semsys();
-int setgid();
-int setpgrp();
-int setuid();
+int setgid(gid_t);
+int setpgrp(int, int, int);
+int setuid(uid_t);
uintptr_t shmsys();
-uint64_t sidsys();
-int sigprocmask();
-int sigsuspend();
-int sigaltstack();
-int sigaction();
-int sigpending();
-int sigresend();
-int sigtimedwait();
-int getsetcontext();
-int stat();
-int fstatat();
-int stime();
-int stty();
+uint64_t sidsys(int, int, int, int);
+int sigprocmask(int, sigset_t *, sigset_t *);
+int sigsuspend(sigset_t);
+int sigaltstack(struct sigaltstack *, struct sigaltstack *);
+int sigaction(int, struct sigaction *, struct sigaction *);
+int sigpending(int, sigset_t *);
+int sigresend(int, siginfo_t *, sigset_t *);
+int sigtimedwait(sigset_t *, siginfo_t *, timespec_t *);
+int getsetcontext(int, void *);
+int stat(char *, struct stat *);
+int fstatat(int, char *, struct stat *, int);
+int stime(time_t);
+int stty(int, intptr_t);
int syssync();
-int sysacct();
-clock_t times();
-long ulimit();
-int getrlimit32();
-int setrlimit32();
-int umask();
-int umount2();
-int unlink();
-int unlinkat();
-int utimesys();
-int64_t utssys32();
-int64_t utssys64();
-int uucopy();
-ssize_t uucopystr();
-ssize_t write();
-ssize_t readv();
-ssize_t writev();
-int syslwp_park();
-int rmdir();
-int mkdir();
-int mkdirat();
-int getdents32();
-int statfs32();
-int fstatfs32();
-int sysfs();
-int getmsg();
-int pollsys();
-int putmsg();
+int sysacct(char *);
+clock_t times(struct tms *);
+long ulimit(int, long);
+int getrlimit32(int, struct rlimit32 *);
+int setrlimit32(int, struct rlimit32 *);
+int umask(int);
+int umount2(char *, int);
+int unlink(char *);
+int unlinkat(int, char *, int);
+int utimesys(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+int64_t utssys32(void *, int, int, void *);
+int64_t utssys64(void *, long, int, void *);
+int uucopy(const void *, void *, size_t);
+ssize_t uucopystr(const char *, char *, size_t);
+ssize_t write(int, void *, size_t);
+ssize_t readv(int, struct iovec *, int);
+ssize_t writev(int, struct iovec *, int);
+int syslwp_park(int, uintptr_t, uintptr_t);
+int rmdir(char *);
+int mkdir(char *, int);
+int mkdirat(int, char *, int);
+int getdents32(int, void *, size_t);
+int statfs32(char *, struct statfs32 *, int32_t, int32_t);
+int fstatfs32(int32_t, struct statfs32 *, int32_t, int32_t);
+int sysfs(int, long, long);
+int getmsg(int, struct strbuf *, struct strbuf *, int *);
+int pollsys(pollfd_t *, nfds_t, timespec_t *, sigset_t *);
+int putmsg(int, struct strbuf *, struct strbuf *, int);
int uadmin();
-int lstat();
-int symlink();
-int symlinkat();
-ssize_t readlink();
-ssize_t readlinkat();
-int resolvepath();
-int setgroups();
-int getgroups();
-int fchdir();
-int fchown();
-int fchmod();
-int getcwd();
-int statvfs();
-int fstatvfs();
-offset_t llseek32();
+int lstat(char *, struct stat *);
+int symlink(char *, char *);
+int symlinkat(char *, int, char *);
+ssize_t readlink(char *, char *, size_t);
+ssize_t readlinkat(int, char *, char *, size_t);
+int resolvepath(char *, char *, size_t);
+int setgroups(int, gid_t *);
+int getgroups(int, gid_t *);
+int fchdir(int);
+int fchown(int, uid_t, uid_t);
+int fchmod(int, int);
+int getcwd(char *, size_t);
+int statvfs(char *, struct statvfs *);
+int fstatvfs(int, struct statvfs *);
+offset_t llseek32(int32_t, uint32_t, uint32_t, int);
#if (defined(__i386) && !defined(__amd64)) || defined(__i386_COMPAT)
-int sysi86();
+int sysi86(short, uintptr_t, uintptr_t, uintptr_t);
#endif
-int acl();
-int facl();
-long priocntlsys();
-int waitsys();
-int sigsendsys();
-int mincore();
-caddr_t smmap64();
-caddr_t smmap32();
-int smmaplf32();
-int mprotect();
-int munmap();
-int uname();
-int lchown();
-int getpmsg();
-int putpmsg();
-int memcntl();
-long sysconfig();
-int adjtime();
-long systeminfo();
-int setegid();
-int seteuid();
-
-int setreuid();
-int setregid();
-int install_utrap();
+int acl(const char *, int, int, void *);
+int facl(int, int, int, void *);
+long priocntlsys(int, procset_t *, int, caddr_t, caddr_t);
+int waitsys(idtype_t, id_t, siginfo_t *, int);
+int sigsendsys(procset_t *, int);
+int mincore(caddr_t, size_t, char *);
+caddr_t smmap64(caddr_t, size_t, int, int, int, off_t);
+caddr_t smmap32(caddr32_t, size32_t, int, int, int, off32_t);
+int smmaplf32(struct mmaplf32a *, rval_t *);
+int mprotect(caddr_t, size_t, int);
+int munmap(caddr_t, size_t);
+int uname(struct utsname *);
+int lchown(char *, uid_t, gid_t);
+int getpmsg(int, struct strbuf *, struct strbuf *, int *, int *);
+int putpmsg(int, struct strbuf *, struct strbuf *, int, int);
+int memcntl(caddr_t, size_t, int, caddr_t, int, int);
+long sysconfig(int);
+int adjtime(struct timeval *, struct timeval *);
+long systeminfo(int, char *, long);
+int setegid(gid_t);
+int seteuid(uid_t);
+
+int setreuid(uid_t, uid_t);
+int setregid(gid_t, gid_t);
+int install_utrap(utrap_entry_t type, utrap_handler_t, utrap_handler_t *);
#ifdef __sparc
-int sparc_utrap_install();
+int sparc_utrap_install(utrap_entry_t type, utrap_handler_t,
+ utrap_handler_t, utrap_handler_t *, utrap_handler_t *);
#endif
-int syslwp_create();
+int syslwp_create(ucontext_t *, int, id_t *);
void syslwp_exit();
-int syslwp_suspend();
-int syslwp_continue();
-int syslwp_private();
-int lwp_detach();
-int lwp_info();
-int lwp_kill();
+int syslwp_suspend(id_t);
+int syslwp_continue(id_t);
+int syslwp_private(int, int, uintptr_t);
+int lwp_detach(id_t);
+int lwp_info(timestruc_t *);
+int lwp_kill(id_t, int);
int lwp_self();
-int64_t lwp_sigmask();
+int64_t lwp_sigmask(int, uint_t, uint_t, uint_t, uint_t);
int yield();
-int lwp_wait();
-int lwp_mutex_timedlock();
-int lwp_mutex_wakeup();
-int lwp_mutex_unlock();
-int lwp_mutex_trylock();
-int lwp_mutex_register();
-int lwp_rwlock_sys();
-int lwp_sema_post();
-int lwp_sema_timedwait();
-int lwp_sema_trywait();
-int lwp_cond_wait();
-int lwp_cond_signal();
-int lwp_cond_broadcast();
+int lwp_wait(id_t, id_t *);
+int lwp_mutex_timedlock(lwp_mutex_t *, timespec_t *, uintptr_t);
+int lwp_mutex_wakeup(lwp_mutex_t *, int);
+int lwp_mutex_unlock(lwp_mutex_t *);
+int lwp_mutex_trylock(lwp_mutex_t *, uintptr_t);
+int lwp_mutex_register(lwp_mutex_t *, caddr_t);
+int lwp_rwlock_sys(int, lwp_rwlock_t *, timespec_t *);
+int lwp_sema_post(lwp_sema_t *);
+int lwp_sema_timedwait(lwp_sema_t *, timespec_t *, int);
+int lwp_sema_trywait(lwp_sema_t *);
+int lwp_cond_wait(lwp_cond_t *, lwp_mutex_t *, timespec_t *, int);
+int lwp_cond_signal(lwp_cond_t *);
+int lwp_cond_broadcast(lwp_cond_t *);
caddr_t schedctl();
-long pathconf();
-long fpathconf();
-int processor_bind();
-int processor_info();
-int p_online();
+long pathconf(char *, int);
+long fpathconf(int, int);
+int processor_bind(idtype_t, id_t, processorid_t, processorid_t *);
+int processor_info(processorid_t, processor_info_t *);
+int p_online(processorid_t, int);
/*
* POSIX .4 system calls *
*/
-int clock_gettime();
-int clock_settime();
-int clock_getres();
-int timer_create();
-int timer_delete();
-int timer_settime();
-int timer_gettime();
-int timer_getoverrun();
-int nanosleep();
-int sigqueue();
-int signotify();
-
-int getdents64();
-int stat64();
-int lstat64();
-int fstatat64();
-int fstat64();
-int statvfs64();
-int fstatvfs64();
-int setrlimit64();
-int getrlimit64();
-int pread64();
-int pwrite64();
-int open64();
-int openat64();
+int clock_gettime(clockid_t, timespec_t *);
+int clock_settime(clockid_t, timespec_t *);
+int clock_getres(clockid_t, timespec_t *);
+int timer_create(clockid_t, struct sigevent *, timer_t *);
+int timer_delete(timer_t);
+int timer_settime(timer_t, int, itimerspec_t *, itimerspec_t *);
+int timer_gettime(timer_t, itimerspec_t *);
+int timer_getoverrun(timer_t);
+int nanosleep(timespec_t *, timespec_t *);
+int sigqueue(pid_t, int, void *, int, int);
+int signotify(int, siginfo_t *, signotify_id_t *);
+
+int getdents64(int, void *, size_t);
+int stat64(char *, struct stat64 *);
+int lstat64(char *, struct stat64 *);
+int fstatat64(int, char *, struct stat64 *, int);
+int fstat64(int, struct stat64 *);
+int statvfs64(char *, struct statvfs64 *);
+int fstatvfs64(int, struct statvfs64 *);
+int setrlimit64(int, struct rlimit64 *);
+int getrlimit64(int, struct rlimit64 *);
+int pread64(int, void *, size32_t, uint32_t, uint32_t);
+int pwrite64(int, void *, size32_t, uint32_t, uint32_t);
+int open64(char *, int, int);
+int openat64(int, char *, int, int);
/*
* NTP syscalls
*/
-int ntp_gettime();
-int ntp_adjtime();
+int ntp_gettime(struct ntptimeval *);
+int ntp_adjtime(struct timex *);
/*
* ++++++++++++++++++++++++
@@ -277,41 +295,41 @@ int ntp_adjtime();
* fchroot, vhangup, gettimeofday
*/
-int fchroot();
+int fchroot(int);
int vhangup();
-int gettimeofday();
-int getitimer();
-int setitimer();
+int gettimeofday(struct timeval *);
+int getitimer(uint_t, struct itimerval *);
+int setitimer(uint_t, struct itimerval *, struct itimerval *);
-int corectl();
-int modctl();
+int corectl(int, uintptr_t, uintptr_t, uintptr_t);
+int modctl(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
int64_t loadable_syscall();
int64_t indir();
-long tasksys();
-long rctlsys();
+long tasksys(int, projid_t, uint_t, void *, size_t);
+long rctlsys(int, char *, void *, void *, size_t, int);
long zone();
-int so_socket();
-int so_socketpair();
-int bind();
-int listen();
-int accept();
-int connect();
-int shutdown();
-ssize_t recv();
-ssize_t recvfrom();
-ssize_t recvmsg();
-ssize_t send();
-ssize_t sendmsg();
-ssize_t sendto();
-int getpeername();
-int getsockname();
-int getsockopt();
-int setsockopt();
-int sockconfig();
-ssize_t sendfilev();
+int so_socket(int, int, int, char *, int);
+int so_socketpair(int[2]);
+int bind(int, struct sockaddr *, socklen_t, int);
+int listen(int, int, int);
+int accept(int, struct sockaddr *, socklen_t *, int);
+int connect(int, struct sockaddr *, socklen_t, int);
+int shutdown(int, int, int);
+ssize_t recv(int, void *, size_t, int);
+ssize_t recvfrom(int, void *, size_t, int, struct sockaddr *, socklen_t *);
+ssize_t recvmsg(int, struct nmsghdr *, int);
+ssize_t send(int, void *, size_t, int);
+ssize_t sendmsg(int, struct nmsghdr *, int);
+ssize_t sendto(int, void *, size_t, int, struct sockaddr *, socklen_t);
+int getpeername(int, struct sockaddr *, socklen_t *, int);
+int getsockname(int, struct sockaddr *, socklen_t *, int);
+int getsockopt(int, int, int, void *, socklen_t *, int);
+int setsockopt(int, int, int, void *, socklen_t *, int);
+int sockconfig(int, void *, void *, void *, void *);
+ssize_t sendfilev(int, int, const struct sendfilevec *, int, size_t *);
typedef int64_t (*llfcn_t)(); /* for casting one-word returns */
@@ -753,50 +771,54 @@ struct sysent sysent[NSYSCALL] =
#ifdef _SYSCALL32_IMPL
-extern int ulimit32();
-extern ssize_t read32();
-extern ssize_t write32();
-extern ssize_t pread32();
-extern ssize_t pwrite32();
-extern ssize_t readv32();
-extern ssize_t writev32();
-extern ssize_t readlink32();
-extern ssize_t readlinkat32();
-extern int open32();
-extern int openat32();
-extern int stat32();
-extern int fstatat32();
-extern int lstat32();
-extern int fstat32();
-extern int fstatat64_32();
-extern int stat64_32();
-extern int lstat64_32();
-extern int fstat64_32();
-extern int getmsg32();
-extern int putmsg32();
-extern int getpmsg32();
-extern int putpmsg32();
-extern int getsetcontext32();
-extern int statvfs32();
-extern int fstatvfs32();
-extern int statvfs64_32();
-extern int fstatvfs64_32();
-extern int sigaction32();
-extern clock32_t times32();
-extern int stime32();
-extern int getpagesizes32();
-extern int sigaltstack32();
-extern int sigqueue32();
-extern offset_t llseek32();
-extern int waitsys32();
-
-extern ssize_t recv32();
-extern ssize_t recvfrom32();
-extern ssize_t send32();
-extern ssize_t sendto32();
-
-extern int privsys32();
-extern int ucredsys32();
+extern int ulimit32(int, int);
+extern ssize_t read32(int32_t, caddr32_t, size32_t);
+extern ssize_t write32(int32_t, caddr32_t, size32_t);
+extern ssize_t pread32(int32_t, caddr32_t, size32_t, off32_t);
+extern ssize_t pwrite32(int32_t, caddr32_t, size32_t, off32_t);
+extern ssize_t readv32(int32_t, caddr32_t, int32_t);
+extern ssize_t writev32(int32_t, caddr32_t, int32_t);
+extern ssize_t readlink32(caddr32_t, caddr32_t, size32_t);
+extern ssize_t readlinkat32(int, caddr32_t, caddr32_t, size32_t);
+extern int open32(char *, int, int);
+extern int openat32(int, char *, int, int);
+extern int stat32(char *, struct stat32 *);
+extern int fstatat32(int, char *, struct stat32 *, int);
+extern int lstat32(char *, struct stat32 *);
+extern int fstat32(int, struct stat32 *);
+extern int fstatat64_32(int, char *, struct stat64_32 *, int);
+extern int stat64_32(char *, struct stat64_32 *);
+extern int lstat64_32(char *, struct stat64_32 *);
+extern int fstat64_32(int, struct stat64_32 *);
+extern int getmsg32(int, struct strbuf32 *, struct strbuf32 *, int32_t *);
+extern int putmsg32(int, struct strbuf32 *, struct strbuf32 *, int32_t *);
+extern int getpmsg32(int, struct strbuf32 *, struct strbuf32 *, int32_t *,
+ int32_t *);
+extern int putpmsg32(int, struct strbuf32 *, struct strbuf32 *, int32_t,
+ int32_t);
+extern int getsetcontext32(int, void *);
+extern int statvfs32(char *, struct statvfs32 *);
+extern int fstatvfs32(int, struct statvfs32 *);
+extern int statvfs64_32(char *, struct statvfs64_32 *);
+extern int fstatvfs64_32(int, struct statvfs64_32 *);
+extern int sigaction32(int, struct sigaction32 *, struct sigaction32 *);
+extern clock32_t times32(struct tms32 *);
+extern int stime32(time32_t);
+extern int getpagesizes32(int, size32_t *, int);
+extern int sigaltstack32(struct sigaltstack32 *, struct sigaltstack32 *);
+extern int sigqueue32(pid_t, int, caddr32_t, int, int);
+extern offset_t llseek32(int32_t, uint32_t, uint32_t, int);
+extern int waitsys32(idtype_t, id_t, siginfo_t *, int);
+
+extern ssize_t recv32(int32_t, caddr32_t, size32_t, int32_t);
+extern ssize_t recvfrom32(int32_t, caddr32_t, size32_t, int32_t, caddr32_t,
+ caddr32_t);
+extern ssize_t send32(int32_t, caddr32_t, size32_t, int32_t);
+extern ssize_t sendto32(int32_t, caddr32_t, size32_t, int32_t, caddr32_t,
+ socklen_t);
+
+extern int privsys32(int, priv_op_t, priv_ptype_t, caddr32_t, size32_t, int);
+extern int ucredsys32(int, int, caddr32_t);
/* ONC_PLUS EXTRACT START */
/*