2 * KERN_SYSCALL.H - Split syscall prototypes
4 * Copyright (c) 2003 David P. Reese, Jr. <daver@gomerbud.com>
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 #ifndef _SYS_KERN_SYSCALL_H_
30 #define _SYS_KERN_SYSCALL_H_
33 #error "This file should not be included by userland programs."
38 #define DUP_FIXED 0x1 /* Copy to specific fd even if in use */
39 #define DUP_VARIABLE 0x2 /* Copy fd to an unused fd */
40 #define DUP_CLOEXEC 0x4 /* Set fd close on exec flag */
41 #define DUP_FCNTL 0x8 /* Set for F_DUPFD and F_DUPFD_CLOEXEC */
71 * Prototypes for syscalls in kern/kern_descrip.c
73 int kern_dup(int flags
, int old
, int new, int *res
);
74 int kern_fcntl(int fd
, int cmd
, union fcntl_dat
*dat
, struct ucred
*cred
);
75 int kern_fstat(int fd
, struct stat
*st
);
78 * Prototypes for syscalls in kern/kern_exec.c
80 int kern_execve(struct nlookupdata
*nd
, struct image_args
*args
);
83 * Prototypes for syscalls in kern/kern_exit.c
85 int kern_wait(pid_t pid
, int *status
, int options
, struct rusage
*rusage
,
89 * Prototypes for syscalls in kern/kern_sig.c
91 int kern_sigaction(int sig
, struct sigaction
*act
, struct sigaction
*oact
);
92 int kern_sigprocmask(int how
, struct __sigset
*set
, struct __sigset
*oset
);
93 int kern_sigpending(struct __sigset
*set
);
94 int kern_sigsuspend(struct __sigset
*mask
);
95 int kern_sigaltstack(struct sigaltstack
*ss
, struct sigaltstack
*oss
);
96 int kern_kill(int sig
, pid_t pid
, lwpid_t tid
);
99 * Prototypes for syscalls in kern/sys_generic.c
101 int kern_preadv(int fd
, struct uio
*auio
, int flags
, size_t *res
);
102 int kern_pwritev(int fd
, struct uio
*auio
, int flags
, size_t *res
);
105 * Prototypes for syscalls in kern/kern_resource.c
107 int kern_setrlimit(u_int which
, struct rlimit
*limp
);
108 int kern_getrlimit(u_int which
, struct rlimit
*limp
);
111 * Prototypes for syscalls in kern/uipc_syscalls.c
113 int kern_accept(int s
, int fflags
, struct sockaddr
**name
, int *namelen
, int *res
,
114 int sockflags
/* SOCK_{NONBLOCK,CLOEXEC,KERN_NOINHERIT} */);
115 int kern_bind(int s
, struct sockaddr
*sa
);
116 int kern_connect(int s
, int fflags
, struct sockaddr
*sa
);
117 int kern_listen(int s
, int backlog
);
118 int kern_getpeername(int s
, struct sockaddr
**name
, int *namelen
);
119 int kern_getsockopt(int s
, struct sockopt
*sopt
);
120 int kern_getsockname(int s
, struct sockaddr
**name
, int *namelen
);
121 int kern_recvmsg(int s
, struct sockaddr
**sa
, struct uio
*auio
,
122 struct mbuf
**control
, int *flags
, size_t *res
);
123 int kern_shutdown(int s
, int how
);
124 int kern_sendfile(struct vnode
*vp
, int s
, off_t offset
, size_t nbytes
,
125 struct mbuf
*mheader
, off_t
*sbytes
, int flags
);
126 int kern_sendmsg(int s
, struct sockaddr
*sa
, struct uio
*auio
,
127 struct mbuf
*control
, int flags
, size_t *res
);
128 int kern_setsockopt(int s
, struct sockopt
*sopt
);
129 int kern_socket(int domain
, int type
, int protocol
, int *res
);
130 int kern_socketpair(int domain
, int type
, int protocol
, int *sockv
);
133 * Prototypes for syscalls in kern/sys_pipe.c
135 int kern_pipe(long *fds
, int flags
);
138 * Prototypes for syscalls in kern/vfs_syscalls.c
140 int kern_access(struct nlookupdata
*nd
, int amode
, int flags
);
141 int kern_chdir(struct nlookupdata
*nd
);
142 int kern_chmod(struct nlookupdata
*nd
, int mode
);
143 int kern_chown(struct nlookupdata
*nd
, int uid
, int gid
);
144 int kern_chroot(struct nchandle
*nch
);
145 int kern_fstatfs(int fd
, struct statfs
*buf
);
146 int kern_fstatvfs(int fd
, struct statvfs
*buf
);
147 int kern_ftruncate(int fd
, off_t length
);
148 int kern_futimens(int fd
, struct timespec
*ts
);
149 int kern_futimes(int fd
, struct timeval
*tptr
);
150 int kern_getdirentries(int fd
, char *buf
, u_int count
, long *basep
, int *res
,
152 int kern_link(struct nlookupdata
*nd
, struct nlookupdata
*linknd
);
153 int kern_lseek(int fd
, off_t offset
, int whence
, off_t
*res
);
154 int kern_mountctl(const char *path
, int op
, struct file
*fp
,
155 const void *ctl
, int ctllen
,
156 void *buf
, int buflen
, int *res
);
157 int kern_mkdir(struct nlookupdata
*nd
, int mode
);
158 int kern_mkfifo(struct nlookupdata
*nd
, int mode
);
159 int kern_mknod(struct nlookupdata
*nd
, int mode
, int rmajor
, int rminor
);
160 int kern_open(struct nlookupdata
*nd
, int flags
, int mode
, int *res
);
161 int kern_close(int fd
);
162 int kern_closefrom(int fd
);
163 int kern_readlink(struct nlookupdata
*nd
, char *buf
, int count
, int *res
);
164 int kern_rename(struct nlookupdata
*fromnd
, struct nlookupdata
*tond
);
165 int kern_rmdir(struct nlookupdata
*nd
);
166 int kern_stat(struct nlookupdata
*nd
, struct stat
*st
);
167 int kern_statfs(struct nlookupdata
*nd
, struct statfs
*buf
);
168 int kern_statvfs(struct nlookupdata
*nd
, struct statvfs
*buf
);
169 int kern_symlink(struct nlookupdata
*nd
, char *path
, int mode
);
170 int kern_truncate(struct nlookupdata
*nd
, off_t length
);
171 int kern_unlink(struct nlookupdata
*nd
);
172 int kern_utimensat(struct nlookupdata
*nd
, const struct timespec
*ts
, int flag
);
173 int kern_utimes(struct nlookupdata
*nd
, struct timeval
*tptr
);
174 struct uuid
*kern_uuidgen(struct uuid
*store
, size_t count
);
177 * Prototypes for syscalls in kern/kern_time.c
179 int kern_clock_gettime(clockid_t
, struct timespec
*);
180 int kern_clock_settime(clockid_t
, struct timespec
*);
181 int kern_clock_getres(clockid_t
, struct timespec
*);
184 * Prototypes for syscalls in kern/vfs_cache.c
186 char *kern_getcwd(char *, size_t, int *);
189 * Prototypes for syscalls in vm/vm_mmap.c
191 int kern_mmap(struct vmspace
*, caddr_t addr
, size_t len
,
192 int prot
, int flags
, int fd
, off_t pos
, void **res
);
194 #endif /* !_SYS_KERN_SYSCALL_H_ */