2002-04-10 19:34:51 +00:00
|
|
|
$FreeBSD$
|
|
|
|
; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94
|
|
|
|
; from: src/sys/kern/syscalls.master 1.107
|
|
|
|
;
|
|
|
|
; System call name/number master file.
|
|
|
|
; Processed to created init_sysent.c, syscalls.c and syscall.h.
|
|
|
|
|
2009-06-17 19:50:38 +00:00
|
|
|
; Columns: number audit type name alt{name,tag,rtyp}/comments
|
2002-04-10 19:34:51 +00:00
|
|
|
; number system call number, must be in order
|
2005-05-30 15:09:18 +00:00
|
|
|
; audit the audit event associated with the system call
|
|
|
|
; A value of AUE_NULL means no auditing, but it also means that
|
|
|
|
; there is no audit event for the call at this time. For the
|
|
|
|
; case where the event exists, but we don't want auditing, the
|
|
|
|
; event should be #defined to AUE_NULL in audit_kevents.h.
|
2009-06-17 19:50:38 +00:00
|
|
|
; type one of STD, OBSOL, UNIMPL, COMPAT, COMPAT4, COMPAT6,
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
; COMPAT7, COMPAT11, NODEF, NOARGS, NOPROTO, NOSTD
|
2009-06-17 19:50:38 +00:00
|
|
|
; The COMPAT* options may be combined with one or more NO*
|
|
|
|
; options separated by '|' with no spaces (e.g. COMPAT|NOARGS)
|
2002-04-10 19:34:51 +00:00
|
|
|
; name psuedo-prototype of syscall routine
|
|
|
|
; If one of the following alts is different, then all appear:
|
|
|
|
; altname name of system call if different
|
|
|
|
; alttag name of args struct tag if different from [o]`name'"_args"
|
|
|
|
; altrtyp return type if not int (bogus - syscalls always return int)
|
|
|
|
; for UNIMPL/OBSOL, name continues with comments
|
|
|
|
|
|
|
|
; types:
|
|
|
|
; STD always included
|
|
|
|
; COMPAT included on COMPAT #ifdef
|
2006-07-28 18:55:18 +00:00
|
|
|
; COMPAT4 included on COMPAT4 #ifdef (FreeBSD 4 compat)
|
2009-06-22 20:12:40 +00:00
|
|
|
; COMPAT6 included on COMPAT6 #ifdef (FreeBSD 6 compat)
|
2009-06-24 13:36:37 +00:00
|
|
|
; COMPAT7 included on COMPAT7 #ifdef (FreeBSD 7 compat)
|
2016-06-22 21:15:59 +00:00
|
|
|
; COMPAT10 included on COMPAT10 #ifdef (FreeBSD 10 compat)
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
; COMPAT11 included on COMPAT11 #ifdef (FreeBSD 11 compat)
|
2002-04-10 19:34:51 +00:00
|
|
|
; OBSOL obsolete, not included in system, only specifies name
|
|
|
|
; UNIMPL not implemented, placeholder only
|
|
|
|
; NOSTD implemented but as a lkm that can be statically
|
2009-06-17 19:50:38 +00:00
|
|
|
; compiled in; sysent entry will be filled with lkmressys
|
2006-07-28 18:55:18 +00:00
|
|
|
; so the SYSCALL_MODULE macro works
|
2008-08-21 22:57:31 +00:00
|
|
|
; NOARGS same as STD except do not create structure in sys/sysproto.h
|
|
|
|
; NODEF same as STD except only have the entry in the syscall table
|
2008-09-25 20:07:42 +00:00
|
|
|
; added. Meaning - do not create structure or function
|
2008-08-21 22:57:31 +00:00
|
|
|
; prototype in sys/sysproto.h
|
|
|
|
; NOPROTO same as STD except do not create structure or
|
|
|
|
; function prototype in sys/sysproto.h. Does add a
|
|
|
|
; definition to syscall.h besides adding a sysent.
|
2002-04-10 19:34:51 +00:00
|
|
|
|
|
|
|
; #ifdef's, etc. may be included, and are copied to the output files.
|
|
|
|
|
|
|
|
#include <sys/param.h>
|
|
|
|
#include <sys/sysent.h>
|
|
|
|
#include <sys/sysproto.h>
|
2002-07-20 02:56:12 +00:00
|
|
|
#include <sys/mount.h>
|
2007-12-06 23:11:27 +00:00
|
|
|
#include <sys/socket.h>
|
2003-08-22 22:51:48 +00:00
|
|
|
#include <compat/freebsd32/freebsd32.h>
|
|
|
|
#include <compat/freebsd32/freebsd32_proto.h>
|
2002-04-10 19:34:51 +00:00
|
|
|
|
2012-03-03 08:19:18 +00:00
|
|
|
#if !defined(PAD64_REQUIRED) && (defined(__powerpc__) || defined(__mips__))
|
2010-03-11 14:49:06 +00:00
|
|
|
#define PAD64_REQUIRED
|
|
|
|
#endif
|
|
|
|
|
2002-04-10 19:34:51 +00:00
|
|
|
; Reserved/unimplemented system calls in the range 0-150 inclusive
|
|
|
|
; are reserved for use in future Berkeley releases.
|
|
|
|
; Additional system calls implemented in vendor and other
|
|
|
|
; redistributions should be placed in the reserved range at the end
|
|
|
|
; of the current calls.
|
|
|
|
|
2006-07-28 19:05:28 +00:00
|
|
|
0 AUE_NULL NOPROTO { int nosys(void); } syscall nosys_args int
|
|
|
|
1 AUE_EXIT NOPROTO { void sys_exit(int rval); } exit \
|
2005-05-30 15:09:18 +00:00
|
|
|
sys_exit_args void
|
2006-07-28 19:05:28 +00:00
|
|
|
2 AUE_FORK NOPROTO { int fork(void); }
|
|
|
|
3 AUE_READ NOPROTO { ssize_t read(int fd, void *buf, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t nbyte); }
|
2006-07-28 19:05:28 +00:00
|
|
|
4 AUE_WRITE NOPROTO { ssize_t write(int fd, const void *buf, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t nbyte); }
|
2006-07-28 19:05:28 +00:00
|
|
|
5 AUE_OPEN_RWTC NOPROTO { int open(char *path, int flags, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int mode); }
|
2006-07-28 19:05:28 +00:00
|
|
|
6 AUE_CLOSE NOPROTO { int close(int fd); }
|
|
|
|
7 AUE_WAIT4 STD { int freebsd32_wait4(int pid, int *status, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int options, struct rusage32 *rusage); }
|
2006-02-04 13:28:55 +00:00
|
|
|
8 AUE_CREAT OBSOL old creat
|
2006-07-28 19:05:28 +00:00
|
|
|
9 AUE_LINK NOPROTO { int link(char *path, char *link); }
|
|
|
|
10 AUE_UNLINK NOPROTO { int unlink(char *path); }
|
2005-05-30 15:09:18 +00:00
|
|
|
11 AUE_NULL OBSOL execv
|
2006-07-28 19:05:28 +00:00
|
|
|
12 AUE_CHDIR NOPROTO { int chdir(char *path); }
|
|
|
|
13 AUE_FCHDIR NOPROTO { int fchdir(int fd); }
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
14 AUE_MKNOD COMPAT11 { int freebsd32_mknod(char *path, \
|
|
|
|
int mode, int dev); }
|
2006-07-28 19:05:28 +00:00
|
|
|
15 AUE_CHMOD NOPROTO { int chmod(char *path, int mode); }
|
|
|
|
16 AUE_CHOWN NOPROTO { int chown(char *path, int uid, int gid); }
|
|
|
|
17 AUE_NULL NOPROTO { int obreak(char *nsize); } break \
|
2005-05-30 15:09:18 +00:00
|
|
|
obreak_args int
|
2006-07-28 19:05:28 +00:00
|
|
|
18 AUE_GETFSSTAT COMPAT4 { int freebsd32_getfsstat( \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct statfs32 *buf, long bufsize, \
|
2016-12-27 20:21:11 +00:00
|
|
|
int mode); }
|
2011-06-16 22:05:56 +00:00
|
|
|
19 AUE_LSEEK COMPAT { int freebsd32_lseek(int fd, int offset, \
|
|
|
|
int whence); }
|
2006-07-28 19:05:28 +00:00
|
|
|
20 AUE_GETPID NOPROTO { pid_t getpid(void); }
|
|
|
|
21 AUE_MOUNT NOPROTO { int mount(char *type, char *path, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int flags, caddr_t data); }
|
2006-07-28 19:05:28 +00:00
|
|
|
22 AUE_UMOUNT NOPROTO { int unmount(char *path, int flags); }
|
|
|
|
23 AUE_SETUID NOPROTO { int setuid(uid_t uid); }
|
|
|
|
24 AUE_GETUID NOPROTO { uid_t getuid(void); }
|
|
|
|
25 AUE_GETEUID NOPROTO { uid_t geteuid(void); }
|
|
|
|
26 AUE_PTRACE NOPROTO { int ptrace(int req, pid_t pid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
caddr_t addr, int data); }
|
2006-07-28 19:05:28 +00:00
|
|
|
27 AUE_RECVMSG STD { int freebsd32_recvmsg(int s, struct msghdr32 *msg, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int flags); }
|
2006-07-28 19:05:28 +00:00
|
|
|
28 AUE_SENDMSG STD { int freebsd32_sendmsg(int s, struct msghdr32 *msg, \
|
2005-10-15 05:57:06 +00:00
|
|
|
int flags); }
|
2012-05-25 21:50:48 +00:00
|
|
|
29 AUE_RECVFROM STD { int freebsd32_recvfrom(int s, uint32_t buf, \
|
|
|
|
uint32_t len, int flags, uint32_t from, \
|
|
|
|
uint32_t fromlenaddr); }
|
2006-07-28 19:05:28 +00:00
|
|
|
30 AUE_ACCEPT NOPROTO { int accept(int s, caddr_t name, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int *anamelen); }
|
2006-07-28 19:05:28 +00:00
|
|
|
31 AUE_GETPEERNAME NOPROTO { int getpeername(int fdes, caddr_t asa, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int *alen); }
|
2006-07-28 19:05:28 +00:00
|
|
|
32 AUE_GETSOCKNAME NOPROTO { int getsockname(int fdes, caddr_t asa, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int *alen); }
|
2011-11-19 06:35:15 +00:00
|
|
|
33 AUE_ACCESS NOPROTO { int access(char *path, int amode); }
|
2013-03-21 22:44:33 +00:00
|
|
|
34 AUE_CHFLAGS NOPROTO { int chflags(const char *path, u_long flags); }
|
|
|
|
35 AUE_FCHFLAGS NOPROTO { int fchflags(int fd, u_long flags); }
|
2006-07-28 19:05:28 +00:00
|
|
|
36 AUE_SYNC NOPROTO { int sync(void); }
|
|
|
|
37 AUE_KILL NOPROTO { int kill(int pid, int signum); }
|
2011-04-01 11:16:29 +00:00
|
|
|
38 AUE_STAT COMPAT { int freebsd32_stat(char *path, \
|
|
|
|
struct ostat32 *ub); }
|
2006-07-28 19:05:28 +00:00
|
|
|
39 AUE_GETPPID NOPROTO { pid_t getppid(void); }
|
2011-04-01 11:16:29 +00:00
|
|
|
40 AUE_LSTAT COMPAT { int freebsd32_lstat(char *path, \
|
|
|
|
struct ostat *ub); }
|
2006-07-28 19:05:28 +00:00
|
|
|
41 AUE_DUP NOPROTO { int dup(u_int fd); }
|
2016-06-22 21:15:59 +00:00
|
|
|
42 AUE_PIPE COMPAT10 { int freebsd32_pipe(void); }
|
2006-07-28 19:05:28 +00:00
|
|
|
43 AUE_GETEGID NOPROTO { gid_t getegid(void); }
|
|
|
|
44 AUE_PROFILE NOPROTO { int profil(caddr_t samples, size_t size, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t offset, u_int scale); }
|
2006-07-28 19:05:28 +00:00
|
|
|
45 AUE_KTRACE NOPROTO { int ktrace(const char *fname, int ops, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int facs, int pid); }
|
2006-07-28 19:05:28 +00:00
|
|
|
46 AUE_SIGACTION COMPAT { int freebsd32_sigaction( int signum, \
|
2005-10-26 22:19:51 +00:00
|
|
|
struct osigaction32 *nsa, \
|
|
|
|
struct osigaction32 *osa); }
|
2006-07-28 19:05:28 +00:00
|
|
|
47 AUE_GETGID NOPROTO { gid_t getgid(void); }
|
|
|
|
48 AUE_SIGPROCMASK COMPAT { int freebsd32_sigprocmask(int how, \
|
2005-10-23 10:43:14 +00:00
|
|
|
osigset_t mask); }
|
2006-07-28 19:05:28 +00:00
|
|
|
49 AUE_GETLOGIN NOPROTO { int getlogin(char *namebuf, \
|
2005-05-30 15:09:18 +00:00
|
|
|
u_int namelen); }
|
2006-07-28 19:05:28 +00:00
|
|
|
50 AUE_SETLOGIN NOPROTO { int setlogin(char *namebuf); }
|
|
|
|
51 AUE_ACCT NOPROTO { int acct(char *path); }
|
|
|
|
52 AUE_SIGPENDING COMPAT { int freebsd32_sigpending(void); }
|
2006-09-17 13:28:11 +00:00
|
|
|
53 AUE_SIGALTSTACK STD { int freebsd32_sigaltstack( \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct sigaltstack32 *ss, \
|
|
|
|
struct sigaltstack32 *oss); }
|
2017-03-29 22:33:56 +00:00
|
|
|
54 AUE_IOCTL STD { int freebsd32_ioctl(int fd, uint32_t com, \
|
2008-09-22 16:09:16 +00:00
|
|
|
struct md_ioctl32 *data); }
|
2006-07-28 19:05:28 +00:00
|
|
|
55 AUE_REBOOT NOPROTO { int reboot(int opt); }
|
|
|
|
56 AUE_REVOKE NOPROTO { int revoke(char *path); }
|
|
|
|
57 AUE_SYMLINK NOPROTO { int symlink(char *path, char *link); }
|
2008-02-12 20:09:04 +00:00
|
|
|
58 AUE_READLINK NOPROTO { ssize_t readlink(char *path, char *buf, \
|
|
|
|
size_t count); }
|
2006-07-28 19:05:28 +00:00
|
|
|
59 AUE_EXECVE STD { int freebsd32_execve(char *fname, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t *argv, uint32_t *envv); }
|
2006-07-28 19:05:28 +00:00
|
|
|
60 AUE_UMASK NOPROTO { int umask(int newmask); } umask \
|
2005-05-30 15:09:18 +00:00
|
|
|
umask_args int
|
2006-07-28 19:05:28 +00:00
|
|
|
61 AUE_CHROOT NOPROTO { int chroot(char *path); }
|
2011-04-01 11:16:29 +00:00
|
|
|
62 AUE_FSTAT COMPAT { int freebsd32_fstat(int fd, \
|
|
|
|
struct ostat32 *ub); }
|
2005-05-30 15:09:18 +00:00
|
|
|
63 AUE_NULL OBSOL ogetkerninfo
|
2011-04-01 11:16:29 +00:00
|
|
|
64 AUE_NULL COMPAT { int freebsd32_getpagesize( \
|
|
|
|
int32_t dummy); }
|
2006-07-28 19:05:28 +00:00
|
|
|
65 AUE_MSYNC NOPROTO { int msync(void *addr, size_t len, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int flags); }
|
2006-07-28 19:05:28 +00:00
|
|
|
66 AUE_VFORK NOPROTO { int vfork(void); }
|
2005-05-30 15:09:18 +00:00
|
|
|
67 AUE_NULL OBSOL vread
|
|
|
|
68 AUE_NULL OBSOL vwrite
|
2006-07-28 19:05:28 +00:00
|
|
|
69 AUE_SBRK NOPROTO { int sbrk(int incr); }
|
|
|
|
70 AUE_SSTK NOPROTO { int sstk(int incr); }
|
2012-08-14 12:09:09 +00:00
|
|
|
71 AUE_MMAP COMPAT|NOPROTO { int mmap(void *addr, int len, \
|
|
|
|
int prot, int flags, int fd, int pos); }
|
2006-07-28 19:05:28 +00:00
|
|
|
72 AUE_O_VADVISE NOPROTO { int ovadvise(int anom); } vadvise \
|
2005-05-30 15:09:18 +00:00
|
|
|
ovadvise_args int
|
2006-07-28 19:05:28 +00:00
|
|
|
73 AUE_MUNMAP NOPROTO { int munmap(void *addr, size_t len); }
|
2016-08-03 06:33:04 +00:00
|
|
|
74 AUE_MPROTECT STD { int freebsd32_mprotect(void *addr, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t len, int prot); }
|
2006-07-28 19:05:28 +00:00
|
|
|
75 AUE_MADVISE NOPROTO { int madvise(void *addr, size_t len, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int behav); }
|
|
|
|
76 AUE_NULL OBSOL vhangup
|
|
|
|
77 AUE_NULL OBSOL vlimit
|
2006-07-28 19:05:28 +00:00
|
|
|
78 AUE_MINCORE NOPROTO { int mincore(const void *addr, size_t len, \
|
2005-05-30 15:09:18 +00:00
|
|
|
char *vec); }
|
2006-07-28 19:05:28 +00:00
|
|
|
79 AUE_GETGROUPS NOPROTO { int getgroups(u_int gidsetsize, \
|
2005-05-30 15:09:18 +00:00
|
|
|
gid_t *gidset); }
|
2006-07-28 19:05:28 +00:00
|
|
|
80 AUE_SETGROUPS NOPROTO { int setgroups(u_int gidsetsize, \
|
2005-05-30 15:09:18 +00:00
|
|
|
gid_t *gidset); }
|
2006-07-28 19:05:28 +00:00
|
|
|
81 AUE_GETPGRP NOPROTO { int getpgrp(void); }
|
|
|
|
82 AUE_SETPGRP NOPROTO { int setpgid(int pid, int pgid); }
|
|
|
|
83 AUE_SETITIMER STD { int freebsd32_setitimer(u_int which, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct itimerval32 *itv, \
|
|
|
|
struct itimerval32 *oitv); }
|
|
|
|
84 AUE_NULL OBSOL owait
|
2003-11-08 07:31:30 +00:00
|
|
|
; XXX implement
|
2008-09-15 17:37:41 +00:00
|
|
|
85 AUE_SWAPON NOPROTO { int swapon(char *name); }
|
2006-07-28 19:05:28 +00:00
|
|
|
86 AUE_GETITIMER STD { int freebsd32_getitimer(u_int which, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct itimerval32 *itv); }
|
2006-02-04 13:28:55 +00:00
|
|
|
87 AUE_O_GETHOSTNAME OBSOL ogethostname
|
|
|
|
88 AUE_O_SETHOSTNAME OBSOL osethostname
|
2006-07-28 19:05:28 +00:00
|
|
|
89 AUE_GETDTABLESIZE NOPROTO { int getdtablesize(void); }
|
|
|
|
90 AUE_DUP2 NOPROTO { int dup2(u_int from, u_int to); }
|
2005-05-30 15:09:18 +00:00
|
|
|
91 AUE_NULL UNIMPL getdopt
|
2014-08-27 01:02:02 +00:00
|
|
|
92 AUE_FCNTL STD { int freebsd32_fcntl(int fd, int cmd, \
|
|
|
|
int arg); }
|
2006-07-28 19:05:28 +00:00
|
|
|
93 AUE_SELECT STD { int freebsd32_select(int nd, fd_set *in, \
|
2005-05-30 15:09:18 +00:00
|
|
|
fd_set *ou, fd_set *ex, \
|
|
|
|
struct timeval32 *tv); }
|
|
|
|
94 AUE_NULL UNIMPL setdopt
|
2006-07-28 19:05:28 +00:00
|
|
|
95 AUE_FSYNC NOPROTO { int fsync(int fd); }
|
|
|
|
96 AUE_SETPRIORITY NOPROTO { int setpriority(int which, int who, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int prio); }
|
2006-07-28 19:05:28 +00:00
|
|
|
97 AUE_SOCKET NOPROTO { int socket(int domain, int type, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int protocol); }
|
2006-07-28 19:05:28 +00:00
|
|
|
98 AUE_CONNECT NOPROTO { int connect(int s, caddr_t name, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int namelen); }
|
|
|
|
99 AUE_NULL OBSOL oaccept
|
2006-07-28 19:05:28 +00:00
|
|
|
100 AUE_GETPRIORITY NOPROTO { int getpriority(int which, int who); }
|
2005-05-30 15:09:18 +00:00
|
|
|
101 AUE_NULL OBSOL osend
|
|
|
|
102 AUE_NULL OBSOL orecv
|
2017-03-29 22:33:56 +00:00
|
|
|
103 AUE_SIGRETURN COMPAT { int freebsd32_sigreturn( \
|
2011-04-01 11:16:29 +00:00
|
|
|
struct ia32_sigcontext3 *sigcntxp); }
|
2006-07-28 19:05:28 +00:00
|
|
|
104 AUE_BIND NOPROTO { int bind(int s, caddr_t name, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int namelen); }
|
2006-07-28 19:05:28 +00:00
|
|
|
105 AUE_SETSOCKOPT NOPROTO { int setsockopt(int s, int level, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int name, caddr_t val, int valsize); }
|
2006-07-28 19:05:28 +00:00
|
|
|
106 AUE_LISTEN NOPROTO { int listen(int s, int backlog); }
|
2005-05-30 15:09:18 +00:00
|
|
|
107 AUE_NULL OBSOL vtimes
|
2006-07-28 19:05:28 +00:00
|
|
|
108 AUE_O_SIGVEC COMPAT { int freebsd32_sigvec(int signum, \
|
2005-10-23 10:43:14 +00:00
|
|
|
struct sigvec32 *nsv, \
|
|
|
|
struct sigvec32 *osv); }
|
2006-07-28 19:05:28 +00:00
|
|
|
109 AUE_O_SIGBLOCK COMPAT { int freebsd32_sigblock(int mask); }
|
|
|
|
110 AUE_O_SIGSETMASK COMPAT { int freebsd32_sigsetmask( int mask); }
|
|
|
|
111 AUE_SIGSUSPEND COMPAT { int freebsd32_sigsuspend( int mask); }
|
|
|
|
112 AUE_O_SIGSTACK COMPAT { int freebsd32_sigstack( \
|
2005-10-23 10:43:14 +00:00
|
|
|
struct sigstack32 *nss, \
|
|
|
|
struct sigstack32 *oss); }
|
2005-05-30 15:09:18 +00:00
|
|
|
113 AUE_NULL OBSOL orecvmsg
|
|
|
|
114 AUE_NULL OBSOL osendmsg
|
|
|
|
115 AUE_NULL OBSOL vtrace
|
2006-07-28 19:05:28 +00:00
|
|
|
116 AUE_GETTIMEOFDAY STD { int freebsd32_gettimeofday( \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct timeval32 *tp, \
|
|
|
|
struct timezone *tzp); }
|
2006-07-28 19:05:28 +00:00
|
|
|
117 AUE_GETRUSAGE STD { int freebsd32_getrusage(int who, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct rusage32 *rusage); }
|
2006-07-28 19:05:28 +00:00
|
|
|
118 AUE_GETSOCKOPT NOPROTO { int getsockopt(int s, int level, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int name, caddr_t val, int *avalsize); }
|
|
|
|
119 AUE_NULL UNIMPL resuba (BSD/OS 2.x)
|
2006-07-28 19:05:28 +00:00
|
|
|
120 AUE_READV STD { int freebsd32_readv(int fd, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct iovec32 *iovp, u_int iovcnt); }
|
2006-07-28 19:05:28 +00:00
|
|
|
121 AUE_WRITEV STD { int freebsd32_writev(int fd, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct iovec32 *iovp, u_int iovcnt); }
|
2006-07-28 19:05:28 +00:00
|
|
|
122 AUE_SETTIMEOFDAY STD { int freebsd32_settimeofday( \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct timeval32 *tv, \
|
|
|
|
struct timezone *tzp); }
|
2006-07-28 19:05:28 +00:00
|
|
|
123 AUE_FCHOWN NOPROTO { int fchown(int fd, int uid, int gid); }
|
|
|
|
124 AUE_FCHMOD NOPROTO { int fchmod(int fd, int mode); }
|
2006-02-04 13:28:55 +00:00
|
|
|
125 AUE_RECVFROM OBSOL orecvfrom
|
2006-07-28 19:05:28 +00:00
|
|
|
126 AUE_SETREUID NOPROTO { int setreuid(int ruid, int euid); }
|
|
|
|
127 AUE_SETREGID NOPROTO { int setregid(int rgid, int egid); }
|
|
|
|
128 AUE_RENAME NOPROTO { int rename(char *from, char *to); }
|
2012-08-15 15:17:56 +00:00
|
|
|
129 AUE_TRUNCATE COMPAT|NOPROTO { int truncate(char *path, \
|
|
|
|
int length); }
|
|
|
|
130 AUE_FTRUNCATE COMPAT|NOPROTO { int ftruncate(int fd, int length); }
|
2006-07-28 19:05:28 +00:00
|
|
|
131 AUE_FLOCK NOPROTO { int flock(int fd, int how); }
|
|
|
|
132 AUE_MKFIFO NOPROTO { int mkfifo(char *path, int mode); }
|
|
|
|
133 AUE_SENDTO NOPROTO { int sendto(int s, caddr_t buf, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t len, int flags, caddr_t to, \
|
|
|
|
int tolen); }
|
2006-07-28 19:05:28 +00:00
|
|
|
134 AUE_SHUTDOWN NOPROTO { int shutdown(int s, int how); }
|
|
|
|
135 AUE_SOCKETPAIR NOPROTO { int socketpair(int domain, int type, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int protocol, int *rsv); }
|
2006-07-28 19:05:28 +00:00
|
|
|
136 AUE_MKDIR NOPROTO { int mkdir(char *path, int mode); }
|
|
|
|
137 AUE_RMDIR NOPROTO { int rmdir(char *path); }
|
|
|
|
138 AUE_UTIMES STD { int freebsd32_utimes(char *path, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct timeval32 *tptr); }
|
|
|
|
139 AUE_NULL OBSOL 4.2 sigreturn
|
2006-07-28 19:05:28 +00:00
|
|
|
140 AUE_ADJTIME STD { int freebsd32_adjtime( \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct timeval32 *delta, \
|
|
|
|
struct timeval32 *olddelta); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
141 AUE_GETPEERNAME OBSOL ogetpeername
|
|
|
|
142 AUE_SYSCTL OBSOL ogethostid
|
|
|
|
143 AUE_SYSCTL OBSOL sethostid
|
|
|
|
144 AUE_GETRLIMIT OBSOL getrlimit
|
|
|
|
145 AUE_SETRLIMIT OBSOL setrlimit
|
|
|
|
146 AUE_KILLPG OBSOL killpg
|
2006-07-28 19:05:28 +00:00
|
|
|
147 AUE_SETSID NOPROTO { int setsid(void); }
|
|
|
|
148 AUE_QUOTACTL NOPROTO { int quotactl(char *path, int cmd, int uid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
caddr_t arg); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
149 AUE_O_QUOTA OBSOL oquota
|
|
|
|
150 AUE_GETSOCKNAME OBSOL ogetsockname
|
2002-04-10 19:34:51 +00:00
|
|
|
|
|
|
|
; Syscalls 151-180 inclusive are reserved for vendor-specific
|
|
|
|
; system calls. (This includes various calls added for compatibity
|
|
|
|
; with other Unix variants.)
|
|
|
|
; Some of these calls are now supported by BSD...
|
2005-05-30 15:09:18 +00:00
|
|
|
151 AUE_NULL UNIMPL sem_lock (BSD/OS 2.x)
|
|
|
|
152 AUE_NULL UNIMPL sem_wakeup (BSD/OS 2.x)
|
|
|
|
153 AUE_NULL UNIMPL asyncdaemon (BSD/OS 2.x)
|
2008-03-26 15:23:12 +00:00
|
|
|
; 154 is initialised by the NLM code, if present.
|
|
|
|
154 AUE_NULL UNIMPL nlm_syscall
|
2002-04-10 19:34:51 +00:00
|
|
|
; 155 is initialized by the NFS code, if present.
|
2003-12-23 04:07:22 +00:00
|
|
|
; XXX this is a problem!!!
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
155 AUE_NFS_SVC UNIMPL nfssvc
|
2011-04-01 11:16:29 +00:00
|
|
|
156 AUE_GETDIRENTRIES COMPAT { int freebsd32_getdirentries(int fd, \
|
|
|
|
char *buf, u_int count, uint32_t *basep); }
|
2006-07-28 19:05:28 +00:00
|
|
|
157 AUE_STATFS COMPAT4 { int freebsd32_statfs(char *path, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct statfs32 *buf); }
|
2006-07-28 19:05:28 +00:00
|
|
|
158 AUE_FSTATFS COMPAT4 { int freebsd32_fstatfs(int fd, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct statfs32 *buf); }
|
|
|
|
159 AUE_NULL UNIMPL nosys
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
160 AUE_LGETFH UNIMPL lgetfh
|
2006-07-28 19:05:28 +00:00
|
|
|
161 AUE_NFS_GETFH NOPROTO { int getfh(char *fname, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct fhandle *fhp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
162 AUE_SYSCTL OBSOL getdomainname
|
|
|
|
163 AUE_SYSCTL OBSOL setdomainname
|
Mark uname(), getdomainname() and setdomainname() with COMPAT_FREEBSD4.
Looking at our source code history, it seems the uname(),
getdomainname() and setdomainname() system calls got deprecated
somewhere after FreeBSD 1.1, but they have never been phased out
properly. Because we don't have a COMPAT_FREEBSD1, just use
COMPAT_FREEBSD4.
Also fix the Linuxolator to build without the setdomainname() routine by
just making it call userland_sysctl on kern.domainname. Also replace the
setdomainname()'s implementation to use this approach, because we're
duplicating code with sysctl_domainname().
I wasn't able to keep these three routines working in our
COMPAT_FREEBSD32, because that would require yet another keyword for
syscalls.master (COMPAT4+NOPROTO). Because this routine is probably
unused already, this won't be a problem in practice. If it turns out to
be a problem, we'll just restore this functionality.
Reviewed by: rdivacky, kib
2008-11-09 10:45:13 +00:00
|
|
|
164 AUE_NULL OBSOL uname
|
2009-04-01 13:11:50 +00:00
|
|
|
165 AUE_SYSARCH STD { int freebsd32_sysarch(int op, char *parms); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
166 AUE_RTPRIO NOPROTO { int rtprio(int function, pid_t pid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct rtprio *rtp); }
|
|
|
|
167 AUE_NULL UNIMPL nosys
|
|
|
|
168 AUE_NULL UNIMPL nosys
|
2010-03-19 11:04:42 +00:00
|
|
|
169 AUE_SEMSYS NOSTD { int freebsd32_semsys(int which, int a2, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int a3, int a4, int a5); }
|
2010-03-19 11:04:42 +00:00
|
|
|
170 AUE_MSGSYS NOSTD { int freebsd32_msgsys(int which, int a2, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int a3, int a4, int a5, int a6); }
|
2010-03-19 11:04:42 +00:00
|
|
|
171 AUE_SHMSYS NOSTD { int freebsd32_shmsys(uint32_t which, uint32_t a2, \
|
2006-03-30 07:42:32 +00:00
|
|
|
uint32_t a3, uint32_t a4); }
|
2005-05-30 15:09:18 +00:00
|
|
|
172 AUE_NULL UNIMPL nosys
|
2007-07-04 23:02:40 +00:00
|
|
|
173 AUE_PREAD COMPAT6 { ssize_t freebsd32_pread(int fd, void *buf, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t nbyte, int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2); }
|
2007-07-04 23:02:40 +00:00
|
|
|
174 AUE_PWRITE COMPAT6 { ssize_t freebsd32_pwrite(int fd, \
|
2005-05-30 15:09:18 +00:00
|
|
|
const void *buf, size_t nbyte, int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2); }
|
2005-05-30 15:09:18 +00:00
|
|
|
175 AUE_NULL UNIMPL nosys
|
2006-09-03 13:47:24 +00:00
|
|
|
176 AUE_NTP_ADJTIME NOPROTO { int ntp_adjtime(struct timex *tp); }
|
2005-05-30 15:09:18 +00:00
|
|
|
177 AUE_NULL UNIMPL sfork (BSD/OS 2.x)
|
|
|
|
178 AUE_NULL UNIMPL getdescriptor (BSD/OS 2.x)
|
|
|
|
179 AUE_NULL UNIMPL setdescriptor (BSD/OS 2.x)
|
|
|
|
180 AUE_NULL UNIMPL nosys
|
2002-04-10 19:34:51 +00:00
|
|
|
|
|
|
|
; Syscalls 181-199 are used by/reserved for BSD
|
2006-07-28 19:05:28 +00:00
|
|
|
181 AUE_SETGID NOPROTO { int setgid(gid_t gid); }
|
|
|
|
182 AUE_SETEGID NOPROTO { int setegid(gid_t egid); }
|
|
|
|
183 AUE_SETEUID NOPROTO { int seteuid(uid_t euid); }
|
2005-05-30 15:09:18 +00:00
|
|
|
184 AUE_NULL UNIMPL lfs_bmapv
|
|
|
|
185 AUE_NULL UNIMPL lfs_markv
|
|
|
|
186 AUE_NULL UNIMPL lfs_segclean
|
|
|
|
187 AUE_NULL UNIMPL lfs_segwait
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
188 AUE_STAT COMPAT11 { int freebsd32_stat(char *path, \
|
|
|
|
struct freebsd11_stat32 *ub); }
|
|
|
|
189 AUE_FSTAT COMPAT11 { int freebsd32_fstat(int fd, \
|
|
|
|
struct freebsd11_stat32 *ub); }
|
|
|
|
190 AUE_LSTAT COMPAT11 { int freebsd32_lstat(char *path, \
|
|
|
|
struct freebsd11_stat32 *ub); }
|
2006-07-28 19:05:28 +00:00
|
|
|
191 AUE_PATHCONF NOPROTO { int pathconf(char *path, int name); }
|
|
|
|
192 AUE_FPATHCONF NOPROTO { int fpathconf(int fd, int name); }
|
2005-05-30 15:09:18 +00:00
|
|
|
193 AUE_NULL UNIMPL nosys
|
2006-07-28 19:05:28 +00:00
|
|
|
194 AUE_GETRLIMIT NOPROTO { int getrlimit(u_int which, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct rlimit *rlp); } getrlimit \
|
|
|
|
__getrlimit_args int
|
2006-07-28 19:05:28 +00:00
|
|
|
195 AUE_SETRLIMIT NOPROTO { int setrlimit(u_int which, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct rlimit *rlp); } setrlimit \
|
|
|
|
__setrlimit_args int
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
196 AUE_GETDIRENTRIES COMPAT11 { int freebsd32_getdirentries(int fd, \
|
2008-10-22 21:55:48 +00:00
|
|
|
char *buf, u_int count, int32_t *basep); }
|
2007-07-04 23:02:40 +00:00
|
|
|
197 AUE_MMAP COMPAT6 { caddr_t freebsd32_mmap(caddr_t addr, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t len, int prot, int flags, int fd, \
|
2012-05-25 21:50:48 +00:00
|
|
|
int pad, uint32_t pos1, uint32_t pos2); }
|
2006-07-28 19:05:28 +00:00
|
|
|
198 AUE_NULL NOPROTO { int nosys(void); } __syscall \
|
2005-05-30 15:09:18 +00:00
|
|
|
__syscall_args int
|
2007-07-04 23:02:40 +00:00
|
|
|
199 AUE_LSEEK COMPAT6 { off_t freebsd32_lseek(int fd, int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int whence); }
|
2007-07-04 23:02:40 +00:00
|
|
|
200 AUE_TRUNCATE COMPAT6 { int freebsd32_truncate(char *path, \
|
2012-05-25 21:50:48 +00:00
|
|
|
int pad, uint32_t length1, \
|
|
|
|
uint32_t length2); }
|
2007-07-04 23:02:40 +00:00
|
|
|
201 AUE_FTRUNCATE COMPAT6 { int freebsd32_ftruncate(int fd, int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t length1, uint32_t length2); }
|
2006-07-28 19:05:28 +00:00
|
|
|
202 AUE_SYSCTL STD { int freebsd32_sysctl(int *name, \
|
2005-05-30 15:09:18 +00:00
|
|
|
u_int namelen, void *old, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t *oldlenp, void *new, \
|
|
|
|
uint32_t newlen); }
|
2006-07-28 19:05:28 +00:00
|
|
|
203 AUE_MLOCK NOPROTO { int mlock(const void *addr, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t len); }
|
2006-07-28 19:05:28 +00:00
|
|
|
204 AUE_MUNLOCK NOPROTO { int munlock(const void *addr, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t len); }
|
2006-07-28 19:05:28 +00:00
|
|
|
205 AUE_UNDELETE NOPROTO { int undelete(char *path); }
|
|
|
|
206 AUE_FUTIMES STD { int freebsd32_futimes(int fd, \
|
2005-12-08 22:14:25 +00:00
|
|
|
struct timeval32 *tptr); }
|
2006-07-28 19:05:28 +00:00
|
|
|
207 AUE_GETPGID NOPROTO { int getpgid(pid_t pid); }
|
2005-05-30 15:09:18 +00:00
|
|
|
208 AUE_NULL UNIMPL newreboot (NetBSD)
|
2006-07-28 19:05:28 +00:00
|
|
|
209 AUE_POLL NOPROTO { int poll(struct pollfd *fds, u_int nfds, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int timeout); }
|
2002-04-10 19:34:51 +00:00
|
|
|
|
|
|
|
;
|
|
|
|
; The following are reserved for loadable syscalls
|
|
|
|
;
|
2010-06-28 18:06:46 +00:00
|
|
|
210 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
|
|
|
211 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
|
|
|
212 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
|
|
|
213 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
|
|
|
214 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
|
|
|
215 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
|
|
|
216 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
|
|
|
217 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
|
|
|
218 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
|
|
|
219 AUE_NULL NODEF|NOTSTATIC lkmnosys lkmnosys nosys_args int
|
2002-04-10 19:34:51 +00:00
|
|
|
|
|
|
|
;
|
|
|
|
; The following were introduced with NetBSD/4.4Lite-2
|
2010-03-11 14:49:06 +00:00
|
|
|
; They are initialized by their respective modules/sysinits
|
2003-12-23 04:07:22 +00:00
|
|
|
; XXX PROBLEM!!
|
2010-03-19 11:04:42 +00:00
|
|
|
220 AUE_SEMCTL COMPAT7|NOSTD { int freebsd32_semctl( \
|
|
|
|
int semid, int semnum, \
|
2007-12-06 23:36:57 +00:00
|
|
|
int cmd, union semun32 *arg); }
|
2010-03-19 11:04:42 +00:00
|
|
|
221 AUE_SEMGET NOSTD|NOPROTO { int semget(key_t key, int nsems, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int semflg); }
|
2010-03-19 11:04:42 +00:00
|
|
|
222 AUE_SEMOP NOSTD|NOPROTO { int semop(int semid, \
|
|
|
|
struct sembuf *sops, u_int nsops); }
|
2005-05-30 15:09:18 +00:00
|
|
|
223 AUE_NULL UNIMPL semconfig
|
2010-03-19 11:04:42 +00:00
|
|
|
224 AUE_MSGCTL COMPAT7|NOSTD { int freebsd32_msgctl( \
|
|
|
|
int msqid, int cmd, \
|
2009-06-24 21:10:52 +00:00
|
|
|
struct msqid_ds32_old *buf); }
|
2010-03-19 11:04:42 +00:00
|
|
|
225 AUE_MSGGET NOSTD|NOPROTO { int msgget(key_t key, int msgflg); }
|
|
|
|
226 AUE_MSGSND NOSTD { int freebsd32_msgsnd(int msqid, void *msgp, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t msgsz, int msgflg); }
|
2010-03-19 11:04:42 +00:00
|
|
|
227 AUE_MSGRCV NOSTD { int freebsd32_msgrcv(int msqid, void *msgp, \
|
2005-05-30 15:09:18 +00:00
|
|
|
size_t msgsz, long msgtyp, int msgflg); }
|
2010-03-19 11:04:42 +00:00
|
|
|
228 AUE_SHMAT NOSTD|NOPROTO { int shmat(int shmid, void *shmaddr, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int shmflg); }
|
2010-03-19 11:04:42 +00:00
|
|
|
229 AUE_SHMCTL COMPAT7|NOSTD { int freebsd32_shmctl( \
|
|
|
|
int shmid, int cmd, \
|
2009-06-24 21:10:52 +00:00
|
|
|
struct shmid_ds32_old *buf); }
|
2010-03-19 11:04:42 +00:00
|
|
|
230 AUE_SHMDT NOSTD|NOPROTO { int shmdt(void *shmaddr); }
|
|
|
|
231 AUE_SHMGET NOSTD|NOPROTO { int shmget(key_t key, int size, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int shmflg); }
|
2002-04-10 19:34:51 +00:00
|
|
|
;
|
2006-07-28 19:05:28 +00:00
|
|
|
232 AUE_NULL STD { int freebsd32_clock_gettime(clockid_t clock_id, \
|
2005-10-15 02:54:18 +00:00
|
|
|
struct timespec32 *tp); }
|
2006-07-28 19:05:28 +00:00
|
|
|
233 AUE_CLOCK_SETTIME STD { int freebsd32_clock_settime(clockid_t clock_id, \
|
2005-10-15 02:54:18 +00:00
|
|
|
const struct timespec32 *tp); }
|
2006-07-28 19:05:28 +00:00
|
|
|
234 AUE_NULL STD { int freebsd32_clock_getres(clockid_t clock_id, \
|
2005-10-15 02:54:18 +00:00
|
|
|
struct timespec32 *tp); }
|
2013-07-21 19:43:52 +00:00
|
|
|
235 AUE_NULL STD { int freebsd32_ktimer_create(\
|
|
|
|
clockid_t clock_id, \
|
|
|
|
struct sigevent32 *evp, int *timerid); }
|
|
|
|
236 AUE_NULL NOPROTO { int ktimer_delete(int timerid); }
|
|
|
|
237 AUE_NULL STD { int freebsd32_ktimer_settime(int timerid,\
|
|
|
|
int flags, \
|
|
|
|
const struct itimerspec32 *value, \
|
|
|
|
struct itimerspec32 *ovalue); }
|
|
|
|
238 AUE_NULL STD { int freebsd32_ktimer_gettime(int timerid,\
|
|
|
|
struct itimerspec32 *value); }
|
|
|
|
239 AUE_NULL NOPROTO { int ktimer_getoverrun(int timerid); }
|
2006-07-28 19:05:28 +00:00
|
|
|
240 AUE_NULL STD { int freebsd32_nanosleep( \
|
2005-10-15 02:40:10 +00:00
|
|
|
const struct timespec32 *rqtp, \
|
|
|
|
struct timespec32 *rmtp); }
|
2011-11-21 01:26:10 +00:00
|
|
|
241 AUE_NULL NOPROTO { int ffclock_getcounter(ffcounter *ffcount); }
|
|
|
|
242 AUE_NULL NOPROTO { int ffclock_setestimate( \
|
|
|
|
struct ffclock_estimate *cest); }
|
|
|
|
243 AUE_NULL NOPROTO { int ffclock_getestimate( \
|
|
|
|
struct ffclock_estimate *cest); }
|
2017-03-19 00:51:12 +00:00
|
|
|
244 AUE_NULL STD { int freebsd32_clock_nanosleep( \
|
|
|
|
clockid_t clock_id, int flags, \
|
|
|
|
const struct timespec32 *rqtp, \
|
|
|
|
struct timespec32 *rmtp); }
|
2005-05-30 15:09:18 +00:00
|
|
|
245 AUE_NULL UNIMPL nosys
|
|
|
|
246 AUE_NULL UNIMPL nosys
|
2013-07-20 13:39:41 +00:00
|
|
|
247 AUE_NULL STD { int freebsd32_clock_getcpuclockid2(\
|
|
|
|
uint32_t id1, uint32_t id2,\
|
|
|
|
int which, clockid_t *clock_id); }
|
2005-05-30 15:09:18 +00:00
|
|
|
248 AUE_NULL UNIMPL ntp_gettime
|
|
|
|
249 AUE_NULL UNIMPL nosys
|
2002-04-10 19:34:51 +00:00
|
|
|
; syscall numbers initially used in OpenBSD
|
2006-07-28 19:05:28 +00:00
|
|
|
250 AUE_MINHERIT NOPROTO { int minherit(void *addr, size_t len, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int inherit); }
|
2006-07-28 19:05:28 +00:00
|
|
|
251 AUE_RFORK NOPROTO { int rfork(int flags); }
|
2017-03-29 22:33:56 +00:00
|
|
|
252 AUE_POLL OBSOL openbsd_poll
|
2006-07-28 19:05:28 +00:00
|
|
|
253 AUE_ISSETUGID NOPROTO { int issetugid(void); }
|
|
|
|
254 AUE_LCHOWN NOPROTO { int lchown(char *path, int uid, int gid); }
|
2017-03-29 22:33:56 +00:00
|
|
|
255 AUE_AIO_READ STD { int freebsd32_aio_read( \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct aiocb32 *aiocbp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
256 AUE_AIO_WRITE STD { int freebsd32_aio_write( \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct aiocb32 *aiocbp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
257 AUE_LIO_LISTIO STD { int freebsd32_lio_listio(int mode, \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct aiocb32 * const *acb_list, \
|
2013-07-21 19:36:53 +00:00
|
|
|
int nent, struct sigevent32 *sig); }
|
2005-05-30 15:09:18 +00:00
|
|
|
258 AUE_NULL UNIMPL nosys
|
|
|
|
259 AUE_NULL UNIMPL nosys
|
|
|
|
260 AUE_NULL UNIMPL nosys
|
|
|
|
261 AUE_NULL UNIMPL nosys
|
|
|
|
262 AUE_NULL UNIMPL nosys
|
|
|
|
263 AUE_NULL UNIMPL nosys
|
|
|
|
264 AUE_NULL UNIMPL nosys
|
|
|
|
265 AUE_NULL UNIMPL nosys
|
|
|
|
266 AUE_NULL UNIMPL nosys
|
|
|
|
267 AUE_NULL UNIMPL nosys
|
|
|
|
268 AUE_NULL UNIMPL nosys
|
|
|
|
269 AUE_NULL UNIMPL nosys
|
|
|
|
270 AUE_NULL UNIMPL nosys
|
|
|
|
271 AUE_NULL UNIMPL nosys
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
272 AUE_O_GETDENTS COMPAT11 { int freebsd32_getdents(int fd, char *buf, \
|
|
|
|
int count); }
|
2005-05-30 15:09:18 +00:00
|
|
|
273 AUE_NULL UNIMPL nosys
|
2006-07-28 19:05:28 +00:00
|
|
|
274 AUE_LCHMOD NOPROTO { int lchmod(char *path, mode_t mode); }
|
|
|
|
275 AUE_LCHOWN NOPROTO { int lchown(char *path, uid_t uid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
gid_t gid); } netbsd_lchown \
|
|
|
|
lchown_args int
|
2006-07-28 19:05:28 +00:00
|
|
|
276 AUE_LUTIMES STD { int freebsd32_lutimes(char *path, \
|
2006-01-20 16:22:06 +00:00
|
|
|
struct timeval32 *tptr); }
|
2006-07-28 19:05:28 +00:00
|
|
|
277 AUE_MSYNC NOPROTO { int msync(void *addr, size_t len, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int flags); } netbsd_msync msync_args int
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
278 AUE_STAT COMPAT11|NOPROTO { int nstat(char *path, struct nstat *ub); }
|
|
|
|
279 AUE_FSTAT COMPAT11|NOPROTO { int nfstat(int fd, struct nstat *sb); }
|
|
|
|
280 AUE_LSTAT COMPAT11|NOPROTO { int nlstat(char *path, struct nstat *ub); }
|
2005-05-30 15:09:18 +00:00
|
|
|
281 AUE_NULL UNIMPL nosys
|
|
|
|
282 AUE_NULL UNIMPL nosys
|
|
|
|
283 AUE_NULL UNIMPL nosys
|
|
|
|
284 AUE_NULL UNIMPL nosys
|
|
|
|
285 AUE_NULL UNIMPL nosys
|
|
|
|
286 AUE_NULL UNIMPL nosys
|
|
|
|
287 AUE_NULL UNIMPL nosys
|
|
|
|
288 AUE_NULL UNIMPL nosys
|
2005-07-07 18:17:55 +00:00
|
|
|
; 289 and 290 from NetBSD (OpenBSD: 267 and 268)
|
2006-07-28 19:05:28 +00:00
|
|
|
289 AUE_PREADV STD { ssize_t freebsd32_preadv(int fd, \
|
2005-07-07 18:17:55 +00:00
|
|
|
struct iovec32 *iovp, \
|
2010-03-11 14:49:06 +00:00
|
|
|
u_int iovcnt, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2); }
|
2006-07-28 19:05:28 +00:00
|
|
|
290 AUE_PWRITEV STD { ssize_t freebsd32_pwritev(int fd, \
|
2005-07-07 18:17:55 +00:00
|
|
|
struct iovec32 *iovp, \
|
2010-03-11 14:49:06 +00:00
|
|
|
u_int iovcnt, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2); }
|
2005-05-30 15:09:18 +00:00
|
|
|
291 AUE_NULL UNIMPL nosys
|
|
|
|
292 AUE_NULL UNIMPL nosys
|
|
|
|
293 AUE_NULL UNIMPL nosys
|
|
|
|
294 AUE_NULL UNIMPL nosys
|
|
|
|
295 AUE_NULL UNIMPL nosys
|
|
|
|
296 AUE_NULL UNIMPL nosys
|
2002-04-10 19:34:51 +00:00
|
|
|
; XXX 297 is 300 in NetBSD
|
2006-07-28 19:05:28 +00:00
|
|
|
297 AUE_FHSTATFS COMPAT4 { int freebsd32_fhstatfs( \
|
2005-05-30 15:09:18 +00:00
|
|
|
const struct fhandle *u_fhp, \
|
|
|
|
struct statfs32 *buf); }
|
2006-07-28 19:05:28 +00:00
|
|
|
298 AUE_FHOPEN NOPROTO { int fhopen(const struct fhandle *u_fhp, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int flags); }
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
299 AUE_FHSTAT COMPAT11 { int freebsd32_fhstat( \
|
|
|
|
const struct fhandle *u_fhp, \
|
|
|
|
struct freebsd11_stat32 *sb); }
|
2002-04-10 19:34:51 +00:00
|
|
|
; syscall numbers for FreeBSD
|
2006-07-28 19:05:28 +00:00
|
|
|
300 AUE_NULL NOPROTO { int modnext(int modid); }
|
|
|
|
301 AUE_NULL STD { int freebsd32_modstat(int modid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct module_stat32* stat); }
|
2006-07-28 19:05:28 +00:00
|
|
|
302 AUE_NULL NOPROTO { int modfnext(int modid); }
|
|
|
|
303 AUE_NULL NOPROTO { int modfind(const char *name); }
|
|
|
|
304 AUE_MODLOAD NOPROTO { int kldload(const char *file); }
|
|
|
|
305 AUE_MODUNLOAD NOPROTO { int kldunload(int fileid); }
|
|
|
|
306 AUE_NULL NOPROTO { int kldfind(const char *file); }
|
|
|
|
307 AUE_NULL NOPROTO { int kldnext(int fileid); }
|
2011-03-30 14:46:12 +00:00
|
|
|
308 AUE_NULL STD { int freebsd32_kldstat(int fileid, \
|
|
|
|
struct kld32_file_stat* stat); }
|
2006-07-28 19:05:28 +00:00
|
|
|
309 AUE_NULL NOPROTO { int kldfirstmod(int fileid); }
|
|
|
|
310 AUE_GETSID NOPROTO { int getsid(pid_t pid); }
|
|
|
|
311 AUE_SETRESUID NOPROTO { int setresuid(uid_t ruid, uid_t euid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
uid_t suid); }
|
2006-07-28 19:05:28 +00:00
|
|
|
312 AUE_SETRESGID NOPROTO { int setresgid(gid_t rgid, gid_t egid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
gid_t sgid); }
|
|
|
|
313 AUE_NULL OBSOL signanosleep
|
2017-03-29 22:33:56 +00:00
|
|
|
314 AUE_AIO_RETURN STD { int freebsd32_aio_return( \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct aiocb32 *aiocbp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
315 AUE_AIO_SUSPEND STD { int freebsd32_aio_suspend( \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct aiocb32 * const * aiocbp, int nent, \
|
|
|
|
const struct timespec32 *timeout); }
|
2017-03-29 22:33:56 +00:00
|
|
|
316 AUE_AIO_CANCEL NOPROTO { int aio_cancel(int fd, \
|
2016-03-09 19:05:11 +00:00
|
|
|
struct aiocb *aiocbp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
317 AUE_AIO_ERROR STD { int freebsd32_aio_error( \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct aiocb32 *aiocbp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
318 AUE_AIO_READ COMPAT6 { int freebsd32_aio_read( \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct oaiocb32 *aiocbp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
319 AUE_AIO_WRITE COMPAT6 { int freebsd32_aio_write( \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct oaiocb32 *aiocbp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
320 AUE_LIO_LISTIO COMPAT6 { int freebsd32_lio_listio(int mode, \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct oaiocb32 * const *acb_list, \
|
|
|
|
int nent, struct osigevent32 *sig); }
|
2006-07-28 19:05:28 +00:00
|
|
|
321 AUE_NULL NOPROTO { int yield(void); }
|
2005-05-30 15:09:18 +00:00
|
|
|
322 AUE_NULL OBSOL thr_sleep
|
|
|
|
323 AUE_NULL OBSOL thr_wakeup
|
2006-07-28 19:05:28 +00:00
|
|
|
324 AUE_MLOCKALL NOPROTO { int mlockall(int how); }
|
|
|
|
325 AUE_MUNLOCKALL NOPROTO { int munlockall(void); }
|
2017-04-06 23:40:13 +00:00
|
|
|
326 AUE_GETCWD NOPROTO { int __getcwd(char *buf, size_t buflen); }
|
2002-04-10 19:34:51 +00:00
|
|
|
|
2006-07-28 19:05:28 +00:00
|
|
|
327 AUE_NULL NOPROTO { int sched_setparam (pid_t pid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
const struct sched_param *param); }
|
2006-07-28 19:05:28 +00:00
|
|
|
328 AUE_NULL NOPROTO { int sched_getparam (pid_t pid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct sched_param *param); }
|
2002-04-10 19:34:51 +00:00
|
|
|
|
2006-07-28 19:05:28 +00:00
|
|
|
329 AUE_NULL NOPROTO { int sched_setscheduler (pid_t pid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int policy, \
|
|
|
|
const struct sched_param *param); }
|
2006-07-28 19:05:28 +00:00
|
|
|
330 AUE_NULL NOPROTO { int sched_getscheduler (pid_t pid); }
|
2002-04-10 19:34:51 +00:00
|
|
|
|
2006-07-28 19:05:28 +00:00
|
|
|
331 AUE_NULL NOPROTO { int sched_yield (void); }
|
|
|
|
332 AUE_NULL NOPROTO { int sched_get_priority_max (int policy); }
|
|
|
|
333 AUE_NULL NOPROTO { int sched_get_priority_min (int policy); }
|
|
|
|
334 AUE_NULL NOPROTO { int sched_rr_get_interval (pid_t pid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct timespec *interval); }
|
2006-07-28 19:05:28 +00:00
|
|
|
335 AUE_NULL NOPROTO { int utrace(const void *addr, size_t len); }
|
|
|
|
336 AUE_SENDFILE COMPAT4 { int freebsd32_sendfile(int fd, int s, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2, \
|
2006-02-28 19:39:18 +00:00
|
|
|
size_t nbytes, struct sf_hdtr32 *hdtr, \
|
2005-05-30 15:09:18 +00:00
|
|
|
off_t *sbytes, int flags); }
|
2006-07-28 19:05:28 +00:00
|
|
|
337 AUE_NULL NOPROTO { int kldsym(int fileid, int cmd, \
|
2005-05-30 15:09:18 +00:00
|
|
|
void *data); }
|
MFp4:
Bring in updated jail support from bz_jail branch.
This enhances the current jail implementation to permit multiple
addresses per jail. In addtion to IPv4, IPv6 is supported as well.
Due to updated checks it is even possible to have jails without
an IP address at all, which basically gives one a chroot with
restricted process view, no networking,..
SCTP support was updated and supports IPv6 in jails as well.
Cpuset support permits jails to be bound to specific processor
sets after creation.
Jails can have an unrestricted (no duplicate protection, etc.) name
in addition to the hostname. The jail name cannot be changed from
within a jail and is considered to be used for management purposes
or as audit-token in the future.
DDB 'show jails' command was added to aid debugging.
Proper compat support permits 32bit jail binaries to be used on 64bit
systems to manage jails. Also backward compatibility was preserved where
possible: for jail v1 syscalls, as well as with user space management
utilities.
Both jail as well as prison version were updated for the new features.
A gap was intentionally left as the intermediate versions had been
used by various patches floating around the last years.
Bump __FreeBSD_version for the afore mentioned and in kernel changes.
Special thanks to:
- Pawel Jakub Dawidek (pjd) for his multi-IPv4 patches
and Olivier Houchard (cognet) for initial single-IPv6 patches.
- Jeff Roberson (jeff) and Randall Stewart (rrs) for their
help, ideas and review on cpuset and SCTP support.
- Robert Watson (rwatson) for lots and lots of help, discussions,
suggestions and review of most of the patch at various stages.
- John Baldwin (jhb) for his help.
- Simon L. Nielsen (simon) as early adopter testing changes
on cluster machines as well as all the testers and people
who provided feedback the last months on freebsd-jail and
other channels.
- My employer, CK Software GmbH, for the support so I could work on this.
Reviewed by: (see above)
MFC after: 3 months (this is just so that I get the mail)
X-MFC Before: 7.2-RELEASE if possible
2008-11-29 14:32:14 +00:00
|
|
|
338 AUE_JAIL STD { int freebsd32_jail(struct jail32 *jail); }
|
2005-05-30 15:09:18 +00:00
|
|
|
339 AUE_NULL UNIMPL pioctl
|
2006-07-28 19:05:28 +00:00
|
|
|
340 AUE_SIGPROCMASK NOPROTO { int sigprocmask(int how, \
|
2005-05-30 15:09:18 +00:00
|
|
|
const sigset_t *set, sigset_t *oset); }
|
2006-07-28 19:05:28 +00:00
|
|
|
341 AUE_SIGSUSPEND NOPROTO { int sigsuspend(const sigset_t *sigmask); }
|
|
|
|
342 AUE_SIGACTION COMPAT4 { int freebsd32_sigaction(int sig, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct sigaction32 *act, \
|
|
|
|
struct sigaction32 *oact); }
|
2006-07-28 19:05:28 +00:00
|
|
|
343 AUE_SIGPENDING NOPROTO { int sigpending(sigset_t *set); }
|
|
|
|
344 AUE_SIGRETURN COMPAT4 { int freebsd32_sigreturn( \
|
2004-02-21 23:37:33 +00:00
|
|
|
const struct freebsd4_freebsd32_ucontext *sigcntxp); }
|
2006-10-05 01:56:11 +00:00
|
|
|
345 AUE_SIGWAIT STD { int freebsd32_sigtimedwait(const sigset_t *set, \
|
|
|
|
siginfo_t *info, \
|
|
|
|
const struct timespec *timeout); }
|
|
|
|
346 AUE_NULL STD { int freebsd32_sigwaitinfo(const sigset_t *set, \
|
|
|
|
siginfo_t *info); }
|
2017-03-29 22:33:56 +00:00
|
|
|
347 AUE_ACL_GET_FILE NOPROTO { int __acl_get_file(const char *path, \
|
2005-05-30 15:09:18 +00:00
|
|
|
acl_type_t type, struct acl *aclp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
348 AUE_ACL_SET_FILE NOPROTO { int __acl_set_file(const char *path, \
|
2005-05-30 15:09:18 +00:00
|
|
|
acl_type_t type, struct acl *aclp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
349 AUE_ACL_GET_FD NOPROTO { int __acl_get_fd(int filedes, \
|
2005-05-30 15:09:18 +00:00
|
|
|
acl_type_t type, struct acl *aclp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
350 AUE_ACL_SET_FD NOPROTO { int __acl_set_fd(int filedes, \
|
2005-05-30 15:09:18 +00:00
|
|
|
acl_type_t type, struct acl *aclp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
351 AUE_ACL_DELETE_FILE NOPROTO { int __acl_delete_file(const char *path, \
|
2005-05-30 15:09:18 +00:00
|
|
|
acl_type_t type); }
|
2017-03-29 22:33:56 +00:00
|
|
|
352 AUE_ACL_DELETE_FD NOPROTO { int __acl_delete_fd(int filedes, \
|
2005-05-30 15:09:18 +00:00
|
|
|
acl_type_t type); }
|
2017-03-29 22:33:56 +00:00
|
|
|
353 AUE_ACL_CHECK_FILE NOPROTO { int __acl_aclcheck_file(const char *path, \
|
2005-05-30 15:09:18 +00:00
|
|
|
acl_type_t type, struct acl *aclp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
354 AUE_ACL_CHECK_FD NOPROTO { int __acl_aclcheck_fd(int filedes, \
|
2005-05-30 15:09:18 +00:00
|
|
|
acl_type_t type, struct acl *aclp); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
355 AUE_EXTATTRCTL NOPROTO { int extattrctl(const char *path, int cmd, \
|
2005-05-30 15:09:18 +00:00
|
|
|
const char *filename, int attrnamespace, \
|
|
|
|
const char *attrname); }
|
2013-04-02 05:30:41 +00:00
|
|
|
356 AUE_EXTATTR_SET_FILE NOPROTO { ssize_t extattr_set_file( \
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
const char *path, int attrnamespace, \
|
|
|
|
const char *attrname, void *data, \
|
|
|
|
size_t nbytes); }
|
|
|
|
357 AUE_EXTATTR_GET_FILE NOPROTO { ssize_t extattr_get_file( \
|
|
|
|
const char *path, int attrnamespace, \
|
|
|
|
const char *attrname, void *data, \
|
|
|
|
size_t nbytes); }
|
|
|
|
358 AUE_EXTATTR_DELETE_FILE NOPROTO { int extattr_delete_file( \
|
|
|
|
const char *path, int attrnamespace, \
|
2005-05-30 15:09:18 +00:00
|
|
|
const char *attrname); }
|
2017-03-29 22:33:56 +00:00
|
|
|
359 AUE_AIO_WAITCOMPLETE STD { int freebsd32_aio_waitcomplete( \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct aiocb32 **aiocbp, \
|
|
|
|
struct timespec32 *timeout); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
360 AUE_GETRESUID NOPROTO { int getresuid(uid_t *ruid, uid_t *euid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
uid_t *suid); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
361 AUE_GETRESGID NOPROTO { int getresgid(gid_t *rgid, gid_t *egid, \
|
2005-05-30 15:09:18 +00:00
|
|
|
gid_t *sgid); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
362 AUE_KQUEUE NOPROTO { int kqueue(void); }
|
Add abstime kqueue(2) timers and expand struct kevent members.
This change implements NOTE_ABSTIME flag for EVFILT_TIMER, which
specifies that the data field contains absolute time to fire the
event.
To make this useful, data member of the struct kevent must be extended
to 64bit. Using the opportunity, I also added ext members. This
changes struct kevent almost to Apple struct kevent64, except I did
not changed type of ident and udata, the later would cause serious API
incompatibilities.
The type of ident was kept uintptr_t since EVFILT_AIO returns a
pointer in this field, and e.g. CHERI is sensitive to the type
(discussed with brooks, jhb).
Unlike Apple kevent64, symbol versioning allows us to claim ABI
compatibility and still name the new syscall kevent(2). Compat shims
are provided for both host native and compat32.
Requested by: bapt
Reviewed by: bapt, brooks, ngie (previous version)
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D11025
2017-06-17 00:57:26 +00:00
|
|
|
363 AUE_KEVENT COMPAT11 { int freebsd32_kevent(int fd, \
|
|
|
|
const struct kevent32_freebsd11 * \
|
|
|
|
changelist, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int nchanges, \
|
Add abstime kqueue(2) timers and expand struct kevent members.
This change implements NOTE_ABSTIME flag for EVFILT_TIMER, which
specifies that the data field contains absolute time to fire the
event.
To make this useful, data member of the struct kevent must be extended
to 64bit. Using the opportunity, I also added ext members. This
changes struct kevent almost to Apple struct kevent64, except I did
not changed type of ident and udata, the later would cause serious API
incompatibilities.
The type of ident was kept uintptr_t since EVFILT_AIO returns a
pointer in this field, and e.g. CHERI is sensitive to the type
(discussed with brooks, jhb).
Unlike Apple kevent64, symbol versioning allows us to claim ABI
compatibility and still name the new syscall kevent(2). Compat shims
are provided for both host native and compat32.
Requested by: bapt
Reviewed by: bapt, brooks, ngie (previous version)
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D11025
2017-06-17 00:57:26 +00:00
|
|
|
struct kevent32_freebsd11 *eventlist, \
|
|
|
|
int nevents, \
|
2005-05-30 15:09:18 +00:00
|
|
|
const struct timespec32 *timeout); }
|
|
|
|
364 AUE_NULL UNIMPL __cap_get_proc
|
|
|
|
365 AUE_NULL UNIMPL __cap_set_proc
|
|
|
|
366 AUE_NULL UNIMPL __cap_get_fd
|
|
|
|
367 AUE_NULL UNIMPL __cap_get_file
|
|
|
|
368 AUE_NULL UNIMPL __cap_set_fd
|
|
|
|
369 AUE_NULL UNIMPL __cap_set_file
|
2008-09-25 20:07:42 +00:00
|
|
|
370 AUE_NULL UNIMPL nosys
|
2013-04-02 05:30:41 +00:00
|
|
|
371 AUE_EXTATTR_SET_FD NOPROTO { ssize_t extattr_set_fd(int fd, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int attrnamespace, const char *attrname, \
|
|
|
|
void *data, size_t nbytes); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
372 AUE_EXTATTR_GET_FD NOPROTO { ssize_t extattr_get_fd(int fd, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int attrnamespace, const char *attrname, \
|
|
|
|
void *data, size_t nbytes); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
373 AUE_EXTATTR_DELETE_FD NOPROTO { int extattr_delete_fd(int fd, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int attrnamespace, \
|
|
|
|
const char *attrname); }
|
2017-03-29 22:33:56 +00:00
|
|
|
374 AUE_SETUGID NOPROTO { int __setugid(int flag); }
|
2005-05-30 15:09:18 +00:00
|
|
|
375 AUE_NULL UNIMPL nfsclnt
|
2011-11-19 06:35:15 +00:00
|
|
|
376 AUE_EACCESS NOPROTO { int eaccess(char *path, int amode); }
|
2005-05-30 15:09:18 +00:00
|
|
|
377 AUE_NULL UNIMPL afs_syscall
|
2008-09-19 15:17:32 +00:00
|
|
|
378 AUE_NMOUNT STD { int freebsd32_nmount(struct iovec32 *iovp, \
|
2005-05-30 15:09:18 +00:00
|
|
|
unsigned int iovcnt, int flags); }
|
2008-03-12 10:12:01 +00:00
|
|
|
379 AUE_NULL UNIMPL kse_exit
|
|
|
|
380 AUE_NULL UNIMPL kse_wakeup
|
|
|
|
381 AUE_NULL UNIMPL kse_create
|
|
|
|
382 AUE_NULL UNIMPL kse_thr_interrupt
|
|
|
|
383 AUE_NULL UNIMPL kse_release
|
2005-05-30 15:09:18 +00:00
|
|
|
384 AUE_NULL UNIMPL __mac_get_proc
|
|
|
|
385 AUE_NULL UNIMPL __mac_set_proc
|
|
|
|
386 AUE_NULL UNIMPL __mac_get_fd
|
|
|
|
387 AUE_NULL UNIMPL __mac_get_file
|
|
|
|
388 AUE_NULL UNIMPL __mac_set_fd
|
|
|
|
389 AUE_NULL UNIMPL __mac_set_file
|
2006-07-28 19:05:28 +00:00
|
|
|
390 AUE_NULL NOPROTO { int kenv(int what, const char *name, \
|
2005-05-30 15:09:18 +00:00
|
|
|
char *value, int len); }
|
2013-03-21 22:44:33 +00:00
|
|
|
391 AUE_LCHFLAGS NOPROTO { int lchflags(const char *path, \
|
|
|
|
u_long flags); }
|
2006-07-28 19:05:28 +00:00
|
|
|
392 AUE_NULL NOPROTO { int uuidgen(struct uuid *store, \
|
2005-05-30 15:09:18 +00:00
|
|
|
int count); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
393 AUE_SENDFILE STD { int freebsd32_sendfile(int fd, int s, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2, \
|
2006-02-28 19:39:18 +00:00
|
|
|
size_t nbytes, struct sf_hdtr32 *hdtr, \
|
2005-05-30 15:09:18 +00:00
|
|
|
off_t *sbytes, int flags); }
|
|
|
|
394 AUE_NULL UNIMPL mac_syscall
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
395 AUE_GETFSSTAT COMPAT11|NOPROTO { int getfsstat( \
|
|
|
|
struct freebsd11_statfs *buf, \
|
2016-12-27 20:21:11 +00:00
|
|
|
long bufsize, int mode); }
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
396 AUE_STATFS COMPAT11|NOPROTO { int statfs(char *path, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct statfs *buf); }
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
397 AUE_FSTATFS COMPAT11|NOPROTO { int fstatfs(int fd, \
|
|
|
|
struct freebsd11_statfs *buf); }
|
|
|
|
398 AUE_FHSTATFS COMPAT11|NOPROTO { int fhstatfs( \
|
|
|
|
const struct fhandle *u_fhp, \
|
|
|
|
struct freebsd11_statfs *buf); }
|
2005-05-30 15:09:18 +00:00
|
|
|
399 AUE_NULL UNIMPL nosys
|
2017-03-29 22:33:56 +00:00
|
|
|
400 AUE_SEMCLOSE NOSTD|NOPROTO { int ksem_close(semid_t id); }
|
|
|
|
401 AUE_SEMPOST NOSTD|NOPROTO { int ksem_post(semid_t id); }
|
|
|
|
402 AUE_SEMWAIT NOSTD|NOPROTO { int ksem_wait(semid_t id); }
|
|
|
|
403 AUE_SEMTRYWAIT NOSTD|NOPROTO { int ksem_trywait(semid_t id); }
|
|
|
|
404 AUE_SEMINIT NOSTD { int freebsd32_ksem_init(semid_t *idp, \
|
2010-03-19 11:08:43 +00:00
|
|
|
unsigned int value); }
|
2017-03-29 22:33:56 +00:00
|
|
|
405 AUE_SEMOPEN NOSTD { int freebsd32_ksem_open(semid_t *idp, \
|
2010-03-19 11:08:43 +00:00
|
|
|
const char *name, int oflag, \
|
|
|
|
mode_t mode, unsigned int value); }
|
2017-03-29 22:33:56 +00:00
|
|
|
406 AUE_SEMUNLINK NOSTD|NOPROTO { int ksem_unlink(const char *name); }
|
|
|
|
407 AUE_SEMGETVALUE NOSTD|NOPROTO { int ksem_getvalue(semid_t id, \
|
2010-03-19 11:08:43 +00:00
|
|
|
int *val); }
|
2017-03-29 22:33:56 +00:00
|
|
|
408 AUE_SEMDESTROY NOSTD|NOPROTO { int ksem_destroy(semid_t id); }
|
2005-05-30 15:09:18 +00:00
|
|
|
409 AUE_NULL UNIMPL __mac_get_pid
|
|
|
|
410 AUE_NULL UNIMPL __mac_get_link
|
|
|
|
411 AUE_NULL UNIMPL __mac_set_link
|
2013-04-02 05:30:41 +00:00
|
|
|
412 AUE_EXTATTR_SET_LINK NOPROTO { ssize_t extattr_set_link( \
|
2009-06-10 13:48:13 +00:00
|
|
|
const char *path, int attrnamespace, \
|
|
|
|
const char *attrname, void *data, \
|
|
|
|
size_t nbytes); }
|
|
|
|
413 AUE_EXTATTR_GET_LINK NOPROTO { ssize_t extattr_get_link( \
|
|
|
|
const char *path, int attrnamespace, \
|
|
|
|
const char *attrname, void *data, \
|
|
|
|
size_t nbytes); }
|
|
|
|
414 AUE_EXTATTR_DELETE_LINK NOPROTO { int extattr_delete_link( \
|
|
|
|
const char *path, int attrnamespace, \
|
|
|
|
const char *attrname); }
|
2005-05-30 15:09:18 +00:00
|
|
|
415 AUE_NULL UNIMPL __mac_execve
|
2006-07-28 19:05:28 +00:00
|
|
|
416 AUE_SIGACTION STD { int freebsd32_sigaction(int sig, \
|
2005-05-30 15:09:18 +00:00
|
|
|
struct sigaction32 *act, \
|
|
|
|
struct sigaction32 *oact); }
|
2006-07-28 19:05:28 +00:00
|
|
|
417 AUE_SIGRETURN STD { int freebsd32_sigreturn( \
|
2003-12-23 04:07:22 +00:00
|
|
|
const struct freebsd32_ucontext *sigcntxp); }
|
2005-05-30 15:09:18 +00:00
|
|
|
418 AUE_NULL UNIMPL __xstat
|
|
|
|
419 AUE_NULL UNIMPL __xfstat
|
|
|
|
420 AUE_NULL UNIMPL __xlstat
|
2006-07-28 19:05:28 +00:00
|
|
|
421 AUE_NULL STD { int freebsd32_getcontext( \
|
2005-09-27 18:04:20 +00:00
|
|
|
struct freebsd32_ucontext *ucp); }
|
2006-07-28 19:05:28 +00:00
|
|
|
422 AUE_NULL STD { int freebsd32_setcontext( \
|
2005-09-27 18:04:20 +00:00
|
|
|
const struct freebsd32_ucontext *ucp); }
|
2006-07-28 19:05:28 +00:00
|
|
|
423 AUE_NULL STD { int freebsd32_swapcontext( \
|
2005-09-27 18:04:20 +00:00
|
|
|
struct freebsd32_ucontext *oucp, \
|
|
|
|
const struct freebsd32_ucontext *ucp); }
|
2006-02-04 13:28:55 +00:00
|
|
|
424 AUE_SWAPOFF UNIMPL swapoff
|
2017-03-29 22:33:56 +00:00
|
|
|
425 AUE_ACL_GET_LINK NOPROTO { int __acl_get_link(const char *path, \
|
2009-12-04 21:52:31 +00:00
|
|
|
acl_type_t type, struct acl *aclp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
426 AUE_ACL_SET_LINK NOPROTO { int __acl_set_link(const char *path, \
|
2009-12-04 21:52:31 +00:00
|
|
|
acl_type_t type, struct acl *aclp); }
|
2017-03-29 22:33:56 +00:00
|
|
|
427 AUE_ACL_DELETE_LINK NOPROTO { int __acl_delete_link(const char *path, \
|
2009-12-04 21:52:31 +00:00
|
|
|
acl_type_t type); }
|
2017-03-29 22:33:56 +00:00
|
|
|
428 AUE_ACL_CHECK_LINK NOPROTO { int __acl_aclcheck_link(const char *path, \
|
2009-12-04 21:52:31 +00:00
|
|
|
acl_type_t type, struct acl *aclp); }
|
2006-09-23 00:27:11 +00:00
|
|
|
429 AUE_SIGWAIT NOPROTO { int sigwait(const sigset_t *set, \
|
|
|
|
int *sig); }
|
2017-03-29 22:33:56 +00:00
|
|
|
430 AUE_THR_CREATE UNIMPL thr_create;
|
|
|
|
431 AUE_THR_EXIT NOPROTO { void thr_exit(long *state); }
|
2006-07-28 19:05:28 +00:00
|
|
|
432 AUE_NULL NOPROTO { int thr_self(long *id); }
|
2017-03-29 22:33:56 +00:00
|
|
|
433 AUE_THR_KILL NOPROTO { int thr_kill(long id, int sig); }
|
2014-03-18 21:32:03 +00:00
|
|
|
434 AUE_NULL UNIMPL nosys
|
|
|
|
435 AUE_NULL UNIMPL nosys
|
2017-03-29 22:33:56 +00:00
|
|
|
436 AUE_JAIL_ATTACH NOPROTO { int jail_attach(int jid); }
|
2009-06-10 13:48:13 +00:00
|
|
|
437 AUE_EXTATTR_LIST_FD NOPROTO { ssize_t extattr_list_fd(int fd, \
|
|
|
|
int attrnamespace, void *data, \
|
|
|
|
size_t nbytes); }
|
|
|
|
438 AUE_EXTATTR_LIST_FILE NOPROTO { ssize_t extattr_list_file( \
|
|
|
|
const char *path, int attrnamespace, \
|
|
|
|
void *data, size_t nbytes); }
|
|
|
|
439 AUE_EXTATTR_LIST_LINK NOPROTO { ssize_t extattr_list_link( \
|
|
|
|
const char *path, int attrnamespace, \
|
|
|
|
void *data, size_t nbytes); }
|
2005-05-30 15:09:18 +00:00
|
|
|
440 AUE_NULL UNIMPL kse_switchin
|
2017-03-29 22:33:56 +00:00
|
|
|
441 AUE_SEMWAIT NOSTD { int freebsd32_ksem_timedwait(semid_t id, \
|
2010-03-19 11:08:43 +00:00
|
|
|
const struct timespec32 *abstime); }
|
2006-09-22 15:04:28 +00:00
|
|
|
442 AUE_NULL STD { int freebsd32_thr_suspend( \
|
|
|
|
const struct timespec32 *timeout); }
|
2006-07-28 19:05:28 +00:00
|
|
|
443 AUE_NULL NOPROTO { int thr_wake(long id); }
|
Set freebsd32 system call event identifiers for:
- old truncate, ftruncate
- old getpeername, gethostid, sethostid, getrlimit, setrlimit, killpg.
- old quota, getsockname, getdirentries.
- lgetfh
- old getdomainname, setdomainname
- sysarch, rtprio, __getcwd, jail, sigtimedwait
- extattrctl, extattr_{get,set,delete,list}_{file,fd,link}
- getresgid, getresuid, kqueue, eaccess, nmount, sendfile
- fhstatfs, kldunloadf
Right identifiers for:
- nfssvc
Remove incorrect identifier for:
- __acl_get_file
Compile tested with help of: sam
Obtained from: TrustedBSD Project
2006-09-03 16:17:49 +00:00
|
|
|
444 AUE_MODUNLOAD NOPROTO { int kldunloadf(int fileid, int flags); }
|
2006-10-24 17:24:11 +00:00
|
|
|
445 AUE_AUDIT NOPROTO { int audit(const void *record, \
|
2006-10-24 13:49:44 +00:00
|
|
|
u_int length); }
|
2006-10-24 17:24:11 +00:00
|
|
|
446 AUE_AUDITON NOPROTO { int auditon(int cmd, void *data, \
|
2006-10-24 13:49:44 +00:00
|
|
|
u_int length); }
|
2006-10-24 17:24:11 +00:00
|
|
|
447 AUE_GETAUID NOPROTO { int getauid(uid_t *auid); }
|
|
|
|
448 AUE_SETAUID NOPROTO { int setauid(uid_t *auid); }
|
|
|
|
449 AUE_GETAUDIT NOPROTO { int getaudit(struct auditinfo *auditinfo); }
|
|
|
|
450 AUE_SETAUDIT NOPROTO { int setaudit(struct auditinfo *auditinfo); }
|
|
|
|
451 AUE_GETAUDIT_ADDR NOPROTO { int getaudit_addr( \
|
2006-10-24 13:49:44 +00:00
|
|
|
struct auditinfo_addr *auditinfo_addr, \
|
|
|
|
u_int length); }
|
2006-10-24 17:24:11 +00:00
|
|
|
452 AUE_SETAUDIT_ADDR NOPROTO { int setaudit_addr( \
|
2006-10-24 13:49:44 +00:00
|
|
|
struct auditinfo_addr *auditinfo_addr, \
|
|
|
|
u_int length); }
|
2006-10-24 17:24:11 +00:00
|
|
|
453 AUE_AUDITCTL NOPROTO { int auditctl(char *path); }
|
2006-09-22 00:52:54 +00:00
|
|
|
454 AUE_NULL STD { int freebsd32_umtx_op(void *obj, int op,\
|
2006-10-17 02:28:26 +00:00
|
|
|
u_long val, void *uaddr, \
|
2006-09-22 00:52:54 +00:00
|
|
|
void *uaddr2); }
|
2017-03-29 22:33:56 +00:00
|
|
|
455 AUE_THR_NEW STD { int freebsd32_thr_new( \
|
2006-09-22 15:04:28 +00:00
|
|
|
struct thr_param32 *param, \
|
|
|
|
int param_size); }
|
2017-05-05 18:49:39 +00:00
|
|
|
456 AUE_NULL STD { int freebsd32_sigqueue(pid_t pid, \
|
|
|
|
int signum, int value); }
|
2017-03-29 22:33:56 +00:00
|
|
|
457 AUE_MQ_OPEN NOSTD { int freebsd32_kmq_open( \
|
2010-03-19 11:10:24 +00:00
|
|
|
const char *path, int flags, mode_t mode, \
|
|
|
|
const struct mq_attr32 *attr); }
|
2017-03-29 22:33:56 +00:00
|
|
|
458 AUE_MQ_SETATTR NOSTD { int freebsd32_kmq_setattr(int mqd, \
|
2010-03-19 11:10:24 +00:00
|
|
|
const struct mq_attr32 *attr, \
|
|
|
|
struct mq_attr32 *oattr); }
|
2017-03-29 22:33:56 +00:00
|
|
|
459 AUE_MQ_TIMEDRECEIVE NOSTD { int freebsd32_kmq_timedreceive(int mqd, \
|
2010-03-19 11:10:24 +00:00
|
|
|
char *msg_ptr, size_t msg_len, \
|
|
|
|
unsigned *msg_prio, \
|
|
|
|
const struct timespec32 *abs_timeout); }
|
2017-03-29 22:33:56 +00:00
|
|
|
460 AUE_MQ_TIMEDSEND NOSTD { int freebsd32_kmq_timedsend(int mqd, \
|
2010-03-19 11:10:24 +00:00
|
|
|
const char *msg_ptr, size_t msg_len,\
|
|
|
|
unsigned msg_prio, \
|
|
|
|
const struct timespec32 *abs_timeout);}
|
2017-03-29 22:33:56 +00:00
|
|
|
461 AUE_MQ_NOTIFY NOSTD { int freebsd32_kmq_notify(int mqd, \
|
2013-07-21 19:40:30 +00:00
|
|
|
const struct sigevent32 *sigev); }
|
2017-03-29 22:33:56 +00:00
|
|
|
462 AUE_MQ_UNLINK NOPROTO|NOSTD { int kmq_unlink(const char *path); }
|
2006-07-28 19:05:28 +00:00
|
|
|
463 AUE_NULL NOPROTO { int abort2(const char *why, int nargs, void **args); }
|
2006-09-09 01:22:13 +00:00
|
|
|
464 AUE_NULL NOPROTO { int thr_set_name(long id, const char *name); }
|
2017-03-29 22:33:56 +00:00
|
|
|
465 AUE_AIO_FSYNC STD { int freebsd32_aio_fsync(int op, \
|
2008-12-10 20:56:19 +00:00
|
|
|
struct aiocb32 *aiocbp); }
|
2006-09-21 04:49:36 +00:00
|
|
|
466 AUE_RTPRIO NOPROTO { int rtprio_thread(int function, \
|
|
|
|
lwpid_t lwpid, struct rtprio *rtp); }
|
|
|
|
467 AUE_NULL UNIMPL nosys
|
|
|
|
468 AUE_NULL UNIMPL nosys
|
2006-08-16 22:32:50 +00:00
|
|
|
469 AUE_NULL UNIMPL __getpath_fromfd
|
|
|
|
470 AUE_NULL UNIMPL __getpath_fromaddr
|
2017-03-29 22:33:56 +00:00
|
|
|
471 AUE_SCTP_PEELOFF NOPROTO|NOSTD { int sctp_peeloff(int sd, uint32_t name); }
|
|
|
|
472 AUE_SCTP_GENERIC_SENDMSG NOPROTO|NOSTD { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \
|
2006-11-03 21:21:28 +00:00
|
|
|
caddr_t to, __socklen_t tolen, \
|
2006-11-03 15:23:16 +00:00
|
|
|
struct sctp_sndrcvinfo *sinfo, int flags); }
|
2017-03-29 22:33:56 +00:00
|
|
|
473 AUE_SCTP_GENERIC_SENDMSG_IOV NOPROTO|NOSTD { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \
|
2006-11-03 21:21:28 +00:00
|
|
|
caddr_t to, __socklen_t tolen, \
|
2006-11-03 15:23:16 +00:00
|
|
|
struct sctp_sndrcvinfo *sinfo, int flags); }
|
2017-03-29 22:33:56 +00:00
|
|
|
474 AUE_SCTP_GENERIC_RECVMSG NOPROTO|NOSTD { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \
|
2006-11-03 15:23:16 +00:00
|
|
|
struct sockaddr * from, __socklen_t *fromlenaddr, \
|
|
|
|
struct sctp_sndrcvinfo *sinfo, int *msg_flags); }
|
2010-03-11 14:49:06 +00:00
|
|
|
#ifdef PAD64_REQUIRED
|
2007-07-04 23:02:40 +00:00
|
|
|
475 AUE_PREAD STD { ssize_t freebsd32_pread(int fd, \
|
|
|
|
void *buf,size_t nbyte, \
|
2010-03-11 14:49:06 +00:00
|
|
|
int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2); }
|
2007-07-04 23:02:40 +00:00
|
|
|
476 AUE_PWRITE STD { ssize_t freebsd32_pwrite(int fd, \
|
|
|
|
const void *buf, size_t nbyte, \
|
2010-03-11 14:49:06 +00:00
|
|
|
int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2); }
|
2007-07-04 23:02:40 +00:00
|
|
|
477 AUE_MMAP STD { caddr_t freebsd32_mmap(caddr_t addr, \
|
|
|
|
size_t len, int prot, int flags, int fd, \
|
2010-03-11 14:49:06 +00:00
|
|
|
int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t pos1, uint32_t pos2); }
|
2007-07-04 23:02:40 +00:00
|
|
|
478 AUE_LSEEK STD { off_t freebsd32_lseek(int fd, \
|
2010-03-11 14:49:06 +00:00
|
|
|
int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2, \
|
2007-07-04 23:02:40 +00:00
|
|
|
int whence); }
|
|
|
|
479 AUE_TRUNCATE STD { int freebsd32_truncate(char *path, \
|
2010-03-11 14:49:06 +00:00
|
|
|
int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t length1, uint32_t length2); }
|
2007-07-04 23:02:40 +00:00
|
|
|
480 AUE_FTRUNCATE STD { int freebsd32_ftruncate(int fd, \
|
2010-03-11 14:49:06 +00:00
|
|
|
int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t length1, uint32_t length2); }
|
2010-03-11 14:49:06 +00:00
|
|
|
#else
|
|
|
|
475 AUE_PREAD STD { ssize_t freebsd32_pread(int fd, \
|
|
|
|
void *buf,size_t nbyte, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2); }
|
2010-03-11 14:49:06 +00:00
|
|
|
476 AUE_PWRITE STD { ssize_t freebsd32_pwrite(int fd, \
|
|
|
|
const void *buf, size_t nbyte, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2); }
|
2010-03-11 14:49:06 +00:00
|
|
|
477 AUE_MMAP STD { caddr_t freebsd32_mmap(caddr_t addr, \
|
|
|
|
size_t len, int prot, int flags, int fd, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t pos1, uint32_t pos2); }
|
2010-03-11 14:49:06 +00:00
|
|
|
478 AUE_LSEEK STD { off_t freebsd32_lseek(int fd, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t offset1, uint32_t offset2, \
|
2010-03-11 14:49:06 +00:00
|
|
|
int whence); }
|
|
|
|
479 AUE_TRUNCATE STD { int freebsd32_truncate(char *path, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t length1, uint32_t length2); }
|
2010-03-11 14:49:06 +00:00
|
|
|
480 AUE_FTRUNCATE STD { int freebsd32_ftruncate(int fd, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t length1, uint32_t length2); }
|
2010-03-11 14:49:06 +00:00
|
|
|
#endif
|
2017-03-29 22:33:56 +00:00
|
|
|
481 AUE_THR_KILL2 NOPROTO { int thr_kill2(pid_t pid, long id, int sig); }
|
2008-01-20 23:43:06 +00:00
|
|
|
482 AUE_SHMOPEN NOPROTO { int shm_open(const char *path, int flags, \
|
Add a new file descriptor type for IPC shared memory objects and use it to
implement shm_open(2) and shm_unlink(2) in the kernel:
- Each shared memory file descriptor is associated with a swap-backed vm
object which provides the backing store. Each descriptor starts off with
a size of zero, but the size can be altered via ftruncate(2). The shared
memory file descriptors also support fstat(2). read(2), write(2),
ioctl(2), select(2), poll(2), and kevent(2) are not supported on shared
memory file descriptors.
- shm_open(2) and shm_unlink(2) are now implemented as system calls that
manage shared memory file descriptors. The virtual namespace that maps
pathnames to shared memory file descriptors is implemented as a hash
table where the hash key is generated via the 32-bit Fowler/Noll/Vo hash
of the pathname.
- As an extension, the constant 'SHM_ANON' may be specified in place of the
path argument to shm_open(2). In this case, an unnamed shared memory
file descriptor will be created similar to the IPC_PRIVATE key for
shmget(2). Note that the shared memory object can still be shared among
processes by sharing the file descriptor via fork(2) or sendmsg(2), but
it is unnamed. This effectively serves to implement the getmemfd() idea
bandied about the lists several times over the years.
- The backing store for shared memory file descriptors are garbage
collected when they are not referenced by any open file descriptors or
the shm_open(2) virtual namespace.
Submitted by: dillon, peter (previous versions)
Submitted by: rwatson (I based this on his version)
Reviewed by: alc (suggested converting getmemfd() to shm_open())
2008-01-08 21:58:16 +00:00
|
|
|
mode_t mode); }
|
2008-01-20 23:43:06 +00:00
|
|
|
483 AUE_SHMUNLINK NOPROTO { int shm_unlink(const char *path); }
|
2008-03-25 19:34:47 +00:00
|
|
|
484 AUE_NULL NOPROTO { int cpuset(cpusetid_t *setid); }
|
2010-03-11 14:49:06 +00:00
|
|
|
#ifdef PAD64_REQUIRED
|
|
|
|
485 AUE_NULL STD { int freebsd32_cpuset_setid(cpuwhich_t which, \
|
|
|
|
int pad, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t id1, uint32_t id2, \
|
2010-03-11 14:49:06 +00:00
|
|
|
cpusetid_t setid); }
|
|
|
|
#else
|
2008-07-10 17:45:57 +00:00
|
|
|
485 AUE_NULL STD { int freebsd32_cpuset_setid(cpuwhich_t which, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t id1, uint32_t id2, \
|
2008-03-25 19:34:47 +00:00
|
|
|
cpusetid_t setid); }
|
2010-03-11 14:49:06 +00:00
|
|
|
#endif
|
2008-07-10 17:45:57 +00:00
|
|
|
486 AUE_NULL STD { int freebsd32_cpuset_getid(cpulevel_t level, \
|
|
|
|
cpuwhich_t which, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t id1, uint32_t id2, \
|
2008-03-25 19:34:47 +00:00
|
|
|
cpusetid_t *setid); }
|
2008-07-10 17:45:57 +00:00
|
|
|
487 AUE_NULL STD { int freebsd32_cpuset_getaffinity( \
|
|
|
|
cpulevel_t level, cpuwhich_t which, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t id1, uint32_t id2, \
|
2008-07-10 17:45:57 +00:00
|
|
|
size_t cpusetsize, \
|
2008-03-25 19:34:47 +00:00
|
|
|
cpuset_t *mask); }
|
2008-07-10 17:45:57 +00:00
|
|
|
488 AUE_NULL STD { int freebsd32_cpuset_setaffinity( \
|
|
|
|
cpulevel_t level, cpuwhich_t which, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t id1, uint32_t id2, \
|
2008-07-10 17:45:57 +00:00
|
|
|
size_t cpusetsize, \
|
2008-03-25 19:34:47 +00:00
|
|
|
const cpuset_t *mask); }
|
2011-11-19 06:35:15 +00:00
|
|
|
489 AUE_FACCESSAT NOPROTO { int faccessat(int fd, char *path, int amode, \
|
2008-03-31 12:08:30 +00:00
|
|
|
int flag); }
|
|
|
|
490 AUE_FCHMODAT NOPROTO { int fchmodat(int fd, const char *path, \
|
|
|
|
mode_t mode, int flag); }
|
|
|
|
491 AUE_FCHOWNAT NOPROTO { int fchownat(int fd, char *path, uid_t uid, \
|
|
|
|
gid_t gid, int flag); }
|
|
|
|
492 AUE_FEXECVE STD { int freebsd32_fexecve(int fd, \
|
2012-05-25 21:50:48 +00:00
|
|
|
uint32_t *argv, uint32_t *envv); }
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
493 AUE_FSTATAT COMPAT11 { int freebsd32_fstatat(int fd, \
|
|
|
|
char *path, struct freebsd11_stat32 *buf, \
|
|
|
|
int flag); }
|
2008-03-31 12:08:30 +00:00
|
|
|
494 AUE_FUTIMESAT STD { int freebsd32_futimesat(int fd, char *path, \
|
|
|
|
struct timeval *times); }
|
|
|
|
495 AUE_LINKAT NOPROTO { int linkat(int fd1, char *path1, int fd2, \
|
|
|
|
char *path2, int flag); }
|
|
|
|
496 AUE_MKDIRAT NOPROTO { int mkdirat(int fd, char *path, \
|
|
|
|
mode_t mode); }
|
|
|
|
497 AUE_MKFIFOAT NOPROTO { int mkfifoat(int fd, char *path, \
|
|
|
|
mode_t mode); }
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
498 AUE_MKNODAT COMPAT11 { int freebsd32_mknodat(int fd, char *path, \
|
|
|
|
mode_t mode, uint32_t dev); }
|
2008-03-31 12:08:30 +00:00
|
|
|
499 AUE_OPENAT_RWTC NOPROTO { int openat(int fd, char *path, int flag, \
|
|
|
|
mode_t mode); }
|
|
|
|
500 AUE_READLINKAT NOPROTO { int readlinkat(int fd, char *path, char *buf, \
|
|
|
|
size_t bufsize); }
|
|
|
|
501 AUE_RENAMEAT NOPROTO { int renameat(int oldfd, char *old, int newfd, \
|
|
|
|
const char *new); }
|
|
|
|
502 AUE_SYMLINKAT NOPROTO { int symlinkat(char *path1, int fd, \
|
|
|
|
char *path2); }
|
|
|
|
503 AUE_UNLINKAT NOPROTO { int unlinkat(int fd, char *path, \
|
|
|
|
int flag); }
|
2008-08-24 21:20:35 +00:00
|
|
|
504 AUE_POSIX_OPENPT NOPROTO { int posix_openpt(int flags); }
|
Implement support for RPCSEC_GSS authentication to both the NFS client
and server. This replaces the RPC implementation of the NFS client and
server with the newer RPC implementation originally developed
(actually ported from the userland sunrpc code) to support the NFS
Lock Manager. I have tested this code extensively and I believe it is
stable and that performance is at least equal to the legacy RPC
implementation.
The NFS code currently contains support for both the new RPC
implementation and the older legacy implementation inherited from the
original NFS codebase. The default is to use the new implementation -
add the NFS_LEGACYRPC option to fall back to the old code. When I
merge this support back to RELENG_7, I will probably change this so
that users have to 'opt in' to get the new code.
To use RPCSEC_GSS on either client or server, you must build a kernel
which includes the KGSSAPI option and the crypto device. On the
userland side, you must build at least a new libc, mountd, mount_nfs
and gssd. You must install new versions of /etc/rc.d/gssd and
/etc/rc.d/nfsd and add 'gssd_enable=YES' to /etc/rc.conf.
As long as gssd is running, you should be able to mount an NFS
filesystem from a server that requires RPCSEC_GSS authentication. The
mount itself can happen without any kerberos credentials but all
access to the filesystem will be denied unless the accessing user has
a valid ticket file in the standard place (/tmp/krb5cc_<uid>). There
is currently no support for situations where the ticket file is in a
different place, such as when the user logged in via SSH and has
delegated credentials from that login. This restriction is also
present in Solaris and Linux. In theory, we could improve this in
future, possibly using Brooks Davis' implementation of variant
symlinks.
Supporting RPCSEC_GSS on a server is nearly as simple. You must create
service creds for the server in the form 'nfs/<fqdn>@<REALM>' and
install them in /etc/krb5.keytab. The standard heimdal utility ktutil
makes this fairly easy. After the service creds have been created, you
can add a '-sec=krb5' option to /etc/exports and restart both mountd
and nfsd.
The only other difference an administrator should notice is that nfsd
doesn't fork to create service threads any more. In normal operation,
there will be two nfsd processes, one in userland waiting for TCP
connections and one in the kernel handling requests. The latter
process will create as many kthreads as required - these should be
visible via 'top -H'. The code has some support for varying the number
of service threads according to load but initially at least, nfsd uses
a fixed number of threads according to the value supplied to its '-n'
option.
Sponsored by: Isilon Systems
MFC after: 1 month
2008-11-03 10:38:00 +00:00
|
|
|
; 505 is initialised by the kgssapi code, if present.
|
|
|
|
505 AUE_NULL UNIMPL gssd_syscall
|
2017-03-29 22:33:56 +00:00
|
|
|
506 AUE_JAIL_GET STD { int freebsd32_jail_get(struct iovec32 *iovp, \
|
2009-04-29 21:14:15 +00:00
|
|
|
unsigned int iovcnt, int flags); }
|
2017-03-29 22:33:56 +00:00
|
|
|
507 AUE_JAIL_SET STD { int freebsd32_jail_set(struct iovec32 *iovp, \
|
2009-04-29 21:14:15 +00:00
|
|
|
unsigned int iovcnt, int flags); }
|
2017-03-29 22:33:56 +00:00
|
|
|
508 AUE_JAIL_REMOVE NOPROTO { int jail_remove(int jid); }
|
2009-06-15 20:38:55 +00:00
|
|
|
509 AUE_CLOSEFROM NOPROTO { int closefrom(int lowfd); }
|
2010-03-19 11:04:42 +00:00
|
|
|
510 AUE_SEMCTL NOSTD { int freebsd32_semctl(int semid, int semnum, \
|
2009-06-24 21:10:52 +00:00
|
|
|
int cmd, union semun32 *arg); }
|
2010-03-19 11:04:42 +00:00
|
|
|
511 AUE_MSGCTL NOSTD { int freebsd32_msgctl(int msqid, int cmd, \
|
2009-06-24 21:10:52 +00:00
|
|
|
struct msqid_ds32 *buf); }
|
2010-03-19 11:04:42 +00:00
|
|
|
512 AUE_SHMCTL NOSTD { int freebsd32_shmctl(int shmid, int cmd, \
|
2009-06-24 21:10:52 +00:00
|
|
|
struct shmid_ds32 *buf); }
|
2009-07-08 16:26:43 +00:00
|
|
|
513 AUE_LPATHCONF NOPROTO { int lpathconf(char *path, int name); }
|
Change the cap_rights_t type from uint64_t to a structure that we can extend
in the future in a backward compatible (API and ABI) way.
The cap_rights_t represents capability rights. We used to use one bit to
represent one right, but we are running out of spare bits. Currently the new
structure provides place for 114 rights (so 50 more than the previous
cap_rights_t), but it is possible to grow the structure to hold at least 285
rights, although we can make it even larger if 285 rights won't be enough.
The structure definition looks like this:
struct cap_rights {
uint64_t cr_rights[CAP_RIGHTS_VERSION + 2];
};
The initial CAP_RIGHTS_VERSION is 0.
The top two bits in the first element of the cr_rights[] array contain total
number of elements in the array - 2. This means if those two bits are equal to
0, we have 2 array elements.
The top two bits in all remaining array elements should be 0.
The next five bits in all array elements contain array index. Only one bit is
used and bit position in this five-bits range defines array index. This means
there can be at most five array elements in the future.
To define new right the CAPRIGHT() macro must be used. The macro takes two
arguments - an array index and a bit to set, eg.
#define CAP_PDKILL CAPRIGHT(1, 0x0000000000000800ULL)
We still support aliases that combine few rights, but the rights have to belong
to the same array element, eg:
#define CAP_LOOKUP CAPRIGHT(0, 0x0000000000000400ULL)
#define CAP_FCHMOD CAPRIGHT(0, 0x0000000000002000ULL)
#define CAP_FCHMODAT (CAP_FCHMOD | CAP_LOOKUP)
There is new API to manage the new cap_rights_t structure:
cap_rights_t *cap_rights_init(cap_rights_t *rights, ...);
void cap_rights_set(cap_rights_t *rights, ...);
void cap_rights_clear(cap_rights_t *rights, ...);
bool cap_rights_is_set(const cap_rights_t *rights, ...);
bool cap_rights_is_valid(const cap_rights_t *rights);
void cap_rights_merge(cap_rights_t *dst, const cap_rights_t *src);
void cap_rights_remove(cap_rights_t *dst, const cap_rights_t *src);
bool cap_rights_contains(const cap_rights_t *big, const cap_rights_t *little);
Capability rights to the cap_rights_init(), cap_rights_set(),
cap_rights_clear() and cap_rights_is_set() functions are provided by
separating them with commas, eg:
cap_rights_t rights;
cap_rights_init(&rights, CAP_READ, CAP_WRITE, CAP_FSTAT);
There is no need to terminate the list of rights, as those functions are
actually macros that take care of the termination, eg:
#define cap_rights_set(rights, ...) \
__cap_rights_set((rights), __VA_ARGS__, 0ULL)
void __cap_rights_set(cap_rights_t *rights, ...);
Thanks to using one bit as an array index we can assert in those functions that
there are no two rights belonging to different array elements provided
together. For example this is illegal and will be detected, because CAP_LOOKUP
belongs to element 0 and CAP_PDKILL to element 1:
cap_rights_init(&rights, CAP_LOOKUP | CAP_PDKILL);
Providing several rights that belongs to the same array's element this way is
correct, but is not advised. It should only be used for aliases definition.
This commit also breaks compatibility with some existing Capsicum system calls,
but I see no other way to do that. This should be fine as Capsicum is still
experimental and this change is not going to 9.x.
Sponsored by: The FreeBSD Foundation
2013-09-05 00:09:56 +00:00
|
|
|
514 AUE_NULL OBSOL cap_new
|
|
|
|
515 AUE_CAP_RIGHTS_GET NOPROTO { int __cap_rights_get(int version, \
|
|
|
|
int fd, cap_rights_t *rightsp); }
|
2016-09-18 22:03:07 +00:00
|
|
|
516 AUE_CAP_ENTER NOPROTO { int cap_enter(void); }
|
2011-03-01 13:23:37 +00:00
|
|
|
517 AUE_CAP_GETMODE NOPROTO { int cap_getmode(u_int *modep); }
|
2013-08-17 14:17:13 +00:00
|
|
|
518 AUE_PDFORK NOPROTO { int pdfork(int *fdp, int flags); }
|
|
|
|
519 AUE_PDKILL NOPROTO { int pdkill(int fd, int signum); }
|
|
|
|
520 AUE_PDGETPID NOPROTO { int pdgetpid(int fd, pid_t *pidp); }
|
|
|
|
521 AUE_PDWAIT UNIMPL pdwait4
|
2009-10-27 10:55:34 +00:00
|
|
|
522 AUE_SELECT STD { int freebsd32_pselect(int nd, fd_set *in, \
|
|
|
|
fd_set *ou, fd_set *ex, \
|
|
|
|
const struct timespec32 *ts, \
|
|
|
|
const sigset_t *sm); }
|
2017-03-29 22:33:56 +00:00
|
|
|
523 AUE_GETLOGINCLASS NOPROTO { int getloginclass(char *namebuf, \
|
2011-03-05 12:40:35 +00:00
|
|
|
size_t namelen); }
|
2017-03-29 22:33:56 +00:00
|
|
|
524 AUE_SETLOGINCLASS NOPROTO { int setloginclass(const char *namebuf); }
|
2011-03-30 17:48:15 +00:00
|
|
|
525 AUE_NULL NOPROTO { int rctl_get_racct(const void *inbufp, \
|
|
|
|
size_t inbuflen, void *outbufp, \
|
|
|
|
size_t outbuflen); }
|
|
|
|
526 AUE_NULL NOPROTO { int rctl_get_rules(const void *inbufp, \
|
|
|
|
size_t inbuflen, void *outbufp, \
|
|
|
|
size_t outbuflen); }
|
|
|
|
527 AUE_NULL NOPROTO { int rctl_get_limits(const void *inbufp, \
|
|
|
|
size_t inbuflen, void *outbufp, \
|
|
|
|
size_t outbuflen); }
|
|
|
|
528 AUE_NULL NOPROTO { int rctl_add_rule(const void *inbufp, \
|
|
|
|
size_t inbuflen, void *outbufp, \
|
|
|
|
size_t outbuflen); }
|
|
|
|
529 AUE_NULL NOPROTO { int rctl_remove_rule(const void *inbufp, \
|
|
|
|
size_t inbuflen, void *outbufp, \
|
|
|
|
size_t outbuflen); }
|
2013-05-21 11:40:16 +00:00
|
|
|
#ifdef PAD64_REQUIRED
|
2017-03-29 22:33:56 +00:00
|
|
|
530 AUE_POSIX_FALLOCATE STD { int freebsd32_posix_fallocate(int fd, \
|
2013-05-21 11:40:16 +00:00
|
|
|
int pad, \
|
|
|
|
uint32_t offset1, uint32_t offset2,\
|
|
|
|
uint32_t len1, uint32_t len2); }
|
2017-03-29 22:33:56 +00:00
|
|
|
531 AUE_POSIX_FADVISE STD { int freebsd32_posix_fadvise(int fd, \
|
2013-05-21 11:40:16 +00:00
|
|
|
int pad, \
|
|
|
|
uint32_t offset1, uint32_t offset2,\
|
|
|
|
uint32_t len1, uint32_t len2, \
|
|
|
|
int advice); }
|
|
|
|
532 AUE_WAIT6 STD { int freebsd32_wait6(int idtype, int pad, \
|
|
|
|
uint32_t id1, uint32_t id2, \
|
|
|
|
int *status, int options, \
|
|
|
|
struct wrusage32 *wrusage, \
|
|
|
|
siginfo_t *info); }
|
|
|
|
#else
|
2017-03-29 22:33:56 +00:00
|
|
|
530 AUE_POSIX_FALLOCATE STD { int freebsd32_posix_fallocate(int fd,\
|
2011-10-14 11:46:46 +00:00
|
|
|
uint32_t offset1, uint32_t offset2,\
|
|
|
|
uint32_t len1, uint32_t len2); }
|
2017-03-29 22:33:56 +00:00
|
|
|
531 AUE_POSIX_FADVISE STD { int freebsd32_posix_fadvise(int fd, \
|
2011-11-04 04:02:50 +00:00
|
|
|
uint32_t offset1, uint32_t offset2,\
|
|
|
|
uint32_t len1, uint32_t len2, \
|
|
|
|
int advice); }
|
2013-05-21 11:40:16 +00:00
|
|
|
532 AUE_WAIT6 STD { int freebsd32_wait6(int idtype, \
|
|
|
|
uint32_t id1, uint32_t id2, \
|
2012-11-13 12:52:31 +00:00
|
|
|
int *status, int options, \
|
|
|
|
struct wrusage32 *wrusage, \
|
|
|
|
siginfo_t *info); }
|
2013-05-21 11:40:16 +00:00
|
|
|
#endif
|
Change the cap_rights_t type from uint64_t to a structure that we can extend
in the future in a backward compatible (API and ABI) way.
The cap_rights_t represents capability rights. We used to use one bit to
represent one right, but we are running out of spare bits. Currently the new
structure provides place for 114 rights (so 50 more than the previous
cap_rights_t), but it is possible to grow the structure to hold at least 285
rights, although we can make it even larger if 285 rights won't be enough.
The structure definition looks like this:
struct cap_rights {
uint64_t cr_rights[CAP_RIGHTS_VERSION + 2];
};
The initial CAP_RIGHTS_VERSION is 0.
The top two bits in the first element of the cr_rights[] array contain total
number of elements in the array - 2. This means if those two bits are equal to
0, we have 2 array elements.
The top two bits in all remaining array elements should be 0.
The next five bits in all array elements contain array index. Only one bit is
used and bit position in this five-bits range defines array index. This means
there can be at most five array elements in the future.
To define new right the CAPRIGHT() macro must be used. The macro takes two
arguments - an array index and a bit to set, eg.
#define CAP_PDKILL CAPRIGHT(1, 0x0000000000000800ULL)
We still support aliases that combine few rights, but the rights have to belong
to the same array element, eg:
#define CAP_LOOKUP CAPRIGHT(0, 0x0000000000000400ULL)
#define CAP_FCHMOD CAPRIGHT(0, 0x0000000000002000ULL)
#define CAP_FCHMODAT (CAP_FCHMOD | CAP_LOOKUP)
There is new API to manage the new cap_rights_t structure:
cap_rights_t *cap_rights_init(cap_rights_t *rights, ...);
void cap_rights_set(cap_rights_t *rights, ...);
void cap_rights_clear(cap_rights_t *rights, ...);
bool cap_rights_is_set(const cap_rights_t *rights, ...);
bool cap_rights_is_valid(const cap_rights_t *rights);
void cap_rights_merge(cap_rights_t *dst, const cap_rights_t *src);
void cap_rights_remove(cap_rights_t *dst, const cap_rights_t *src);
bool cap_rights_contains(const cap_rights_t *big, const cap_rights_t *little);
Capability rights to the cap_rights_init(), cap_rights_set(),
cap_rights_clear() and cap_rights_is_set() functions are provided by
separating them with commas, eg:
cap_rights_t rights;
cap_rights_init(&rights, CAP_READ, CAP_WRITE, CAP_FSTAT);
There is no need to terminate the list of rights, as those functions are
actually macros that take care of the termination, eg:
#define cap_rights_set(rights, ...) \
__cap_rights_set((rights), __VA_ARGS__, 0ULL)
void __cap_rights_set(cap_rights_t *rights, ...);
Thanks to using one bit as an array index we can assert in those functions that
there are no two rights belonging to different array elements provided
together. For example this is illegal and will be detected, because CAP_LOOKUP
belongs to element 0 and CAP_PDKILL to element 1:
cap_rights_init(&rights, CAP_LOOKUP | CAP_PDKILL);
Providing several rights that belongs to the same array's element this way is
correct, but is not advised. It should only be used for aliases definition.
This commit also breaks compatibility with some existing Capsicum system calls,
but I see no other way to do that. This should be fine as Capsicum is still
experimental and this change is not going to 9.x.
Sponsored by: The FreeBSD Foundation
2013-09-05 00:09:56 +00:00
|
|
|
533 AUE_CAP_RIGHTS_LIMIT NOPROTO { \
|
|
|
|
int cap_rights_limit(int fd, \
|
|
|
|
cap_rights_t *rightsp); }
|
2013-08-18 10:30:41 +00:00
|
|
|
534 AUE_CAP_IOCTLS_LIMIT STD { \
|
|
|
|
int freebsd32_cap_ioctls_limit(int fd, \
|
|
|
|
const uint32_t *cmds, size_t ncmds); }
|
|
|
|
535 AUE_CAP_IOCTLS_GET STD { \
|
|
|
|
ssize_t freebsd32_cap_ioctls_get(int fd, \
|
|
|
|
uint32_t *cmds, size_t maxcmds); }
|
Merge Capsicum overhaul:
- Capability is no longer separate descriptor type. Now every descriptor
has set of its own capability rights.
- The cap_new(2) system call is left, but it is no longer documented and
should not be used in new code.
- The new syscall cap_rights_limit(2) should be used instead of
cap_new(2), which limits capability rights of the given descriptor
without creating a new one.
- The cap_getrights(2) syscall is renamed to cap_rights_get(2).
- If CAP_IOCTL capability right is present we can further reduce allowed
ioctls list with the new cap_ioctls_limit(2) syscall. List of allowed
ioctls can be retrived with cap_ioctls_get(2) syscall.
- If CAP_FCNTL capability right is present we can further reduce fcntls
that can be used with the new cap_fcntls_limit(2) syscall and retrive
them with cap_fcntls_get(2).
- To support ioctl and fcntl white-listing the filedesc structure was
heavly modified.
- The audit subsystem, kdump and procstat tools were updated to
recognize new syscalls.
- Capability rights were revised and eventhough I tried hard to provide
backward API and ABI compatibility there are some incompatible changes
that are described in detail below:
CAP_CREATE old behaviour:
- Allow for openat(2)+O_CREAT.
- Allow for linkat(2).
- Allow for symlinkat(2).
CAP_CREATE new behaviour:
- Allow for openat(2)+O_CREAT.
Added CAP_LINKAT:
- Allow for linkat(2). ABI: Reuses CAP_RMDIR bit.
- Allow to be target for renameat(2).
Added CAP_SYMLINKAT:
- Allow for symlinkat(2).
Removed CAP_DELETE. Old behaviour:
- Allow for unlinkat(2) when removing non-directory object.
- Allow to be source for renameat(2).
Removed CAP_RMDIR. Old behaviour:
- Allow for unlinkat(2) when removing directory.
Added CAP_RENAMEAT:
- Required for source directory for the renameat(2) syscall.
Added CAP_UNLINKAT (effectively it replaces CAP_DELETE and CAP_RMDIR):
- Allow for unlinkat(2) on any object.
- Required if target of renameat(2) exists and will be removed by this
call.
Removed CAP_MAPEXEC.
CAP_MMAP old behaviour:
- Allow for mmap(2) with any combination of PROT_NONE, PROT_READ and
PROT_WRITE.
CAP_MMAP new behaviour:
- Allow for mmap(2)+PROT_NONE.
Added CAP_MMAP_R:
- Allow for mmap(PROT_READ).
Added CAP_MMAP_W:
- Allow for mmap(PROT_WRITE).
Added CAP_MMAP_X:
- Allow for mmap(PROT_EXEC).
Added CAP_MMAP_RW:
- Allow for mmap(PROT_READ | PROT_WRITE).
Added CAP_MMAP_RX:
- Allow for mmap(PROT_READ | PROT_EXEC).
Added CAP_MMAP_WX:
- Allow for mmap(PROT_WRITE | PROT_EXEC).
Added CAP_MMAP_RWX:
- Allow for mmap(PROT_READ | PROT_WRITE | PROT_EXEC).
Renamed CAP_MKDIR to CAP_MKDIRAT.
Renamed CAP_MKFIFO to CAP_MKFIFOAT.
Renamed CAP_MKNODE to CAP_MKNODEAT.
CAP_READ old behaviour:
- Allow pread(2).
- Disallow read(2), readv(2) (if there is no CAP_SEEK).
CAP_READ new behaviour:
- Allow read(2), readv(2).
- Disallow pread(2) (CAP_SEEK was also required).
CAP_WRITE old behaviour:
- Allow pwrite(2).
- Disallow write(2), writev(2) (if there is no CAP_SEEK).
CAP_WRITE new behaviour:
- Allow write(2), writev(2).
- Disallow pwrite(2) (CAP_SEEK was also required).
Added convinient defines:
#define CAP_PREAD (CAP_SEEK | CAP_READ)
#define CAP_PWRITE (CAP_SEEK | CAP_WRITE)
#define CAP_MMAP_R (CAP_MMAP | CAP_SEEK | CAP_READ)
#define CAP_MMAP_W (CAP_MMAP | CAP_SEEK | CAP_WRITE)
#define CAP_MMAP_X (CAP_MMAP | CAP_SEEK | 0x0000000000000008ULL)
#define CAP_MMAP_RW (CAP_MMAP_R | CAP_MMAP_W)
#define CAP_MMAP_RX (CAP_MMAP_R | CAP_MMAP_X)
#define CAP_MMAP_WX (CAP_MMAP_W | CAP_MMAP_X)
#define CAP_MMAP_RWX (CAP_MMAP_R | CAP_MMAP_W | CAP_MMAP_X)
#define CAP_RECV CAP_READ
#define CAP_SEND CAP_WRITE
#define CAP_SOCK_CLIENT \
(CAP_CONNECT | CAP_GETPEERNAME | CAP_GETSOCKNAME | CAP_GETSOCKOPT | \
CAP_PEELOFF | CAP_RECV | CAP_SEND | CAP_SETSOCKOPT | CAP_SHUTDOWN)
#define CAP_SOCK_SERVER \
(CAP_ACCEPT | CAP_BIND | CAP_GETPEERNAME | CAP_GETSOCKNAME | \
CAP_GETSOCKOPT | CAP_LISTEN | CAP_PEELOFF | CAP_RECV | CAP_SEND | \
CAP_SETSOCKOPT | CAP_SHUTDOWN)
Added defines for backward API compatibility:
#define CAP_MAPEXEC CAP_MMAP_X
#define CAP_DELETE CAP_UNLINKAT
#define CAP_MKDIR CAP_MKDIRAT
#define CAP_RMDIR CAP_UNLINKAT
#define CAP_MKFIFO CAP_MKFIFOAT
#define CAP_MKNOD CAP_MKNODAT
#define CAP_SOCK_ALL (CAP_SOCK_CLIENT | CAP_SOCK_SERVER)
Sponsored by: The FreeBSD Foundation
Reviewed by: Christoph Mallon <christoph.mallon@gmx.de>
Many aspects discussed with: rwatson, benl, jonathan
ABI compatibility discussed with: kib
2013-03-02 00:53:12 +00:00
|
|
|
536 AUE_CAP_FCNTLS_LIMIT NOPROTO { int cap_fcntls_limit(int fd, \
|
|
|
|
uint32_t fcntlrights); }
|
|
|
|
537 AUE_CAP_FCNTLS_GET NOPROTO { int cap_fcntls_get(int fd, \
|
|
|
|
uint32_t *fcntlrightsp); }
|
2013-03-02 21:11:30 +00:00
|
|
|
538 AUE_BINDAT NOPROTO { int bindat(int fd, int s, caddr_t name, \
|
|
|
|
int namelen); }
|
|
|
|
539 AUE_CONNECTAT NOPROTO { int connectat(int fd, int s, caddr_t name, \
|
|
|
|
int namelen); }
|
2013-03-21 22:59:01 +00:00
|
|
|
540 AUE_CHFLAGSAT NOPROTO { int chflagsat(int fd, const char *path, \
|
|
|
|
u_long flags, int atflag); }
|
2013-05-01 20:10:21 +00:00
|
|
|
541 AUE_ACCEPT NOPROTO { int accept4(int s, \
|
|
|
|
struct sockaddr * __restrict name, \
|
|
|
|
__socklen_t * __restrict anamelen, \
|
|
|
|
int flags); }
|
2013-05-01 22:42:42 +00:00
|
|
|
542 AUE_PIPE NOPROTO { int pipe2(int *fildes, int flags); }
|
2017-03-29 22:33:56 +00:00
|
|
|
543 AUE_AIO_MLOCK STD { int freebsd32_aio_mlock( \
|
2013-06-08 13:27:57 +00:00
|
|
|
struct aiocb32 *aiocbp); }
|
2013-09-19 18:53:42 +00:00
|
|
|
#ifdef PAD64_REQUIRED
|
2017-03-29 22:33:56 +00:00
|
|
|
544 AUE_PROCCTL STD { int freebsd32_procctl(int idtype, int pad, \
|
2013-09-19 18:53:42 +00:00
|
|
|
uint32_t id1, uint32_t id2, int com, \
|
|
|
|
void *data); }
|
|
|
|
#else
|
2017-03-29 22:33:56 +00:00
|
|
|
544 AUE_PROCCTL STD { int freebsd32_procctl(int idtype, \
|
2013-09-19 18:53:42 +00:00
|
|
|
uint32_t id1, uint32_t id2, int com, \
|
|
|
|
void *data); }
|
|
|
|
#endif
|
2014-11-13 05:26:14 +00:00
|
|
|
545 AUE_POLL STD { int freebsd32_ppoll(struct pollfd *fds, \
|
|
|
|
u_int nfds, const struct timespec32 *ts, \
|
|
|
|
const sigset_t *set); }
|
2015-01-23 21:07:08 +00:00
|
|
|
546 AUE_FUTIMES STD { int freebsd32_futimens(int fd, \
|
|
|
|
struct timespec *times); }
|
|
|
|
547 AUE_FUTIMESAT STD { int freebsd32_utimensat(int fd, \
|
|
|
|
char *path, \
|
|
|
|
struct timespec *times, int flag); }
|
2015-07-11 15:22:11 +00:00
|
|
|
548 AUE_NULL NOPROTO { int numa_getaffinity(cpuwhich_t which, \
|
|
|
|
id_t id, \
|
|
|
|
struct vm_domain_policy *policy); }
|
|
|
|
549 AUE_NULL NOPROTO { int numa_setaffinity(cpuwhich_t which, \
|
|
|
|
id_t id, \
|
|
|
|
const struct vm_domain_policy *policy); }
|
2016-08-15 19:08:51 +00:00
|
|
|
550 AUE_FSYNC NOPROTO { int fdatasync(int fd); }
|
Commit the 64-bit inode project.
Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify
struct dirent layout to add d_off, increase the size of d_fileno
to 64-bits, increase the size of d_namlen to 16-bits, and change
the required alignment. Increase struct statfs f_mntfromname[] and
f_mntonname[] array length MNAMELEN to 1024.
ABI breakage is mitigated by providing compatibility using versioned
symbols, ingenious use of the existing padding in structures, and
by employing other tricks. Unfortunately, not everything can be
fixed, especially outside the base system. For instance, third-party
APIs which pass struct stat around are broken in backward and
forward incompatible ways.
Kinfo sysctl MIBs ABI is changed in backward-compatible way, but
there is no general mechanism to handle other sysctl MIBS which
return structures where the layout has changed. It was considered
that the breakage is either in the management interfaces, where we
usually allow ABI slip, or is not important.
Struct xvnode changed layout, no compat shims are provided.
For struct xtty, dev_t tty device member was reduced to uint32_t.
It was decided that keeping ABI compat in this case is more useful
than reporting 64-bit dev_t, for the sake of pstat.
Update note: strictly follow the instructions in UPDATING. Build
and install the new kernel with COMPAT_FREEBSD11 option enabled,
then reboot, and only then install new world.
Credits: The 64-bit inode project, also known as ino64, started life
many years ago as a project by Gleb Kurtsou (gleb). Kirk McKusick
(mckusick) then picked up and updated the patch, and acted as a
flag-waver. Feedback, suggestions, and discussions were carried
by Ed Maste (emaste), John Baldwin (jhb), Jilles Tjoelker (jilles),
and Rick Macklem (rmacklem). Kris Moore (kris) performed an initial
ports investigation followed by an exp-run by Antoine Brodin (antoine).
Essential and all-embracing testing was done by Peter Holm (pho).
The heavy lifting of coordinating all these efforts and bringing the
project to completion were done by Konstantin Belousov (kib).
Sponsored by: The FreeBSD Foundation (emaste, kib)
Differential revision: https://reviews.freebsd.org/D10439
2017-05-23 09:29:05 +00:00
|
|
|
551 AUE_FSTAT STD { int freebsd32_fstat(int fd, \
|
|
|
|
struct stat32 *ub); }
|
|
|
|
552 AUE_FSTATAT STD { int freebsd32_fstatat(int fd, \
|
|
|
|
char *path, struct stat32 *buf, \
|
|
|
|
int flag); }
|
|
|
|
553 AUE_FHSTAT STD { int freebsd32_fhstat( \
|
|
|
|
const struct fhandle *u_fhp, \
|
|
|
|
struct stat32 *sb); }
|
|
|
|
554 AUE_GETDIRENTRIES STD { ssize_t freebsd32_getdirentries( \
|
|
|
|
int fd, char *buf, size_t count, \
|
|
|
|
int32_t *basep); }
|
|
|
|
555 AUE_STATFS NOPROTO { int statfs(char *path, \
|
|
|
|
struct statfs32 *buf); }
|
|
|
|
556 AUE_FSTATFS NOPROTO { int fstatfs(int fd, struct statfs32 *buf); }
|
|
|
|
557 AUE_GETFSSTAT NOPROTO { int getfsstat(struct statfs32 *buf, \
|
|
|
|
long bufsize, int mode); }
|
|
|
|
558 AUE_FHSTATFS NOPROTO { int fhstatfs(const struct fhandle *u_fhp, \
|
|
|
|
struct statfs32 *buf); }
|
|
|
|
559 AUE_MKNODAT NOPROTO { int mknodat(int fd, char *path, mode_t mode, \
|
|
|
|
dev_t dev); }
|
Add abstime kqueue(2) timers and expand struct kevent members.
This change implements NOTE_ABSTIME flag for EVFILT_TIMER, which
specifies that the data field contains absolute time to fire the
event.
To make this useful, data member of the struct kevent must be extended
to 64bit. Using the opportunity, I also added ext members. This
changes struct kevent almost to Apple struct kevent64, except I did
not changed type of ident and udata, the later would cause serious API
incompatibilities.
The type of ident was kept uintptr_t since EVFILT_AIO returns a
pointer in this field, and e.g. CHERI is sensitive to the type
(discussed with brooks, jhb).
Unlike Apple kevent64, symbol versioning allows us to claim ABI
compatibility and still name the new syscall kevent(2). Compat shims
are provided for both host native and compat32.
Requested by: bapt
Reviewed by: bapt, brooks, ngie (previous version)
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D11025
2017-06-17 00:57:26 +00:00
|
|
|
560 AUE_KEVENT STD { int freebsd32_kevent(int fd, \
|
|
|
|
const struct kevent32 *changelist, \
|
|
|
|
int nchanges, \
|
|
|
|
struct kevent32 *eventlist, \
|
|
|
|
int nevents, \
|
|
|
|
const struct timespec32 *timeout); }
|