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."
39 #define DUP_FIXED 0x1 /* Copy to specific fd even if in use */
40 #define DUP_VARIABLE 0x2 /* Copy fd to an unused fd */
41 #define DUP_CLOEXEC 0x4 /* Set fd close on exec flag */
42 #define DUP_FCNTL 0x8 /* Set for F_DUPFD and F_DUPFD_CLOEXEC */
74 * Prototypes for syscalls in kern/kern_descrip.c
76 int kern_dup(int flags
, int old
, int new, int *res
);
77 int kern_fcntl(int fd
, int cmd
, union fcntl_dat
*dat
, struct ucred
*cred
);
78 int kern_fstat(int fd
, struct stat
*st
);
81 * Prototypes for syscalls in kern/kern_exec.c
83 int kern_execve(struct nlookupdata
*nd
, struct image_args
*args
);
86 * Prototypes for syscalls in kern/kern_exit.c
88 int kern_wait(idtype_t idtype
, id_t id
, int *status
, int options
,
89 struct __wrusage
*wrusage
, struct __siginfo
*info
, int *res
);
92 * Prototypes for syscalls in kern/kern_sig.c
94 int kern_sigaction(int sig
, struct sigaction
*act
, struct sigaction
*oact
);
95 int kern_sigprocmask(int how
, struct __sigset
*set
, struct __sigset
*oset
);
96 int kern_sigpending(struct __sigset
*set
);
97 int kern_sigsuspend(struct __sigset
*mask
);
98 int kern_sigaltstack(struct sigaltstack
*ss
, struct sigaltstack
*oss
);
99 int kern_kill(int sig
, pid_t pid
, lwpid_t tid
);
102 * Prototypes for syscalls in kern/sys_generic.c
104 int kern_preadv(int fd
, struct uio
*auio
, int flags
, size_t *res
);
105 int kern_pwritev(int fd
, struct uio
*auio
, int flags
, size_t *res
);
108 * Prototypes for syscalls in kern/kern_resource.c
110 int kern_setrlimit(u_int which
, struct rlimit
*limp
);
111 int kern_getrlimit(u_int which
, struct rlimit
*limp
);
114 * Prototypes for syscalls in kern/uipc_syscalls.c
116 int kern_accept(int s
, int fflags
, struct sockaddr
**name
, int *namelen
, int *res
,
117 int sockflags
/* SOCK_{NONBLOCK,CLOEXEC,KERN_NOINHERIT} */);
118 int kern_bind(int s
, struct sockaddr
*sa
);
119 int kern_connect(int s
, int fflags
, struct sockaddr
*sa
);
120 int kern_listen(int s
, int backlog
);
121 int kern_getpeername(int s
, struct sockaddr
**name
, int *namelen
);
122 int kern_getsockopt(int s
, struct sockopt
*sopt
);
123 int kern_getsockname(int s
, struct sockaddr
**name
, int *namelen
);
124 int kern_recvmsg(int s
, struct sockaddr
**sa
, struct uio
*auio
,
125 struct mbuf
**control
, int *flags
, size_t *res
);
126 int kern_shutdown(int s
, int how
);
127 int kern_sendfile(struct vnode
*vp
, int s
, off_t offset
, size_t nbytes
,
128 struct mbuf
*mheader
, off_t
*sbytes
, int flags
);
129 int kern_sendmsg(int s
, struct sockaddr
*sa
, struct uio
*auio
,
130 struct mbuf
*control
, int flags
, size_t *res
);
131 int kern_setsockopt(int s
, struct sockopt
*sopt
);
132 int kern_socket(int domain
, int type
, int protocol
, int *res
);
133 int kern_socketpair(int domain
, int type
, int protocol
, int *sockv
);
136 * Prototypes for syscalls in kern/sys_pipe.c
138 int kern_pipe(long *fds
, int flags
);
141 * Prototypes for syscalls in kern/vfs_syscalls.c
143 int kern_access(struct nlookupdata
*nd
, int amode
, int flags
);
144 int kern_chdir(struct nlookupdata
*nd
);
145 int kern_chmod(struct nlookupdata
*nd
, int mode
);
146 int kern_chown(struct nlookupdata
*nd
, int uid
, int gid
);
147 int kern_chroot(struct nchandle
*nch
);
148 int kern_fstatfs(int fd
, struct statfs
*buf
);
149 int kern_fstatvfs(int fd
, struct statvfs
*buf
);
150 int kern_ftruncate(int fd
, off_t length
);
151 int kern_futimens(int fd
, struct timespec
*ts
);
152 int kern_futimes(int fd
, struct timeval
*tptr
);
153 int kern_getdirentries(int fd
, char *buf
, u_int count
, long *basep
, int *res
,
155 int kern_link(struct nlookupdata
*nd
, struct nlookupdata
*linknd
);
156 int kern_lseek(int fd
, off_t offset
, int whence
, off_t
*res
);
157 int kern_mountctl(const char *path
, int op
, struct file
*fp
,
158 const void *ctl
, int ctllen
,
159 void *buf
, int buflen
, int *res
);
160 int kern_mkdir(struct nlookupdata
*nd
, int mode
);
161 int kern_mkfifo(struct nlookupdata
*nd
, int mode
);
162 int kern_mknod(struct nlookupdata
*nd
, int mode
, int rmajor
, int rminor
);
163 int kern_open(struct nlookupdata
*nd
, int flags
, int mode
, int *res
);
164 int kern_close(int fd
);
165 int kern_closefrom(int fd
);
166 int kern_readlink(struct nlookupdata
*nd
, char *buf
, int count
, int *res
);
167 int kern_rename(struct nlookupdata
*fromnd
, struct nlookupdata
*tond
);
168 int kern_rmdir(struct nlookupdata
*nd
);
169 int kern_stat(struct nlookupdata
*nd
, struct stat
*st
);
170 int kern_statfs(struct nlookupdata
*nd
, struct statfs
*buf
);
171 int kern_statvfs(struct nlookupdata
*nd
, struct statvfs
*buf
);
172 int kern_symlink(struct nlookupdata
*nd
, char *path
, int mode
);
173 int kern_truncate(struct nlookupdata
*nd
, off_t length
);
174 int kern_unlink(struct nlookupdata
*nd
);
175 int kern_utimensat(struct nlookupdata
*nd
, const struct timespec
*ts
, int flag
);
176 int kern_utimes(struct nlookupdata
*nd
, struct timeval
*tptr
);
177 struct uuid
*kern_uuidgen(struct uuid
*store
, size_t count
);
180 * Prototypes for syscalls in kern/kern_time.c
182 int kern_clock_gettime(clockid_t
, struct timespec
*);
183 int kern_clock_settime(clockid_t
, struct timespec
*);
184 int kern_clock_getres(clockid_t
, struct timespec
*);
187 * Prototypes for syscalls in kern/vfs_cache.c
189 char *kern_getcwd(char *, size_t, int *);
192 * Prototypes for syscalls in vm/vm_mmap.c
194 int kern_mmap(struct vmspace
*, caddr_t addr
, size_t len
,
195 int prot
, int flags
, int fd
, off_t pos
, void **res
);
197 #endif /* !_SYS_KERN_SYSCALL_H_ */