1994-05-24 10:09:53 +00:00
|
|
|
#! /bin/sh -
|
|
|
|
# @(#)makesyscalls.sh 8.1 (Berkeley) 6/10/93
|
1999-08-28 01:08:13 +00:00
|
|
|
# $FreeBSD$
|
1994-05-24 10:09:53 +00:00
|
|
|
|
|
|
|
set -e
|
|
|
|
|
2002-07-12 06:38:34 +00:00
|
|
|
# name of compat options:
|
1994-05-24 10:09:53 +00:00
|
|
|
compat=COMPAT_43
|
2002-07-12 06:38:34 +00:00
|
|
|
compat4=COMPAT_FREEBSD4
|
2007-07-04 22:38:28 +00:00
|
|
|
compat6=COMPAT_FREEBSD6
|
2009-06-24 13:36:37 +00:00
|
|
|
compat7=COMPAT_FREEBSD7
|
2016-06-22 21:12:53 +00:00
|
|
|
compat10=COMPAT_FREEBSD10
|
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=COMPAT_FREEBSD11
|
2019-09-25 17:29:45 +00:00
|
|
|
compat12=COMPAT_FREEBSD12
|
1994-05-24 10:09:53 +00:00
|
|
|
|
|
|
|
# output files:
|
|
|
|
sysnames="syscalls.c"
|
1995-09-19 13:31:04 +00:00
|
|
|
sysproto="../sys/sysproto.h"
|
|
|
|
sysproto_h=_SYS_SYSPROTO_H_
|
1994-05-24 10:09:53 +00:00
|
|
|
syshdr="../sys/syscall.h"
|
1998-03-09 04:00:42 +00:00
|
|
|
sysmk="../sys/syscall.mk"
|
1994-05-24 10:09:53 +00:00
|
|
|
syssw="init_sysent.c"
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
syscallprefix="SYS_"
|
|
|
|
switchname="sysent"
|
|
|
|
namesname="syscallnames"
|
2006-08-03 05:29:09 +00:00
|
|
|
systrace="systrace_args.c"
|
1994-05-24 10:09:53 +00:00
|
|
|
|
|
|
|
# tmp files:
|
2006-08-15 17:09:32 +00:00
|
|
|
sysaue="sysent.aue.$$"
|
1997-12-08 09:00:47 +00:00
|
|
|
sysdcl="sysent.dcl.$$"
|
|
|
|
syscompat="sysent.compat.$$"
|
|
|
|
syscompatdcl="sysent.compatdcl.$$"
|
2002-07-12 06:38:34 +00:00
|
|
|
syscompat4="sysent.compat4.$$"
|
|
|
|
syscompat4dcl="sysent.compat4dcl.$$"
|
2007-07-04 22:38:28 +00:00
|
|
|
syscompat6="sysent.compat6.$$"
|
|
|
|
syscompat6dcl="sysent.compat6dcl.$$"
|
2009-06-24 13:36:37 +00:00
|
|
|
syscompat7="sysent.compat7.$$"
|
|
|
|
syscompat7dcl="sysent.compat7dcl.$$"
|
2016-06-22 21:12:53 +00:00
|
|
|
syscompat10="sysent.compat10.$$"
|
|
|
|
syscompat10dcl="sysent.compat10dcl.$$"
|
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
|
|
|
syscompat11="sysent.compat11.$$"
|
|
|
|
syscompat11dcl="sysent.compat11dcl.$$"
|
2019-09-25 17:29:45 +00:00
|
|
|
syscompat12="sysent.compat12.$$"
|
|
|
|
syscompat12dcl="sysent.compat12dcl.$$"
|
1997-12-08 09:00:47 +00:00
|
|
|
sysent="sysent.switch.$$"
|
|
|
|
sysinc="sysinc.switch.$$"
|
|
|
|
sysarg="sysarg.switch.$$"
|
2002-07-12 06:38:34 +00:00
|
|
|
sysprotoend="sysprotoend.$$"
|
2008-03-27 01:53:44 +00:00
|
|
|
systracetmp="systrace.$$"
|
2011-11-11 03:49:42 +00:00
|
|
|
systraceret="systraceret.$$"
|
2018-11-14 00:46:02 +00:00
|
|
|
capabilities_conf="capabilities.conf"
|
2011-03-01 13:28:27 +00:00
|
|
|
|
2019-09-25 17:29:45 +00:00
|
|
|
trap "rm $sysaue $sysdcl $syscompat $syscompatdcl $syscompat4 $syscompat4dcl $syscompat6 $syscompat6dcl $syscompat7 $syscompat7dcl $syscompat10 $syscompat10dcl $syscompat11 $syscompat11dcl $syscompat12 $syscompat12dcl $sysent $sysinc $sysarg $sysprotoend $systracetmp $systraceret" 0
|
1994-05-24 10:09:53 +00:00
|
|
|
|
2019-09-25 17:29:45 +00:00
|
|
|
touch $sysaue $sysdcl $syscompat $syscompatdcl $syscompat4 $syscompat4dcl $syscompat6 $syscompat6dcl $syscompat7 $syscompat7dcl $syscompat10 $syscompat10dcl $syscompat11 $syscompat11dcl $syscompat12 $syscompat12dcl $sysent $sysinc $sysarg $sysprotoend $systracetmp $systraceret
|
1997-03-29 11:11:18 +00:00
|
|
|
|
1994-05-24 10:09:53 +00:00
|
|
|
case $# in
|
2002-04-22 13:44:47 +00:00
|
|
|
0) echo "usage: $0 input-file <config-file>" 1>&2
|
1994-05-24 10:09:53 +00:00
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2013-10-16 17:03:46 +00:00
|
|
|
if [ -n "$2" ]; then
|
2019-05-30 20:56:23 +00:00
|
|
|
. "$2"
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
fi
|
|
|
|
|
2019-09-30 20:58:29 +00:00
|
|
|
if [ -n "$capenabled" ]; then
|
|
|
|
# do nothing
|
|
|
|
elif [ -r $capabilities_conf ]; then
|
2018-11-14 00:46:02 +00:00
|
|
|
capenabled=`egrep -v '^#|^$' $capabilities_conf`
|
|
|
|
capenabled=`echo $capenabled | sed 's/ /,/g'`
|
|
|
|
else
|
|
|
|
capenabled=""
|
|
|
|
fi
|
|
|
|
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
sed -e '
|
2018-10-22 22:13:00 +00:00
|
|
|
# FreeBSD ID, includes, comments, and blank lines
|
|
|
|
/.*\$FreeBSD/b done_joining
|
|
|
|
/^[#;]/b done_joining
|
|
|
|
/^$/b done_joining
|
|
|
|
|
|
|
|
# Join lines ending in backslash
|
|
|
|
:joining
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
/\\$/{a\
|
|
|
|
|
|
|
|
N
|
|
|
|
s/\\\n//
|
2018-10-22 22:13:00 +00:00
|
|
|
b joining
|
|
|
|
}
|
|
|
|
|
|
|
|
# OBSOL, etc lines without function signatures
|
|
|
|
/^[0-9][^{]*$/b done_joining
|
|
|
|
|
|
|
|
# Join incomplete signatures. The { must appear on the first line
|
|
|
|
# and the } must appear on the last line (modulo lines joined by
|
|
|
|
# backslashes).
|
|
|
|
/^[^}]*$/{a\
|
|
|
|
|
|
|
|
N
|
|
|
|
s/\n//
|
|
|
|
b joining
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
}
|
2018-10-22 22:13:00 +00:00
|
|
|
:done_joining
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
2,${
|
|
|
|
/^#/!s/\([{}()*,]\)/ \1 /g
|
|
|
|
}
|
|
|
|
' < $1 | awk "
|
1994-05-24 10:09:53 +00:00
|
|
|
BEGIN {
|
2006-08-15 17:09:32 +00:00
|
|
|
sysaue = \"$sysaue\"
|
1994-05-24 10:09:53 +00:00
|
|
|
sysdcl = \"$sysdcl\"
|
1995-09-19 13:31:04 +00:00
|
|
|
sysproto = \"$sysproto\"
|
2002-07-12 06:38:34 +00:00
|
|
|
sysprotoend = \"$sysprotoend\"
|
1995-09-19 13:31:04 +00:00
|
|
|
sysproto_h = \"$sysproto_h\"
|
1994-05-24 10:09:53 +00:00
|
|
|
syscompat = \"$syscompat\"
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
syscompatdcl = \"$syscompatdcl\"
|
2002-07-12 06:38:34 +00:00
|
|
|
syscompat4 = \"$syscompat4\"
|
|
|
|
syscompat4dcl = \"$syscompat4dcl\"
|
2007-07-04 22:38:28 +00:00
|
|
|
syscompat6 = \"$syscompat6\"
|
|
|
|
syscompat6dcl = \"$syscompat6dcl\"
|
2009-06-24 13:36:37 +00:00
|
|
|
syscompat7 = \"$syscompat7\"
|
|
|
|
syscompat7dcl = \"$syscompat7dcl\"
|
2016-06-22 21:12:53 +00:00
|
|
|
syscompat10 = \"$syscompat10\"
|
|
|
|
syscompat10dcl = \"$syscompat10dcl\"
|
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
|
|
|
syscompat11 = \"$syscompat11\"
|
|
|
|
syscompat11dcl = \"$syscompat11dcl\"
|
2019-09-25 17:29:45 +00:00
|
|
|
syscompat12 = \"$syscompat12\"
|
|
|
|
syscompat12dcl = \"$syscompat12dcl\"
|
1994-05-24 10:09:53 +00:00
|
|
|
sysent = \"$sysent\"
|
1998-06-09 03:32:05 +00:00
|
|
|
syssw = \"$syssw\"
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
sysinc = \"$sysinc\"
|
|
|
|
sysarg = \"$sysarg\"
|
1994-05-24 10:09:53 +00:00
|
|
|
sysnames = \"$sysnames\"
|
|
|
|
syshdr = \"$syshdr\"
|
1998-03-09 04:00:42 +00:00
|
|
|
sysmk = \"$sysmk\"
|
2006-08-03 05:29:09 +00:00
|
|
|
systrace = \"$systrace\"
|
2008-03-27 01:53:44 +00:00
|
|
|
systracetmp = \"$systracetmp\"
|
2011-11-11 03:49:42 +00:00
|
|
|
systraceret = \"$systraceret\"
|
1994-05-24 10:09:53 +00:00
|
|
|
compat = \"$compat\"
|
2002-07-12 06:38:34 +00:00
|
|
|
compat4 = \"$compat4\"
|
2007-07-04 22:38:28 +00:00
|
|
|
compat6 = \"$compat6\"
|
2009-06-24 13:36:37 +00:00
|
|
|
compat7 = \"$compat7\"
|
2016-06-22 21:12:53 +00:00
|
|
|
compat10 = \"$compat10\"
|
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 = \"$compat11\"
|
2019-09-25 17:29:45 +00:00
|
|
|
compat12 = \"$compat12\"
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
syscallprefix = \"$syscallprefix\"
|
|
|
|
switchname = \"$switchname\"
|
|
|
|
namesname = \"$namesname\"
|
1994-05-24 10:09:53 +00:00
|
|
|
infile = \"$1\"
|
2018-11-14 00:46:02 +00:00
|
|
|
abi_func_prefix = \"$abi_func_prefix\"
|
2011-03-01 13:28:27 +00:00
|
|
|
capenabled_string = \"$capenabled\"
|
1994-05-24 10:09:53 +00:00
|
|
|
"'
|
|
|
|
|
2019-05-07 16:17:33 +00:00
|
|
|
# Avoid a literal generated file tag here.
|
|
|
|
generated = "@" "generated";
|
|
|
|
|
2011-03-01 13:28:27 +00:00
|
|
|
split(capenabled_string, capenabled, ",");
|
|
|
|
|
2017-02-20 20:37:25 +00:00
|
|
|
printf "\n/* The casts are bogus but will do for now. */\n" > sysent
|
|
|
|
printf "struct sysent %s[] = {\n",switchname > sysent
|
|
|
|
|
1998-06-09 03:32:05 +00:00
|
|
|
printf "/*\n * System call switch table.\n *\n" > syssw
|
2019-05-07 16:17:33 +00:00
|
|
|
printf " * DO NOT EDIT-- this file is automatically " generated ".\n" > syssw
|
2002-01-30 10:22:05 +00:00
|
|
|
printf " * $%s$\n", "FreeBSD" > syssw
|
2017-02-10 19:25:52 +00:00
|
|
|
printf " */\n\n" > syssw
|
1995-09-19 13:31:04 +00:00
|
|
|
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
printf "/*\n * System call prototypes.\n *\n" > sysarg
|
2019-05-07 16:17:33 +00:00
|
|
|
printf " * DO NOT EDIT-- this file is automatically " generated ".\n" > sysarg
|
2002-01-30 10:22:05 +00:00
|
|
|
printf " * $%s$\n", "FreeBSD" > sysarg
|
2017-02-10 19:25:52 +00:00
|
|
|
printf " */\n\n" > sysarg
|
1998-02-03 17:39:13 +00:00
|
|
|
printf "#ifndef %s\n", sysproto_h > sysarg
|
|
|
|
printf "#define\t%s\n\n", sysproto_h > sysarg
|
2002-09-19 00:43:32 +00:00
|
|
|
printf "#include <sys/signal.h>\n" > sysarg
|
|
|
|
printf "#include <sys/acl.h>\n" > sysarg
|
2008-03-25 09:11:53 +00:00
|
|
|
printf "#include <sys/cpuset.h>\n" > sysarg
|
2018-01-12 22:48:23 +00:00
|
|
|
printf "#include <sys/domainset.h>\n" > sysarg
|
2011-11-21 01:26:10 +00:00
|
|
|
printf "#include <sys/_ffcounter.h>\n" > sysarg
|
2006-11-11 16:26:58 +00:00
|
|
|
printf "#include <sys/_semaphore.h>\n" > sysarg
|
2013-09-12 18:01:13 +00:00
|
|
|
printf "#include <sys/ucontext.h>\n" > sysarg
|
|
|
|
printf "#include <sys/wait.h>\n\n" > sysarg
|
2006-08-15 17:09:32 +00:00
|
|
|
printf "#include <bsm/audit_kevents.h>\n\n" > sysarg
|
1998-02-03 17:39:13 +00:00
|
|
|
printf "struct proc;\n\n" > sysarg
|
2001-09-12 08:38:13 +00:00
|
|
|
printf "struct thread;\n\n" > sysarg
|
1998-06-08 11:02:00 +00:00
|
|
|
printf "#define\tPAD_(t)\t(sizeof(register_t) <= sizeof(t) ? \\\n" > sysarg
|
|
|
|
printf "\t\t0 : sizeof(register_t) - sizeof(t))\n\n" > sysarg
|
2001-08-22 23:22:47 +00:00
|
|
|
printf "#if BYTE_ORDER == LITTLE_ENDIAN\n"> sysarg
|
|
|
|
printf "#define\tPADL_(t)\t0\n" > sysarg
|
|
|
|
printf "#define\tPADR_(t)\tPAD_(t)\n" > sysarg
|
|
|
|
printf "#else\n" > sysarg
|
|
|
|
printf "#define\tPADL_(t)\tPAD_(t)\n" > sysarg
|
|
|
|
printf "#define\tPADR_(t)\t0\n" > sysarg
|
|
|
|
printf "#endif\n\n" > sysarg
|
1995-09-19 13:31:04 +00:00
|
|
|
|
2017-02-20 20:37:25 +00:00
|
|
|
printf "\n#ifdef %s\n\n", compat > syscompat
|
|
|
|
printf "\n#ifdef %s\n\n", compat4 > syscompat4
|
|
|
|
printf "\n#ifdef %s\n\n", compat6 > syscompat6
|
|
|
|
printf "\n#ifdef %s\n\n", compat7 > syscompat7
|
|
|
|
printf "\n#ifdef %s\n\n", compat10 > syscompat10
|
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
|
|
|
printf "\n#ifdef %s\n\n", compat11 > syscompat11
|
2019-09-25 17:29:45 +00:00
|
|
|
printf "\n#ifdef %s\n\n", compat12 > syscompat12
|
2017-02-20 20:37:25 +00:00
|
|
|
|
|
|
|
printf "/*\n * System call names.\n *\n" > sysnames
|
2019-05-07 16:17:33 +00:00
|
|
|
printf " * DO NOT EDIT-- this file is automatically " generated ".\n" > sysnames
|
2017-02-20 20:37:25 +00:00
|
|
|
printf " * $%s$\n", "FreeBSD" > sysnames
|
|
|
|
printf " */\n\n" > sysnames
|
2002-10-29 15:47:06 +00:00
|
|
|
printf "const char *%s[] = {\n", namesname > sysnames
|
1994-05-24 10:09:53 +00:00
|
|
|
|
2017-02-20 20:37:25 +00:00
|
|
|
printf "/*\n * System call numbers.\n *\n" > syshdr
|
2019-05-07 16:17:33 +00:00
|
|
|
printf " * DO NOT EDIT-- this file is automatically " generated ".\n" > syshdr
|
2017-02-20 20:37:25 +00:00
|
|
|
printf " * $%s$\n", "FreeBSD" > syshdr
|
|
|
|
printf " */\n\n" > syshdr
|
|
|
|
|
|
|
|
printf "# FreeBSD system call object files.\n" > sysmk
|
2019-05-07 16:17:33 +00:00
|
|
|
printf "# DO NOT EDIT-- this file is automatically " generated ".\n" > sysmk
|
2017-02-20 20:37:25 +00:00
|
|
|
printf "# $%s$\n", "FreeBSD" > sysmk
|
2017-02-10 19:25:52 +00:00
|
|
|
printf "MIASM = " > sysmk
|
1998-03-09 04:00:42 +00:00
|
|
|
|
2017-02-20 20:37:25 +00:00
|
|
|
printf "/*\n * System call argument to DTrace register array converstion.\n *\n" > systrace
|
2019-05-07 16:17:33 +00:00
|
|
|
printf " * DO NOT EDIT-- this file is automatically " generated ".\n" > systrace
|
2017-02-20 20:37:25 +00:00
|
|
|
printf " * $%s$\n", "FreeBSD" > systrace
|
2006-08-03 05:29:09 +00:00
|
|
|
printf " * This file is part of the DTrace syscall provider.\n */\n\n" > systrace
|
2010-06-21 09:55:56 +00:00
|
|
|
printf "static void\nsystrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)\n{\n" > systrace
|
2006-08-03 05:29:09 +00:00
|
|
|
printf "\tint64_t *iarg = (int64_t *) uarg;\n" > systrace
|
|
|
|
printf "\tswitch (sysnum) {\n" > systrace
|
|
|
|
|
2011-11-11 03:49:42 +00:00
|
|
|
printf "static void\nsystrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)\n{\n\tconst char *p = NULL;\n" > systracetmp
|
2008-03-27 01:53:44 +00:00
|
|
|
printf "\tswitch (sysnum) {\n" > systracetmp
|
|
|
|
|
2011-11-11 03:49:42 +00:00
|
|
|
printf "static void\nsystrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)\n{\n\tconst char *p = NULL;\n" > systraceret
|
|
|
|
printf "\tswitch (sysnum) {\n" > systraceret
|
2017-02-20 20:37:25 +00:00
|
|
|
}
|
|
|
|
NR == 1 {
|
1994-05-24 10:09:53 +00:00
|
|
|
next
|
|
|
|
}
|
|
|
|
NF == 0 || $1 ~ /^;/ {
|
|
|
|
next
|
|
|
|
}
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
$1 ~ /^#[ ]*include/ {
|
|
|
|
print > sysinc
|
|
|
|
next
|
|
|
|
}
|
1994-05-24 10:09:53 +00:00
|
|
|
$1 ~ /^#[ ]*if/ {
|
|
|
|
print > sysent
|
|
|
|
print > sysdcl
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
print > sysarg
|
1994-05-24 10:09:53 +00:00
|
|
|
print > syscompat
|
2002-07-12 06:38:34 +00:00
|
|
|
print > syscompat4
|
2007-07-04 22:38:28 +00:00
|
|
|
print > syscompat6
|
2009-06-24 13:36:37 +00:00
|
|
|
print > syscompat7
|
2016-06-22 21:12:53 +00:00
|
|
|
print > syscompat10
|
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
|
|
|
print > syscompat11
|
2019-09-25 17:29:45 +00:00
|
|
|
print > syscompat12
|
1994-05-24 10:09:53 +00:00
|
|
|
print > sysnames
|
2011-03-12 08:51:43 +00:00
|
|
|
print > systrace
|
|
|
|
print > systracetmp
|
2011-11-11 03:49:42 +00:00
|
|
|
print > systraceret
|
1994-05-24 10:09:53 +00:00
|
|
|
savesyscall = syscall
|
|
|
|
next
|
|
|
|
}
|
|
|
|
$1 ~ /^#[ ]*else/ {
|
|
|
|
print > sysent
|
|
|
|
print > sysdcl
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
print > sysarg
|
1994-05-24 10:09:53 +00:00
|
|
|
print > syscompat
|
2002-07-12 06:38:34 +00:00
|
|
|
print > syscompat4
|
2007-07-04 22:38:28 +00:00
|
|
|
print > syscompat6
|
2009-06-24 13:36:37 +00:00
|
|
|
print > syscompat7
|
2016-06-22 21:12:53 +00:00
|
|
|
print > syscompat10
|
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
|
|
|
print > syscompat11
|
2019-09-25 17:29:45 +00:00
|
|
|
print > syscompat12
|
1994-05-24 10:09:53 +00:00
|
|
|
print > sysnames
|
2011-03-12 08:51:43 +00:00
|
|
|
print > systrace
|
|
|
|
print > systracetmp
|
2011-11-11 03:49:42 +00:00
|
|
|
print > systraceret
|
1994-05-24 10:09:53 +00:00
|
|
|
syscall = savesyscall
|
|
|
|
next
|
|
|
|
}
|
|
|
|
$1 ~ /^#/ {
|
|
|
|
print > sysent
|
|
|
|
print > sysdcl
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
print > sysarg
|
1994-05-24 10:09:53 +00:00
|
|
|
print > syscompat
|
2002-07-12 06:38:34 +00:00
|
|
|
print > syscompat4
|
2007-07-04 22:38:28 +00:00
|
|
|
print > syscompat6
|
2009-06-24 13:36:37 +00:00
|
|
|
print > syscompat7
|
2016-06-22 21:12:53 +00:00
|
|
|
print > syscompat10
|
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
|
|
|
print > syscompat11
|
2019-09-25 17:29:45 +00:00
|
|
|
print > syscompat12
|
1994-05-24 10:09:53 +00:00
|
|
|
print > sysnames
|
2011-03-12 08:51:43 +00:00
|
|
|
print > systrace
|
|
|
|
print > systracetmp
|
2011-11-11 03:49:42 +00:00
|
|
|
print > systraceret
|
1994-05-24 10:09:53 +00:00
|
|
|
next
|
|
|
|
}
|
2009-06-17 19:50:38 +00:00
|
|
|
# Returns true if the type "name" is the first flag in the type field
|
|
|
|
function type(name, flags, n) {
|
|
|
|
n = split($3, flags, /\|/)
|
|
|
|
return (n > 0 && flags[1] == name)
|
|
|
|
}
|
|
|
|
# Returns true if the flag "name" is set in the type field
|
|
|
|
function flag(name, flags, i, n) {
|
|
|
|
n = split($3, flags, /\|/)
|
|
|
|
for (i = 1; i <= n; i++)
|
|
|
|
if (flags[i] == name)
|
|
|
|
return 1
|
|
|
|
return 0
|
|
|
|
}
|
2018-01-30 18:29:38 +00:00
|
|
|
{
|
|
|
|
n = split($1, syscall_range, /-/)
|
|
|
|
if (n == 1) {
|
|
|
|
syscall_range[2] = syscall_range[1]
|
|
|
|
} else if (n == 2) {
|
|
|
|
if (!type("UNIMPL")) {
|
|
|
|
printf "%s: line %d: range permitted only with UNIMPL\n",
|
|
|
|
infile, NR
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
printf "%s: line %d: invalid syscall number or range %s\n",
|
|
|
|
infile, NR, $1
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
syscall != syscall_range[1] {
|
|
|
|
printf "%s: line %d: syscall number out of sync at %d\n",
|
|
|
|
infile, NR, syscall
|
|
|
|
printf "line is:\n"
|
|
|
|
print
|
|
|
|
exit 1
|
|
|
|
}
|
2000-05-09 21:18:30 +00:00
|
|
|
function align_sysent_comment(column) {
|
|
|
|
printf("\t") > sysent
|
|
|
|
column = column + 8 - column % 8
|
|
|
|
while (column < 56) {
|
|
|
|
printf("\t") > sysent
|
|
|
|
column = column + 8
|
|
|
|
}
|
|
|
|
}
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
function parserr(was, wanted) {
|
1998-06-08 11:02:00 +00:00
|
|
|
printf "%s: line %d: unexpected %s (expected %s)\n",
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
infile, NR, was, wanted
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
function parseline() {
|
2005-05-30 15:09:18 +00:00
|
|
|
f=4 # toss number, type, audit event
|
2018-11-07 16:55:04 +00:00
|
|
|
ret_inc = 0
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
argc= 0;
|
2000-05-09 21:18:30 +00:00
|
|
|
argssize = "0"
|
2010-06-28 18:06:46 +00:00
|
|
|
thr_flag = "SY_THR_STATIC"
|
|
|
|
if (flag("NOTSTATIC")) {
|
|
|
|
thr_flag = "SY_THR_ABSENT"
|
|
|
|
}
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
if ($NF != "}") {
|
|
|
|
funcalias=$(NF-2)
|
|
|
|
argalias=$(NF-1)
|
|
|
|
rettype=$NF
|
|
|
|
end=NF-3
|
|
|
|
} else {
|
|
|
|
funcalias=""
|
|
|
|
argalias=""
|
|
|
|
rettype="int"
|
2018-11-07 16:55:04 +00:00
|
|
|
if ($(f+2) == "*") {
|
|
|
|
ret_inc = 1
|
|
|
|
}
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
end=NF
|
1995-09-19 13:31:04 +00:00
|
|
|
}
|
2009-06-17 19:50:38 +00:00
|
|
|
if (flag("NODEF")) {
|
2005-05-30 15:09:18 +00:00
|
|
|
auditev="AUE_NULL"
|
2018-11-07 16:55:04 +00:00
|
|
|
funcname=$(4 + ret_inc)
|
|
|
|
argssize = "AS(" $(6 + ret_inc) ")"
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
if ($f != "{")
|
|
|
|
parserr($f, "{")
|
|
|
|
f++
|
|
|
|
if ($end != "}")
|
|
|
|
parserr($end, "}")
|
|
|
|
end--
|
|
|
|
if ($end != ";")
|
|
|
|
parserr($end, ";")
|
|
|
|
end--
|
|
|
|
if ($end != ")")
|
|
|
|
parserr($end, ")")
|
|
|
|
end--
|
|
|
|
|
2011-11-11 03:49:42 +00:00
|
|
|
syscallret=$f
|
|
|
|
f++
|
2018-11-07 16:55:04 +00:00
|
|
|
while (ret_inc > 0) {
|
|
|
|
syscallret=syscallret " " $f
|
|
|
|
f++
|
|
|
|
ret_inc--
|
|
|
|
}
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
|
|
|
|
funcname=$f
|
2011-03-01 13:28:27 +00:00
|
|
|
|
|
|
|
#
|
|
|
|
# We now know the func name, so define a flags field for it.
|
|
|
|
# Do this before any other processing as we may return early
|
|
|
|
# from it.
|
|
|
|
#
|
|
|
|
for (cap in capenabled) {
|
2018-11-14 00:46:02 +00:00
|
|
|
if (funcname == capenabled[cap] ||
|
|
|
|
funcname == abi_func_prefix capenabled[cap]) {
|
2011-03-01 13:28:27 +00:00
|
|
|
flags = "SYF_CAPENABLED";
|
2013-12-04 00:10:37 +00:00
|
|
|
break;
|
2011-03-01 13:28:27 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
if (funcalias == "")
|
|
|
|
funcalias = funcname
|
|
|
|
if (argalias == "") {
|
|
|
|
argalias = funcname "_args"
|
2009-06-17 19:50:38 +00:00
|
|
|
if (flag("COMPAT"))
|
1995-10-07 23:56:20 +00:00
|
|
|
argalias = "o" argalias
|
2009-06-17 19:50:38 +00:00
|
|
|
if (flag("COMPAT4"))
|
2002-07-12 06:38:34 +00:00
|
|
|
argalias = "freebsd4_" argalias
|
2009-06-17 19:50:38 +00:00
|
|
|
if (flag("COMPAT6"))
|
2007-07-04 22:38:28 +00:00
|
|
|
argalias = "freebsd6_" argalias
|
2009-06-24 13:36:37 +00:00
|
|
|
if (flag("COMPAT7"))
|
|
|
|
argalias = "freebsd7_" argalias
|
2016-06-22 21:12:53 +00:00
|
|
|
if (flag("COMPAT10"))
|
|
|
|
argalias = "freebsd10_" argalias
|
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
|
|
|
if (flag("COMPAT11"))
|
|
|
|
argalias = "freebsd11_" argalias
|
2019-09-25 17:29:45 +00:00
|
|
|
if (flag("COMPAT12"))
|
|
|
|
argalias = "freebsd12_" argalias
|
1995-09-19 13:31:04 +00:00
|
|
|
}
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
f++
|
|
|
|
|
|
|
|
if ($f != "(")
|
|
|
|
parserr($f, ")")
|
|
|
|
f++
|
|
|
|
|
|
|
|
if (f == end) {
|
|
|
|
if ($f != "void")
|
|
|
|
parserr($f, "argument definition")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
while (f <= end) {
|
|
|
|
argc++
|
|
|
|
argtype[argc]=""
|
|
|
|
oldf=""
|
|
|
|
while (f < end && $(f+1) != ",") {
|
|
|
|
if (argtype[argc] != "" && oldf != "*")
|
|
|
|
argtype[argc] = argtype[argc]" ";
|
|
|
|
argtype[argc] = argtype[argc]$f;
|
|
|
|
oldf = $f;
|
|
|
|
f++
|
|
|
|
}
|
|
|
|
if (argtype[argc] == "")
|
|
|
|
parserr($f, "argument definition")
|
2018-04-05 20:31:45 +00:00
|
|
|
|
|
|
|
# The parser adds space around parens.
|
|
|
|
# Remove it from annotations.
|
|
|
|
gsub(/ \( /, "(", argtype[argc]);
|
|
|
|
gsub(/ \)/, ")", argtype[argc]);
|
|
|
|
|
|
|
|
#remove annotations
|
|
|
|
gsub(/_In[^ ]*[_)] /, "", argtype[argc]);
|
|
|
|
gsub(/_Out[^ ]*[_)] /, "", argtype[argc]);
|
|
|
|
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
argname[argc]=$f;
|
|
|
|
f += 2; # skip name, and any comma
|
|
|
|
}
|
2000-05-09 21:18:30 +00:00
|
|
|
if (argc != 0)
|
|
|
|
argssize = "AS(" argalias ")"
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
}
|
2005-05-30 15:09:18 +00:00
|
|
|
{ comment = $4
|
|
|
|
if (NF < 7)
|
|
|
|
for (i = 5; i <= NF; i++)
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
comment = comment " " $i
|
|
|
|
}
|
2001-08-30 18:50:57 +00:00
|
|
|
|
2005-05-30 15:09:18 +00:00
|
|
|
#
|
|
|
|
# The AUE_ audit event identifier.
|
|
|
|
#
|
|
|
|
{
|
|
|
|
auditev = $2;
|
|
|
|
}
|
|
|
|
|
2009-06-01 16:13:06 +00:00
|
|
|
#
|
2011-03-01 13:28:27 +00:00
|
|
|
# The flags, if any.
|
2009-06-01 16:13:06 +00:00
|
|
|
#
|
|
|
|
{
|
|
|
|
flags = "0";
|
|
|
|
}
|
|
|
|
|
2009-06-17 19:50:38 +00:00
|
|
|
type("STD") || type("NODEF") || type("NOARGS") || type("NOPROTO") \
|
|
|
|
|| type("NOSTD") {
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
parseline()
|
2006-08-03 05:29:09 +00:00
|
|
|
printf("\t/* %s */\n\tcase %d: {\n", funcname, syscall) > systrace
|
2008-03-27 01:53:44 +00:00
|
|
|
printf("\t/* %s */\n\tcase %d:\n", funcname, syscall) > systracetmp
|
2011-11-11 03:49:42 +00:00
|
|
|
printf("\t/* %s */\n\tcase %d:\n", funcname, syscall) > systraceret
|
2006-08-03 05:29:09 +00:00
|
|
|
if (argc > 0) {
|
2008-03-27 01:53:44 +00:00
|
|
|
printf("\t\tswitch(ndx) {\n") > systracetmp
|
2006-08-03 05:29:09 +00:00
|
|
|
printf("\t\tstruct %s *p = params;\n", argalias) > systrace
|
|
|
|
for (i = 1; i <= argc; i++) {
|
2013-09-21 23:05:44 +00:00
|
|
|
arg = argtype[i]
|
|
|
|
sub("__restrict$", "", arg)
|
2016-09-22 04:49:31 +00:00
|
|
|
if (index(arg, "*") > 0)
|
|
|
|
printf("\t\tcase %d:\n\t\t\tp = \"userland %s\";\n\t\t\tbreak;\n", i - 1, arg) > systracetmp
|
|
|
|
else
|
|
|
|
printf("\t\tcase %d:\n\t\t\tp = \"%s\";\n\t\t\tbreak;\n", i - 1, arg) > systracetmp
|
2013-09-21 23:05:44 +00:00
|
|
|
if (index(arg, "*") > 0 || arg == "caddr_t")
|
2006-08-03 05:29:09 +00:00
|
|
|
printf("\t\tuarg[%d] = (intptr_t) p->%s; /* %s */\n", \
|
|
|
|
i - 1, \
|
2013-09-21 23:05:44 +00:00
|
|
|
argname[i], arg) > systrace
|
2015-10-22 21:28:20 +00:00
|
|
|
else if (arg == "union l_semun")
|
|
|
|
printf("\t\tuarg[%d] = p->%s.buf; /* %s */\n", \
|
|
|
|
i - 1, \
|
|
|
|
argname[i], arg) > systrace
|
2013-09-21 23:05:44 +00:00
|
|
|
else if (substr(arg, 1, 1) == "u" || arg == "size_t")
|
2006-08-03 05:29:09 +00:00
|
|
|
printf("\t\tuarg[%d] = p->%s; /* %s */\n", \
|
|
|
|
i - 1, \
|
2013-09-21 23:05:44 +00:00
|
|
|
argname[i], arg) > systrace
|
2006-08-03 05:29:09 +00:00
|
|
|
else
|
|
|
|
printf("\t\tiarg[%d] = p->%s; /* %s */\n", \
|
|
|
|
i - 1, \
|
2013-09-21 23:05:44 +00:00
|
|
|
argname[i], arg) > systrace
|
2006-08-03 05:29:09 +00:00
|
|
|
}
|
2008-03-27 01:53:44 +00:00
|
|
|
printf("\t\tdefault:\n\t\t\tbreak;\n\t\t};\n") > systracetmp
|
2011-11-11 03:49:42 +00:00
|
|
|
|
|
|
|
printf("\t\tif (ndx == 0 || ndx == 1)\n") > systraceret
|
|
|
|
printf("\t\t\tp = \"%s\";\n", syscallret) > systraceret
|
|
|
|
printf("\t\tbreak;\n") > systraceret
|
2006-08-03 05:29:09 +00:00
|
|
|
}
|
|
|
|
printf("\t\t*n_args = %d;\n\t\tbreak;\n\t}\n", argc) > systrace
|
2008-03-27 01:53:44 +00:00
|
|
|
printf("\t\tbreak;\n") > systracetmp
|
2019-08-22 10:21:07 +00:00
|
|
|
if (!flag("NOARGS") && !flag("NOPROTO") && !flag("NODEF")) {
|
|
|
|
if (argc != 0) {
|
|
|
|
printf("struct %s {\n", argalias) > sysarg
|
|
|
|
for (i = 1; i <= argc; i++)
|
|
|
|
printf("\tchar %s_l_[PADL_(%s)]; " \
|
|
|
|
"%s %s; char %s_r_[PADR_(%s)];\n",
|
|
|
|
argname[i], argtype[i],
|
|
|
|
argtype[i], argname[i],
|
|
|
|
argname[i], argtype[i]) > sysarg
|
|
|
|
printf("};\n") > sysarg
|
|
|
|
} else
|
|
|
|
printf("struct %s {\n\tregister_t dummy;\n};\n",
|
|
|
|
argalias) > sysarg
|
1995-10-07 23:56:20 +00:00
|
|
|
}
|
2009-06-17 19:50:38 +00:00
|
|
|
if (!flag("NOPROTO") && !flag("NODEF")) {
|
2011-09-16 13:58:51 +00:00
|
|
|
if (funcname == "nosys" || funcname == "lkmnosys" ||
|
|
|
|
funcname == "sysarch" || funcname ~ /^freebsd/ ||
|
2019-01-31 23:01:12 +00:00
|
|
|
funcname ~ /^linux/ || funcname ~ /^cloudabi/) {
|
2011-09-16 13:58:51 +00:00
|
|
|
printf("%s\t%s(struct thread *, struct %s *)",
|
|
|
|
rettype, funcname, argalias) > sysdcl
|
|
|
|
} else {
|
|
|
|
printf("%s\tsys_%s(struct thread *, struct %s *)",
|
|
|
|
rettype, funcname, argalias) > sysdcl
|
|
|
|
}
|
1996-09-13 09:20:15 +00:00
|
|
|
printf(";\n") > sysdcl
|
2006-08-15 17:09:32 +00:00
|
|
|
printf("#define\t%sAUE_%s\t%s\n", syscallprefix,
|
|
|
|
funcalias, auditev) > sysaue
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
}
|
2006-07-28 19:05:28 +00:00
|
|
|
printf("\t{ %s, (sy_call_t *)", argssize) > sysent
|
|
|
|
column = 8 + 2 + length(argssize) + 15
|
2009-06-17 19:50:38 +00:00
|
|
|
if (flag("NOSTD")) {
|
2013-12-15 23:19:42 +00:00
|
|
|
printf("lkmressys, AUE_NULL, NULL, 0, 0, %s, SY_THR_ABSENT },", flags) > sysent
|
2009-06-01 16:13:06 +00:00
|
|
|
column = column + length("lkmressys") + length("AUE_NULL") + 3
|
2000-12-01 07:40:20 +00:00
|
|
|
} else {
|
2011-09-16 13:58:51 +00:00
|
|
|
if (funcname == "nosys" || funcname == "sysarch" ||
|
|
|
|
funcname == "lkmnosys" || funcname ~ /^freebsd/ ||
|
2019-01-31 23:01:12 +00:00
|
|
|
funcname ~ /^linux/ || funcname ~ /^cloudabi/) {
|
2011-09-16 13:58:51 +00:00
|
|
|
printf("%s, %s, NULL, 0, 0, %s, %s },", funcname, auditev, flags, thr_flag) > sysent
|
|
|
|
column = column + length(funcname) + length(auditev) + length(flags) + 3
|
|
|
|
} else {
|
|
|
|
printf("sys_%s, %s, NULL, 0, 0, %s, %s },", funcname, auditev, flags, thr_flag) > sysent
|
|
|
|
column = column + length(funcname) + length(auditev) + length(flags) + 3 + 4
|
|
|
|
}
|
2000-12-01 07:40:20 +00:00
|
|
|
}
|
2000-05-09 21:18:30 +00:00
|
|
|
align_sysent_comment(column)
|
2000-04-03 06:36:14 +00:00
|
|
|
printf("/* %d = %s */\n", syscall, funcalias) > sysent
|
1998-06-08 11:02:00 +00:00
|
|
|
printf("\t\"%s\",\t\t\t/* %d = %s */\n",
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
funcalias, syscall, funcalias) > sysnames
|
2009-06-17 19:50:38 +00:00
|
|
|
if (!flag("NODEF")) {
|
1998-06-08 11:02:00 +00:00
|
|
|
printf("#define\t%s%s\t%d\n", syscallprefix,
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
funcalias, syscall) > syshdr
|
1998-03-09 04:00:42 +00:00
|
|
|
printf(" \\\n\t%s.o", funcalias) > sysmk
|
|
|
|
}
|
1994-05-24 10:09:53 +00:00
|
|
|
syscall++
|
|
|
|
next
|
|
|
|
}
|
2009-06-24 13:36:37 +00:00
|
|
|
type("COMPAT") || type("COMPAT4") || type("COMPAT6") || \
|
2019-09-25 17:29:45 +00:00
|
|
|
type("COMPAT7") || type("COMPAT10") || type("COMPAT11") || \
|
|
|
|
type("COMPAT12") {
|
2009-06-17 19:50:38 +00:00
|
|
|
if (flag("COMPAT")) {
|
2002-07-12 06:38:34 +00:00
|
|
|
ncompat++
|
|
|
|
out = syscompat
|
|
|
|
outdcl = syscompatdcl
|
|
|
|
wrap = "compat"
|
|
|
|
prefix = "o"
|
2009-06-17 19:50:38 +00:00
|
|
|
descr = "old"
|
|
|
|
} else if (flag("COMPAT4")) {
|
2002-07-12 06:38:34 +00:00
|
|
|
ncompat4++
|
|
|
|
out = syscompat4
|
|
|
|
outdcl = syscompat4dcl
|
|
|
|
wrap = "compat4"
|
|
|
|
prefix = "freebsd4_"
|
2009-06-17 19:50:38 +00:00
|
|
|
descr = "freebsd4"
|
|
|
|
} else if (flag("COMPAT6")) {
|
2007-07-04 22:38:28 +00:00
|
|
|
ncompat6++
|
|
|
|
out = syscompat6
|
|
|
|
outdcl = syscompat6dcl
|
|
|
|
wrap = "compat6"
|
|
|
|
prefix = "freebsd6_"
|
2009-06-17 19:50:38 +00:00
|
|
|
descr = "freebsd6"
|
2009-06-24 13:36:37 +00:00
|
|
|
} else if (flag("COMPAT7")) {
|
|
|
|
ncompat7++
|
|
|
|
out = syscompat7
|
|
|
|
outdcl = syscompat7dcl
|
|
|
|
wrap = "compat7"
|
|
|
|
prefix = "freebsd7_"
|
|
|
|
descr = "freebsd7"
|
2016-06-22 21:12:53 +00:00
|
|
|
} else if (flag("COMPAT10")) {
|
|
|
|
ncompat10++
|
|
|
|
out = syscompat10
|
|
|
|
outdcl = syscompat10dcl
|
|
|
|
wrap = "compat10"
|
|
|
|
prefix = "freebsd10_"
|
|
|
|
descr = "freebsd10"
|
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
|
|
|
} else if (flag("COMPAT11")) {
|
|
|
|
ncompat11++
|
|
|
|
out = syscompat11
|
|
|
|
outdcl = syscompat11dcl
|
|
|
|
wrap = "compat11"
|
|
|
|
prefix = "freebsd11_"
|
|
|
|
descr = "freebsd11"
|
2019-09-25 17:29:45 +00:00
|
|
|
} else if (flag("COMPAT12")) {
|
|
|
|
ncompat12++
|
|
|
|
out = syscompat12
|
|
|
|
outdcl = syscompat12dcl
|
|
|
|
wrap = "compat12"
|
|
|
|
prefix = "freebsd12_"
|
|
|
|
descr = "freebsd12"
|
2002-07-12 06:38:34 +00:00
|
|
|
}
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
parseline()
|
2009-06-17 19:50:38 +00:00
|
|
|
if (argc != 0 && !flag("NOARGS") && !flag("NOPROTO") && \
|
|
|
|
!flag("NODEF")) {
|
2002-07-12 06:38:34 +00:00
|
|
|
printf("struct %s {\n", argalias) > out
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
for (i = 1; i <= argc; i++)
|
2001-08-22 23:22:47 +00:00
|
|
|
printf("\tchar %s_l_[PADL_(%s)]; %s %s; " \
|
|
|
|
"char %s_r_[PADR_(%s)];\n",
|
|
|
|
argname[i], argtype[i],
|
1998-06-07 17:13:14 +00:00
|
|
|
argtype[i], argname[i],
|
2002-07-12 06:38:34 +00:00
|
|
|
argname[i], argtype[i]) > out
|
|
|
|
printf("};\n") > out
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
}
|
2009-06-17 19:50:38 +00:00
|
|
|
else if (!flag("NOARGS") && !flag("NOPROTO") && !flag("NODEF"))
|
2001-09-05 01:27:53 +00:00
|
|
|
printf("struct %s {\n\tregister_t dummy;\n};\n",
|
1998-06-08 11:02:00 +00:00
|
|
|
argalias) > sysarg
|
2009-06-17 19:50:38 +00:00
|
|
|
if (!flag("NOPROTO") && !flag("NODEF")) {
|
|
|
|
printf("%s\t%s%s(struct thread *, struct %s *);\n",
|
|
|
|
rettype, prefix, funcname, argalias) > outdcl
|
2009-06-22 20:14:10 +00:00
|
|
|
printf("#define\t%sAUE_%s%s\t%s\n", syscallprefix,
|
|
|
|
prefix, funcname, auditev) > sysaue
|
2009-06-17 19:50:38 +00:00
|
|
|
}
|
|
|
|
if (flag("NOSTD")) {
|
2010-06-28 18:06:46 +00:00
|
|
|
printf("\t{ %s, (sy_call_t *)%s, %s, NULL, 0, 0, 0, SY_THR_ABSENT },",
|
2009-06-17 19:50:38 +00:00
|
|
|
"0", "lkmressys", "AUE_NULL") > sysent
|
|
|
|
align_sysent_comment(8 + 2 + length("0") + 15 + \
|
|
|
|
length("lkmressys") + length("AUE_NULL") + 3)
|
|
|
|
} else {
|
2010-06-28 18:06:46 +00:00
|
|
|
printf("\t{ %s(%s,%s), %s, NULL, 0, 0, %s, %s },",
|
|
|
|
wrap, argssize, funcname, auditev, flags, thr_flag) > sysent
|
2009-06-17 19:50:38 +00:00
|
|
|
align_sysent_comment(8 + 9 + length(argssize) + 1 + \
|
|
|
|
length(funcname) + length(auditev) + \
|
|
|
|
length(flags) + 4)
|
|
|
|
}
|
|
|
|
printf("/* %d = %s %s */\n", syscall, descr, funcalias) > sysent
|
|
|
|
printf("\t\"%s.%s\",\t\t/* %d = %s %s */\n",
|
|
|
|
wrap, funcalias, syscall, descr, funcalias) > sysnames
|
2016-08-04 19:14:18 +00:00
|
|
|
# Do not provide freebsdN_* symbols in libc for < FreeBSD 7
|
|
|
|
if (flag("COMPAT") || flag("COMPAT4") || flag("COMPAT6")) {
|
2016-03-12 22:53:46 +00:00
|
|
|
printf("\t\t\t\t/* %d is %s %s */\n",
|
|
|
|
syscall, descr, funcalias) > syshdr
|
2009-06-17 19:50:38 +00:00
|
|
|
} else if (!flag("NODEF")) {
|
2007-07-04 22:38:28 +00:00
|
|
|
printf("#define\t%s%s%s\t%d\n", syscallprefix,
|
|
|
|
prefix, funcalias, syscall) > syshdr
|
|
|
|
printf(" \\\n\t%s%s.o", prefix, funcalias) > sysmk
|
|
|
|
}
|
1994-05-24 10:09:53 +00:00
|
|
|
syscall++
|
|
|
|
next
|
|
|
|
}
|
2009-06-17 19:50:38 +00:00
|
|
|
type("OBSOL") {
|
2010-06-28 18:06:46 +00:00
|
|
|
printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },") > sysent
|
2000-05-09 21:18:30 +00:00
|
|
|
align_sysent_comment(34)
|
|
|
|
printf("/* %d = obsolete %s */\n", syscall, comment) > sysent
|
1998-06-08 11:02:00 +00:00
|
|
|
printf("\t\"obs_%s\",\t\t\t/* %d = obsolete %s */\n",
|
2005-05-30 15:09:18 +00:00
|
|
|
$4, syscall, comment) > sysnames
|
1998-06-08 11:02:00 +00:00
|
|
|
printf("\t\t\t\t/* %d is obsolete %s */\n",
|
1994-05-24 10:09:53 +00:00
|
|
|
syscall, comment) > syshdr
|
|
|
|
syscall++
|
|
|
|
next
|
|
|
|
}
|
2009-06-17 19:50:38 +00:00
|
|
|
type("UNIMPL") {
|
2018-01-30 18:29:38 +00:00
|
|
|
while (syscall <= syscall_range[2]) {
|
|
|
|
printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },\t\t\t/* %d = %s */\n",
|
|
|
|
syscall, comment) > sysent
|
|
|
|
printf("\t\"#%d\",\t\t\t/* %d = %s */\n",
|
|
|
|
syscall, syscall, comment) > sysnames
|
|
|
|
syscall++
|
|
|
|
}
|
1994-05-24 10:09:53 +00:00
|
|
|
next
|
|
|
|
}
|
|
|
|
{
|
2005-05-30 15:09:18 +00:00
|
|
|
printf "%s: line %d: unrecognized keyword %s\n", infile, NR, $3
|
1994-05-24 10:09:53 +00:00
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
END {
|
2000-05-09 21:18:30 +00:00
|
|
|
printf "\n#define AS(name) (sizeof(struct name) / sizeof(register_t))\n" > sysinc
|
2002-07-12 06:38:34 +00:00
|
|
|
|
|
|
|
if (ncompat != 0) {
|
1998-06-09 03:32:05 +00:00
|
|
|
printf "\n#ifdef %s\n", compat > sysinc
|
|
|
|
printf "#define compat(n, name) n, (sy_call_t *)__CONCAT(o,name)\n" > sysinc
|
|
|
|
printf "#else\n" > sysinc
|
|
|
|
printf "#define compat(n, name) 0, (sy_call_t *)nosys\n" > sysinc
|
|
|
|
printf "#endif\n" > sysinc
|
|
|
|
}
|
|
|
|
|
2002-07-12 06:38:34 +00:00
|
|
|
if (ncompat4 != 0) {
|
|
|
|
printf "\n#ifdef %s\n", compat4 > sysinc
|
|
|
|
printf "#define compat4(n, name) n, (sy_call_t *)__CONCAT(freebsd4_,name)\n" > sysinc
|
|
|
|
printf "#else\n" > sysinc
|
|
|
|
printf "#define compat4(n, name) 0, (sy_call_t *)nosys\n" > sysinc
|
|
|
|
printf "#endif\n" > sysinc
|
|
|
|
}
|
|
|
|
|
2007-07-04 22:38:28 +00:00
|
|
|
if (ncompat6 != 0) {
|
|
|
|
printf "\n#ifdef %s\n", compat6 > sysinc
|
|
|
|
printf "#define compat6(n, name) n, (sy_call_t *)__CONCAT(freebsd6_,name)\n" > sysinc
|
|
|
|
printf "#else\n" > sysinc
|
|
|
|
printf "#define compat6(n, name) 0, (sy_call_t *)nosys\n" > sysinc
|
|
|
|
printf "#endif\n" > sysinc
|
|
|
|
}
|
2002-07-12 06:38:34 +00:00
|
|
|
|
2009-06-24 13:36:37 +00:00
|
|
|
if (ncompat7 != 0) {
|
|
|
|
printf "\n#ifdef %s\n", compat7 > sysinc
|
|
|
|
printf "#define compat7(n, name) n, (sy_call_t *)__CONCAT(freebsd7_,name)\n" > sysinc
|
|
|
|
printf "#else\n" > sysinc
|
|
|
|
printf "#define compat7(n, name) 0, (sy_call_t *)nosys\n" > sysinc
|
|
|
|
printf "#endif\n" > sysinc
|
|
|
|
}
|
2016-06-22 21:12:53 +00:00
|
|
|
if (ncompat10 != 0) {
|
|
|
|
printf "\n#ifdef %s\n", compat10 > sysinc
|
|
|
|
printf "#define compat10(n, name) n, (sy_call_t *)__CONCAT(freebsd10_,name)\n" > sysinc
|
|
|
|
printf "#else\n" > sysinc
|
|
|
|
printf "#define compat10(n, name) 0, (sy_call_t *)nosys\n" > sysinc
|
|
|
|
printf "#endif\n" > sysinc
|
|
|
|
}
|
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
|
|
|
if (ncompat11 != 0) {
|
|
|
|
printf "\n#ifdef %s\n", compat11 > sysinc
|
|
|
|
printf "#define compat11(n, name) n, (sy_call_t *)__CONCAT(freebsd11_,name)\n" > sysinc
|
|
|
|
printf "#else\n" > sysinc
|
|
|
|
printf "#define compat11(n, name) 0, (sy_call_t *)nosys\n" > sysinc
|
|
|
|
printf "#endif\n" > sysinc
|
|
|
|
}
|
2019-09-25 17:29:45 +00:00
|
|
|
if (ncompat12 != 0) {
|
|
|
|
printf "\n#ifdef %s\n", compat12 > sysinc
|
|
|
|
printf "#define compat12(n, name) n, (sy_call_t *)__CONCAT(freebsd12_,name)\n" > sysinc
|
|
|
|
printf "#else\n" > sysinc
|
|
|
|
printf "#define compat12(n, name) 0, (sy_call_t *)nosys\n" > sysinc
|
|
|
|
printf "#endif\n" > sysinc
|
|
|
|
}
|
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
|
|
|
|
2007-07-04 22:38:28 +00:00
|
|
|
printf("\n#endif /* %s */\n\n", compat) > syscompatdcl
|
2002-07-12 06:38:34 +00:00
|
|
|
printf("\n#endif /* %s */\n\n", compat4) > syscompat4dcl
|
2007-07-04 22:38:28 +00:00
|
|
|
printf("\n#endif /* %s */\n\n", compat6) > syscompat6dcl
|
2009-06-24 13:36:37 +00:00
|
|
|
printf("\n#endif /* %s */\n\n", compat7) > syscompat7dcl
|
2016-06-22 21:12:53 +00:00
|
|
|
printf("\n#endif /* %s */\n\n", compat10) > syscompat10dcl
|
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
|
|
|
printf("\n#endif /* %s */\n\n", compat11) > syscompat11dcl
|
2019-09-25 17:29:45 +00:00
|
|
|
printf("\n#endif /* %s */\n\n", compat12) > syscompat12dcl
|
2002-07-12 06:38:34 +00:00
|
|
|
|
2006-08-15 17:09:32 +00:00
|
|
|
printf("\n#undef PAD_\n") > sysprotoend
|
2002-07-12 06:38:34 +00:00
|
|
|
printf("#undef PADL_\n") > sysprotoend
|
|
|
|
printf("#undef PADR_\n") > sysprotoend
|
|
|
|
printf("\n#endif /* !%s */\n", sysproto_h) > sysprotoend
|
1994-05-24 10:09:53 +00:00
|
|
|
|
1998-06-28 10:01:52 +00:00
|
|
|
printf("\n") > sysmk
|
Mega-commit for Linux emulator update.. This has been stress tested under
netscape-2.0 for Linux running all the Java stuff. The scrollbars are now
working, at least on my machine. (whew! :-)
I'm uncomfortable with the size of this commit, but it's too
inter-dependant to easily seperate out.
The main changes:
COMPAT_LINUX is *GONE*. Most of the code has been moved out of the i386
machine dependent section into the linux emulator itself. The int 0x80
syscall code was almost identical to the lcall 7,0 code and a minor tweak
allows them to both be used with the same C code. All kernels can now
just modload the lkm and it'll DTRT without having to rebuild the kernel
first. Like IBCS2, you can statically compile it in with "options LINUX".
A pile of new syscalls implemented, including getdents(), llseek(),
readv(), writev(), msync(), personality(). The Linux-ELF libraries want
to use some of these.
linux_select() now obeys Linux semantics, ie: returns the time remaining
of the timeout value rather than leaving it the original value.
Quite a few bugs removed, including incorrect arguments being used in
syscalls.. eg: mixups between passing the sigset as an int, vs passing
it as a pointer and doing a copyin(), missing return values, unhandled
cases, SIOC* ioctls, etc.
The build for the code has changed. i386/conf/files now knows how
to build linux_genassym and generate linux_assym.h on the fly.
Supporting changes elsewhere in the kernel:
The user-mode signal trampoline has moved from the U area to immediately
below the top of the stack (below PS_STRINGS). This allows the different
binary emulations to have their own signal trampoline code (which gets rid
of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so
that the emulator can provide the exact "struct sigcontext *" argument to
the program's signal handlers.
The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which
have the same values as the re-used SA_DISABLE and SA_ONSTACK which are
intended for sigaction only. This enables the support of a SA_RESETHAND
flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal
semantics where the signal handler is reset when it's triggered.
makesyscalls.sh no longer appends the struct sysentvec on the end of the
generated init_sysent.c code. It's a lot saner to have it in a seperate
file rather than trying to update the structure inside the awk script. :-)
At exec time, the dozen bytes or so of signal trampoline code are copied
to the top of the user's stack, rather than obtaining the trampoline code
the old way by getting a clone of the parent's user area. This allows
Linux and native binaries to freely exec each other without getting
trampolines mixed up.
1996-03-02 19:38:20 +00:00
|
|
|
printf("};\n") > sysent
|
1994-05-24 10:09:53 +00:00
|
|
|
printf("};\n") > sysnames
|
Add new functionality to makesyscalls.sh:
o optional config-file to set vars: sysnames, sysproto, sysproto_h,
syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
o change syntax of syscalls.master entry:
remove argument count.
add pseudo-prototype field defining function name and arguments.
o generates correct structure definitions for all system calls
in sys/sysproto.h
o add type NOARGS: same as STD except do not create structure in
sys/sysproto.h
o add type NOPROTO: same as STD except do not create structure or function
prototype in sys/sysproto.h
New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.
Update syscalls.master to reflect new changes. For example, read()
entry now looks like:
3 STD POSIX { int ibcs2_read(int fd, char *buf, u_int nbytes); }
This is similar to how NetBSD generates these files.
1995-10-07 06:24:08 +00:00
|
|
|
printf("#define\t%sMAXSYSCALL\t%d\n", syscallprefix, syscall) \
|
1998-06-08 11:02:00 +00:00
|
|
|
> syshdr
|
2006-08-03 05:29:09 +00:00
|
|
|
printf "\tdefault:\n\t\t*n_args = 0;\n\t\tbreak;\n\t};\n}\n" > systrace
|
2008-03-27 01:53:44 +00:00
|
|
|
printf "\tdefault:\n\t\tbreak;\n\t};\n\tif (p != NULL)\n\t\tstrlcpy(desc, p, descsz);\n}\n" > systracetmp
|
2011-11-11 03:49:42 +00:00
|
|
|
printf "\tdefault:\n\t\tbreak;\n\t};\n\tif (p != NULL)\n\t\tstrlcpy(desc, p, descsz);\n}\n" > systraceret
|
1994-05-24 10:09:53 +00:00
|
|
|
} '
|
|
|
|
|
1998-06-09 03:32:05 +00:00
|
|
|
cat $sysinc $sysent >> $syssw
|
2002-07-12 06:38:34 +00:00
|
|
|
cat $sysarg $sysdcl \
|
|
|
|
$syscompat $syscompatdcl \
|
|
|
|
$syscompat4 $syscompat4dcl \
|
2007-07-04 22:38:28 +00:00
|
|
|
$syscompat6 $syscompat6dcl \
|
2009-06-24 13:36:37 +00:00
|
|
|
$syscompat7 $syscompat7dcl \
|
2016-06-22 21:12:53 +00:00
|
|
|
$syscompat10 $syscompat10dcl \
|
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
|
|
|
$syscompat11 $syscompat11dcl \
|
2019-09-25 17:29:45 +00:00
|
|
|
$syscompat12 $syscompat12dcl \
|
2006-08-15 17:09:32 +00:00
|
|
|
$sysaue $sysprotoend > $sysproto
|
2008-03-27 01:53:44 +00:00
|
|
|
cat $systracetmp >> $systrace
|
2011-11-11 03:49:42 +00:00
|
|
|
cat $systraceret >> $systrace
|
2002-07-12 06:38:34 +00:00
|
|
|
|