Home | History | Annotate | only in /src/sys/rump
History log of /src/sys/rump
RevisionDateAuthorComments
 1.7 09-Nov-2014  pooka Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.6 10-Jun-2010  pooka branches: 1.6.18;
Add infrastructure for kern compnents. This is meant for those
components which are too bloaty to be included in rumpkern (where
bloaty means "can be easily left out without anyone missing"), but
generally do not require the support of the dev/fs/net factions to
function. As the first one, add ksems. librumpcrypto will migrate
here too once I get my timeslice to deal with the setlists, as most
likely will tty support.
 1.5 04-Sep-2009  pooka branches: 1.5.2; 1.5.4;
build & install librumpdev_netsmb and librumpfs_smbfs components
 1.4 17-Nov-2008  pooka No need to .WAIT anymore: headers are done in a separate pass and
binaries are no longer in this subtree.
 1.3 17-Nov-2008  pooka Descend into include/rump and install headers.
 1.2 16-Oct-2008  pooka branches: 1.2.2;
* descend into rump/net
* descend into fs/lib/libnfs
 1.1 05-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.30; 1.1.34; 1.1.40; 1.1.42;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.42.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.42.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:01 +0000
 1.1.40.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.40.1 19-Oct-2008  haad Sync with HEAD.
 1.1.34.3 11-Aug-2010  yamt sync with head.
 1.1.34.2 16-Sep-2009  yamt sync with head
 1.1.34.1 04-May-2009  yamt sync with head.
 1.1.30.1 17-Jan-2009  mjf Sync with HEAD.
 1.1.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.1.14.1 05-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:12 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 05-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:44:25 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 05-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:08 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 05-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:06 +0000
 1.2.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.5.4.1 03-Jul-2010  rmind sync with head
 1.5.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.6.18.1 03-Dec-2017  jdolecek update from HEAD
 1.138 20-May-2024  christos Handle versions > 100
 1.137 19-May-2024  christos version dup3
 1.136 04-Feb-2024  andvar fix tripple/quadruple "r" letter typos in comments and log messages.
 1.135 28-Jul-2023  christos Add epoll(2) from Theodore Preduta as part of GSoC 2023
 1.134 03-May-2022  hannken Make option VNODE_LOCKDEBUG more functional.

- Add "LOCKED=EXCL" option for vnode operations needing exclusive locked nodes.

- As it is impossible to check for shared locks held by current thread avoid
false assertions by testing for exclusive lock only in the "LOCKED=NO" case.

- New option "RUMP_VNODE_LOCKDEBUG" enables VNODE_LOCKDEBUG for the rump kernel.
 1.133 07-Jul-2021  martin Allow to set sanitizer flags for the rump build from the
build.sh command line, like: -V RUMP_SANITIZE=address
 1.132 25-Apr-2021  christos branches: 1.132.2;
use MACHINE_MIPS64
 1.131 13-Apr-2021  christos Pass -isystem and -imacro ccp flags to lint
 1.130 14-Mar-2021  rin branches: 1.130.2;
Build rump for PPC_OEA64 on evbppc64.
 1.129 12-Jun-2020  roy branches: 1.129.2;
Remove in-kernel handling of Router Advertisements

This is much better handled by a user-land tool.
Proposed on tech-net here:
https://mail-index.netbsd.org/tech-net/2020/04/22/msg007766.html

Note that the ioctl SIOCGIFINFO_IN6 no longer sets flags. That now
needs to be done using the pre-existing SIOCSIFINFO_FLAGS ioctl.

Compat is fully provided where it makes sense, but trying to turn on
RA handling will obviously throw an error as it no longer exists.

Note that if you use IPv6 temporary addresses, this now needs to be
turned on in dhcpcd.conf(5) rather than in sysctl.conf(5).
 1.128 29-May-2020  kamil Set -fno-delete-null-pointer-checks for RUMP/MKSANITIZER with Clang

NULL + 0 arithmetic raises LLVM UBSan warnings, specially in sys/pslist.h
in the type-safe macros _PSLIST_VALIDATE_PTRS and _PSLIST_VALIDATE_CONTAINER.

Proposes on <tech-userlevel> without objections.
 1.127 09-Mar-2020  kamil Revert previous

Requested by <riastradh>
 1.126 09-Mar-2020  kamil Build RUMP with -fno-delete-null-pointer-checks on all compilers

no-delete-null-pointer-checks is required in Clang/LLVM at least for
NULL + 0 operations that trigger LLVM UBSan and could be miscompiled.
 1.125 20-Feb-2020  joerg The global offset table is spelled .TOC. on PPC64, so preserve that symbol.
 1.124 03-Mar-2018  christos branches: 1.124.4; 1.124.10;
Disable NULL pointer check deletion like we do for the kernel in
src/sys/conf/Makefile.kern.inc. This is the same code we are compiling after
all and it has the same issues.
 1.123 18-Jan-2018  mrg implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.
 1.122 08-Oct-2017  joerg Honor REPROFLAGS for rump components.
 1.121 09-Jul-2016  matt Pass down ${CPUFLAGS}
 1.120 15-Nov-2015  pooka describe => rumpdescribe
 1.119 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.118 24-Aug-2015  pooka Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h
 1.117 24-Aug-2015  pooka remove librump/rumpnet/opt, consolidate in rump/include/opt
 1.116 24-Aug-2015  pooka Remove unnecessary DPSRCS+=

-imacros automatically results in a dependency.
 1.115 24-Aug-2015  pooka Use BUILDRUMP_IMACROS if specified.
 1.114 21-Aug-2015  pooka Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)
 1.113 03-Jun-2015  pooka Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.
 1.112 03-Jun-2015  pooka Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.
 1.111 24-Apr-2015  pooka There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson
 1.110 23-Apr-2015  pooka Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.
 1.109 23-Apr-2015  pooka For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.
 1.108 23-Apr-2015  pooka Default compat to 60 70, now that it hopefully generates no fallout.
 1.107 22-Apr-2015  pooka Put 50 back to compat list for a while (some fallout)
 1.106 22-Apr-2015  pooka Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.
 1.105 22-Apr-2015  pooka default compat to 60 & 70
 1.104 22-Apr-2015  pooka Generate -DCOMPAT_nn from a list of nn provided in RUMP_COMPAT
 1.103 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.102 01-Dec-2014  pooka need -Wno-unused-parameter with -Wextra
 1.101 01-Dec-2014  pooka define the warnings used for hypercall components once
 1.100 01-Dec-2014  pooka RUMPCOMP_USER has been deprecated for long enough, remove it.
 1.99 22-Jul-2014  alnsn branches: 1.99.4;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.
 1.98 20-Jun-2014  pooka Some rump kernel components for interfacing with the environment need
to access both NetBSD kernel facilities and facilities provided by the
environment.

Where the environment's headers can be #included without namespace
conflict (which can be done - with care - for some Xen mini-os
headers), it is convenient to simply allow the rump kernel code to
call directly into the environment.

This also requires not mangling the symbol names.

So provide a variable RUMP_SYM_NORENAME which can be set by a component
namefile to a series of symbols or symbol prefixes (in makefile-quoted
awk regexp syntax). For example, in the rumpuser-xen xenbus driver:
RUMP_SYM_NORENAME=xenbus_|HYPERVISOR_|wake$$|block$$|schedule$$|force_evtchn

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
(proposed on rumpkernel-users; very minor modification by myself)
 1.97 25-Apr-2014  pooka Remove old HAVE_SUN_LD compat handling, it was there long enough.
 1.96 23-Apr-2014  pooka Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).
 1.95 15-Apr-2014  pooka add multi-inclusion protection
 1.94 16-Mar-2014  pooka branches: 1.94.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".
 1.93 16-Mar-2014  pooka Allow RUMP_LDSCRIPT itself to be used to specify which ldscript to use.
HAVE_SUN_LD will be deprecated in the future.
 1.92 15-Mar-2014  pooka Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.91 13-Mar-2014  pooka Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.
 1.90 10-Mar-2014  pooka Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.
 1.89 09-Dec-2013  pooka Make ktrace a compile-time option
 1.88 09-Dec-2013  pooka Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.
 1.87 03-Sep-2013  pooka RUMPCOMP_USEROBJ -> RUMPOBJ_NORENAME

Widens the implied usage scope of the variable.
 1.86 30-Aug-2013  pooka Rename RUMPTEST_BUILDSH to RUMPKERN_ONLY. Turns out not building any
POSIX implementations of hypercalls is useful beyond the build.sh test,
such as when building rump kernels for non-POSIX hosts.
 1.85 05-Aug-2013  joerg The linker script is the argument of -T, so keep them together.
 1.84 16-Jul-2013  pooka COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)
 1.83 09-Jul-2013  pooka Fix pasto: BUILDRUMP_CPPFLAGS was used twice.
 1.82 04-Jul-2013  pooka Apparently warning flags are not kept in CWARNFLAGS. Compensate.
 1.81 28-Apr-2013  pooka branches: 1.81.4;
fix "build.sh rumptest" wrt private hypercalls
 1.80 28-Apr-2013  pooka Build only rumpcomp_user.c as part of the rumpcomp_user rules
(otherwise ioconf.c wants to be part of .ALLSRC for whatever reason
I'm not really interested in, but which the make gurus will surely
explain to me)
 1.79 27-Apr-2013  pooka Allow to completely skip the ldscript, useful for linkers that don't need one.
 1.78 17-Mar-2013  christos fix typo
 1.77 16-Mar-2013  christos order too
 1.76 16-Mar-2013  christos uniquefy, really should fix this so there are no dup rules.
 1.75 16-Mar-2013  christos Fix the build w/o DESTDIR
 1.74 15-Mar-2013  pooka one more typofix
 1.73 15-Mar-2013  pooka On second thought, let's use make syntax in makefiles ...
 1.72 15-Mar-2013  pooka Use correct ldscript etc. for Sun ld.
 1.71 15-Mar-2013  pooka Use "-isysroot ${DESTDIR}" for RUMPCOMP_USER when run as part of build.sh
so as to catch the necessary headers, which, unlike in the buildrump.sh
case, are not supposed to be intermingled with the ones provided by
the host.
 1.70 01-Mar-2013  pooka Shuffle the namespaces in the previous around a bit, and make it
rumpcomp_user instead of rumpuser_component. This makes sure the
rumpuser namespace is used only by librumpuser.
 1.69 01-Mar-2013  pooka Allow rump kernel components to define their own hypercalls. This is
useful for example for supporting the tap device on Linux, for which
Linux-specific ioctl's are required (or at least so I was told).
 1.68 22-Nov-2012  pooka Pass linker script with -Wl,-T to avoid clang incompating itself out
without flagging an error.
 1.67 21-Nov-2012  pooka Instead of maintaining an evergrowing list of -U's, leave that up
to an external script.
 1.66 21-Nov-2012  pooka Don't duplicate arbitrary chunks of bsd.sys.mk in here (especially
-Wsign-compare, since that doesn't even work with the kernel, and was
just previously masked by -isystem). Reorder a bit too.
 1.65 21-Nov-2012  pooka Don't unconditionally use the error-silencing magic of -isystem
(as opposed to -I) on every component, only the zfs ones depend on it
to build. Regular modules might benefit from a similar move.
 1.64 13-Nov-2012  pooka add some -U's for linux builds
 1.63 10-Aug-2012  joerg branches: 1.63.2;
Deal with optional HAVE_GCC.
 1.62 05-Aug-2012  pooka Make it easy to turn -DDIAGNOSTIC off (RUMP_DIAGNOSTIC=no) and -DDEBUG
on (RUMP_DEBUG=yes).
 1.61 10-May-2011  matt branches: 1.61.4; 1.61.12;
Make rump compile things with -std=gnu99 like the kernel and modules.
 1.60 01-Feb-2011  matt Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h
 1.59 06-Jan-2011  pooka branches: 1.59.2; 1.59.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)
 1.58 06-Dec-2010  pooka use -isystem where appropriate
 1.57 11-May-2010  pooka Limit visibility of _RUMPKERNEL to prevent abuse.
 1.56 26-Apr-2010  pooka Give a cpp hint if the native kernel abi is supported.
 1.55 28-Mar-2010  mrg apply a patch from dennis fergusson:

fix the powerpc64 quirk handling by introducing a prefix quirk and
using it as appropriate. fix the (postfix) quirk.

now rump and powerpc64 get along nicely.
 1.54 22-Mar-2010  mrg add + _SYMQUIRK='|\.(rump|RUMP)' for powerpc64, as recommended by pooka.
it gets rid of many of the warnings trying to link rump_cd9960, but
there are a bunch remaining. atomic ops seem missing, and some ktrace
points.
 1.53 21-Mar-2010  pooka Move make snippets for use with config(1) ioconf functionality from
rump into share/mk. This is to make it useful for all kernel
builders.

Note: we have waaay too many weird and wonderful ways of making
kernel code (monolithic kernel, modules, rump). There should be
only one way to build kernel code instead of a maze of twisty little
.mk files, all not quite alike. When that is fixed, this snippet can go
into the more generic .mk file.
 1.52 01-Mar-2010  pooka branches: 1.52.2;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.
 1.51 17-Feb-2010  pooka Invert inverted comment and verbosify it.
 1.50 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.49 09-Feb-2010  pooka IOCONFIG comes from .CURDIR
 1.48 03-Feb-2010  pooka branches: 1.48.2;
add a rule for locators.h too
 1.47 03-Feb-2010  pooka If IOCONFIG is defined, autogenerate ioconf.c and locators.h
from ${IOCONFIG}.
 1.46 31-Jan-2010  pooka Make (no pun intended) it possible to perform component symbol
protection from a shell prompt with the command line:

make -f /sys/rump/Makefile RUMP_SYMREN=module.kobj

This is benefitial especially on i386, where rump ABI matches the
kernel ABI (sans the renaming isolation). In the above example
module.kobj can then be loaded in a rump kernel either statically
at link-time simply by giving module.kobj as an object to the
linker, or dynamically at runtime by calling rump_sys_modctl(MODCTL_LOAD).
 1.45 12-Dec-2009  pooka Use linker script to make __start/stop_link_set_modules be present
in libs built with binutils >=2.19. This is a less error-prone
method than the previous where components had to be tagged in the
Makefile as modules (and if they weren't, things broke. and vice
versa).
 1.44 27-Nov-2009  pooka Include arch/include/Makefile.inc for some compiler flags.
 1.43 20-Nov-2009  pooka Hmm, in addition to leaving out -lc, -nostdlibs also leaves out
libgcc, and causes problems on some platforms. Currently there is
no easy way to say "link against libgcc but not against libc", so
just comment out -nostdlibs until a better way is invented.
 1.42 17-Nov-2009  pooka Don't link rump kernel libs against libc. They have no host system
dependencies apart from indirect ones via rumpuser.
 1.41 13-Sep-2009  pooka binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
for orphaned sections to using PROVIDE. What this means is that
unless a rump component internally references that symbol, it will
not be included in the component shared library, and hence cannot
be referenced when the component is loaded. Add a workaround which
works both with 2.16 and 2.19: force a reference to the __start
symbol internally and hence retain it in the resulting library.
 1.40 08-Sep-2009  pooka kernel code needs -Wno-format-zero-length
 1.39 07-Sep-2009  pooka Always define __NetBSD__ (for builds on non-NetBSD)
 1.38 03-May-2009  pooka define DEBUGPRINT
 1.37 26-Apr-2009  pooka prettyprint long line, no functional change
 1.36 01-Apr-2009  perry More reproducible build fixes:

1) invoke objcopy with --preserve-dates or it will update all the
dates in the .a file to the present date.
2) add an invocation of ar-as-ranlib or the object file index ends up
with the date in it. (it might also end up with an incorrect
index.)
 1.35 21-Mar-2009  pooka remove RANLIB too. pointed out by perry.
 1.34 19-Mar-2009  pooka Reflect the change to archivebuild in bsd.lib.mk rev 1.296 for
deterministic builds, as hinted by perry.
 1.33 12-Feb-2009  lukem Drop to WARNS?=3 as src/sys doesn't compile with -Wsign-compare yet
 1.32 23-Jan-2009  pooka branches: 1.32.2;
* enable COMPAT_50 (we need a better compat model here, but this is
enough for now)
* _RUMPKERNEL is not going anywhere anymore, so adjust comment
 1.31 18-Jan-2009  he Change the use of formally undocumented features, which have now been
made to fail. Specifically, change
.ifdef(SYMBOL) -> .ifdef SYMBOL or .if defined(SYMBOL),
and corresponding for .ifndef.

Also correct one error in lib/libm/Makefile (.ifdef (${MKCOMPLEX} != "no")?!?).
 1.30 14-Jan-2009  pooka Do rump kernel symbol protection for vax. All archs support it now.
 1.29 12-Jan-2009  pooka * Add adapted version of the userspace atomic_cas ops for platforms
lacking special instructions. We always use the spinlocked version
(could use RAS on UP NetBSD host, but it's not portable).
* Add platform-based symbol quirk tables for selectively not renaming
toolchain symbols for some platforms. Although, this should really
depend on the (toolchain,platform)-tuple and not just the platform.

This allows arm, hppa, mips and sh3 to build succesfully with an
isolated rump kernel namespace. ... now, one arch remains: vax.
you must compile vax. then, only then will you MI be.
 1.28 11-Jan-2009  pooka Treat all of ^__ as compiler namespace and do not rename those
symbols. This fixes e.g. fortify and sh3 millicode issues. This
is still not perfect, however, since e.g. the MIPS _gp_disp is not
in ^__.

XXX: we provide a few ^__ symbols in the kernel, but those can be
easily renamed. The harder problem is how to keep the kernel clean
of those afterwards.
 1.27 10-Jan-2009  pooka * sparc supports rump kernel symbol rename
* plonk vax in here since it has issues with rename
 1.26 10-Jan-2009  pooka Disable symbol renaming for now on arm, mips, sh3 and sparc to
allow them to build. Some libgcc symbols are being renamed also,
plus not all atomic operations are provided by libkern on these
archs.
 1.25 08-Jan-2009  pooka Add Makefile.rump to DPSRCS. Should solve issues with UPDATE=1 builds.
 1.24 08-Jan-2009  pooka Rename symbols in rump kernel libraries to always belong to a "rump"
symbol namespace. This has several implications:
* no symbols are accidentally linked against host platform libraries
* all host platform access is done via rumpuser, and hence the
portability of rump is now well defined
* functionality such as proplib can now exist within the rump virtual
kernel and the application using it

Thanks to uwe for originally suggesting the bulk renaming approach
over a pint of what I believe was very crisp, curious and untypical
stout. It had an almost acidic characteristic with fruity notes
and lacking dark and roasted flavours.

And thanks to lukem for pointing me in the right direction with make.
 1.23 02-Jan-2009  pooka Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1
 1.22 01-Jan-2009  pooka disable strict aliasing to mirror kernel build flags
 1.21 01-Jan-2009  pooka Purge multiple kernel opt files.
 1.20 30-Dec-2008  pooka Move list of rump-uses-kmod archs to bsd.own.mk for wider consumption.
 1.19 30-Dec-2008  pooka Switch amd64 rumps to the kernel ABI.
 1.18 29-Dec-2008  pooka Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.
 1.17 29-Dec-2008  pooka We are conseptually a module, so -D_MODULE. Group CPPFLAGS better.
 1.16 16-Dec-2008  pooka Pick PPC_OEA over PPC_IBM4XX. I've decided I like it more.
(plus it hopefully builds without source changes)
 1.15 16-Dec-2008  pooka liberate trailing whitespace
 1.14 16-Dec-2008  pooka -Isys/arch is used in kernel builds
 1.13 08-Dec-2008  pooka Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.
 1.12 09-Oct-2008  pooka branches: 1.12.2;
Compile all rump kernel portions with -DMULTIPROCESSOR.
 1.11 29-Jul-2008  pooka Prevent amd64 compiler flag -mcmodel=kernel for rump kernel code.
This allows to compile rump libraries as shared libraries also on mad64.

Problem spotted by Greg Oster. I guess his build broke or something ...
 1.10 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.9 18-Jul-2008  pooka enable DIAGNOSTIC
 1.8 31-May-2008  ad branches: 1.8.2; 1.8.4;
Turn off DIAGNOSTIC so it builds.
 1.7 03-May-2008  lukem branches: 1.7.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)
 1.6 24-Jan-2008  pooka branches: 1.6.6; 1.6.8; 1.6.10;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().
 1.5 25-Aug-2007  pooka branches: 1.5.2; 1.5.4; 1.5.10; 1.5.12;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.
 1.4 15-Aug-2007  pooka branches: 1.4.2;
Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.
 1.3 07-Aug-2007  pooka branches: 1.3.2;
Compile kernel stuff with DIAGNOSTIC.
 1.2 07-Aug-2007  pooka -I${NETBSDSRCDIR}/common/include
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile.rump was added on branch matt-mips64 on 2007-08-05 22:28:02 +0000
 1.3.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.3.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.3.2.1 07-Aug-2007  skrll file Makefile.rump was added on branch nick-csl-alignment on 2007-08-15 13:50:07 +0000
 1.4.2.3 09-Oct-2007  ad Sync with head.
 1.4.2.2 20-Aug-2007  ad Sync with HEAD.
 1.4.2.1 15-Aug-2007  ad file Makefile.rump was added on branch vmlocking on 2007-08-20 22:07:08 +0000
 1.5.12.1 18-Feb-2008  mjf Sync with HEAD.
 1.5.10.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.5.10.1 25-Aug-2007  joerg file Makefile.rump was added on branch jmcneill-pm on 2007-11-02 12:43:13 +0000
 1.5.4.3 04-Feb-2008  yamt sync with head.
 1.5.4.2 03-Sep-2007  yamt sync with head.
 1.5.4.1 25-Aug-2007  yamt file Makefile.rump was added on branch yamt-lazymbuf on 2007-09-03 14:44:26 +0000
 1.5.2.1 23-Mar-2008  matt sync with HEAD
 1.6.10.5 11-Aug-2010  yamt sync with head.
 1.6.10.4 11-Mar-2010  yamt sync with head
 1.6.10.3 16-Sep-2009  yamt sync with head
 1.6.10.2 04-May-2009  yamt sync with head.
 1.6.10.1 16-May-2008  yamt sync with head.
 1.6.8.2 04-Jun-2008  yamt sync with head
 1.6.8.1 18-May-2008  yamt sync with head.
 1.6.6.3 17-Jan-2009  mjf Sync with HEAD.
 1.6.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.6.6.1 02-Jun-2008  mjf Sync with HEAD.
 1.7.2.3 10-Oct-2008  skrll Sync with HEAD.
 1.7.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.7.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.8.4.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.8.4.1 19-Oct-2008  haad Sync with HEAD.
 1.8.2.2 31-Jul-2008  simonb Sync with head.
 1.8.2.1 21-Jul-2008  simonb Sync with head.
 1.12.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.12.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.12.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.32.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.48.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.48.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.52.2.3 31-May-2011  rmind sync with head
 1.52.2.2 05-Mar-2011  rmind sync with head
 1.52.2.1 30-May-2010  rmind sync with head
 1.59.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.59.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.61.12.1 20-Nov-2012  matt Don't use ldscript unless HAVE_BINUTILS == 219
 1.61.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.61.4.2 16-Jan-2013  yamt sync with (a bit old) head
 1.61.4.1 30-Oct-2012  yamt sync with head
 1.63.2.5 03-Dec-2017  jdolecek update from HEAD
 1.63.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.63.2.3 23-Jun-2013  tls resync from head
 1.63.2.2 25-Feb-2013  tls resync with head
 1.63.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.81.4.2 18-May-2014  rmind sync with head
 1.81.4.1 28-Aug-2013  rmind sync with head
 1.94.2.1 10-Aug-2014  tls Rebase.
 1.99.4.5 09-Jul-2016  skrll Sync with HEAD
 1.99.4.4 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.99.4.3 22-Sep-2015  skrll Sync with HEAD
 1.99.4.2 06-Jun-2015  skrll Sync with HEAD
 1.99.4.1 06-Apr-2015  skrll Sync with HEAD
 1.124.10.1 29-Feb-2020  ad Sync with head.
 1.124.4.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.129.2.1 03-Apr-2021  thorpej Sync with HEAD.
 1.130.2.1 17-Apr-2021  thorpej Sync with HEAD.
 1.132.2.1 01-Aug-2021  thorpej Sync with HEAD.
 1.17 05-Jul-2023  lukem mk.conf(5): document rump variables

Update mk.conf(5) with the rump variables from
- lib/librumpuser/README.compileopts
- sys/rump/README.compileopts

Add cross-references back to mk.conf(5) in those files.

Ensure that the Default: is listed last in a description,
for consistency with the convention in this file.
 1.16 09-Jul-2022  andvar s/desciption/description/
 1.15 03-May-2022  hannken Make option VNODE_LOCKDEBUG more functional.

- Add "LOCKED=EXCL" option for vnode operations needing exclusive locked nodes.

- As it is impossible to check for shared locks held by current thread avoid
false assertions by testing for exclusive lock only in the "LOCKED=NO" case.

- New option "RUMP_VNODE_LOCKDEBUG" enables VNODE_LOCKDEBUG for the rump kernel.
 1.14 25-Jan-2016  pooka Move librumpuser compile-time options into the librumpuser source
directory. Those options apply only for the in-tree implementation.
 1.13 17-Jun-2015  pooka note RUMP_{,LOCK}DEBUG default values
 1.12 17-Jun-2015  pooka Remove unreal allocators, unconditionally use subr_{kmem,pool}.

Will, with other work, allow to tighten the memory allocation hypercall
specification to page-granularity allocations in the future.
 1.11 03-Jun-2015  pooka Add a "default" alias for RUMP_NBCOMPAT, in case "default" and "all"
stop being the same thing in the future.
 1.10 03-Jun-2015  pooka Add "all" and "none" as acceptable RUMP_NBCOMPAT value aliases to
undefined and empty, respectively.
 1.9 24-Apr-2015  pooka There are tests which rely on compat code continuing to be present,
so default RUMP_NBCOMPAT to all releases.

reported by gson
 1.8 23-Apr-2015  pooka Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.
 1.7 23-Apr-2015  pooka For RUMP_COMPAT, accept "all" as an alias.

Also accept a comma-separated list, since that's easier to pass through
shells than a whitespace-separated list.
 1.6 11-Jul-2014  justin branches: 1.6.4; 1.6.6;
Add a fiber based implementation of librumpuser in addition to the
default pthreads based version.

Discussed with pooka@
 1.5 20-Jun-2014  pooka document RUMP_SYM_NORENAME
 1.4 23-Apr-2014  pooka branches: 1.4.2; 1.4.4;
Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).
 1.3 16-Mar-2014  pooka branches: 1.3.2;
Introduce RUMP_CURLWP compile option to select curlwp scheme.
Default is still "hypercall".
 1.2 16-Mar-2014  pooka note that it's a good idea to do a clean build if an option is changed
 1.1 16-Mar-2014  pooka document compile-time options for rump kernels
 1.3.2.1 10-Aug-2014  tls Rebase.
 1.4.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.1 23-Apr-2014  yamt file README.compileopts was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.4.2.2 18-May-2014  rmind sync with head
 1.4.2.1 23-Apr-2014  rmind file README.compileopts was added on branch rmind-smpnet on 2014-05-18 17:46:14 +0000
 1.6.6.3 19-Mar-2016  skrll Sync with HEAD
 1.6.6.2 22-Sep-2015  skrll Sync with HEAD
 1.6.6.1 06-Jun-2015  skrll Sync with HEAD
 1.6.4.3 03-Dec-2017  jdolecek update from HEAD
 1.6.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.4.1 11-Jul-2014  tls file README.compileopts was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.12 08-Jan-2013  pooka Update a bit.
 1.11 11-May-2010  pooka branches: 1.11.8; 1.11.18;
update slightly
 1.10 11-May-2010  pooka drop silly backronym. just rump.
 1.9 04-Sep-2009  pooka branches: 1.9.2; 1.9.4;
update list of directories
 1.8 31-Dec-2008  pooka update description of include
 1.7 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.6 18-Nov-2008  pooka note rumpnet
 1.5 09-Oct-2008  pooka branches: 1.5.2;
document libraries in rump/net/lib
 1.4 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.3 16-Aug-2007  pooka branches: 1.3.2; 1.3.6; 1.3.12; 1.3.28; 1.3.32; 1.3.34; 1.3.36; 1.3.38;
missed a bit
 1.2 16-Aug-2007  pooka describe libukfs
 1.1 06-Aug-2007  pooka branches: 1.1.2; 1.1.4;
add quick explanation of directory structure per Hubert's request
 1.1.4.2 06-Aug-2007  pooka add quick explanation of directory structure per Hubert's request
 1.1.4.1 06-Aug-2007  pooka file README.dirs was added on branch matt-mips64 on 2007-08-06 21:03:13 +0000
 1.1.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 06-Aug-2007  skrll file README.dirs was added on branch nick-csl-alignment on 2007-08-15 13:50:07 +0000
 1.3.38.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.3.38.1 19-Oct-2008  haad Sync with HEAD.
 1.3.36.1 31-Jul-2008  simonb Sync with head.
 1.3.34.2 10-Oct-2008  skrll Sync with HEAD.
 1.3.34.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.3.32.3 11-Aug-2010  yamt sync with head.
 1.3.32.2 16-Sep-2009  yamt sync with head
 1.3.32.1 04-May-2009  yamt sync with head.
 1.3.28.2 17-Jan-2009  mjf Sync with HEAD.
 1.3.28.1 28-Sep-2008  mjf Sync with HEAD.
 1.3.12.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.3.12.1 16-Aug-2007  joerg file README.dirs was added on branch jmcneill-pm on 2007-11-02 12:43:13 +0000
 1.3.6.2 03-Sep-2007  yamt sync with head.
 1.3.6.1 16-Aug-2007  yamt file README.dirs was added on branch yamt-lazymbuf on 2007-09-03 14:44:26 +0000
 1.3.2.2 20-Aug-2007  ad Sync with HEAD.
 1.3.2.1 16-Aug-2007  ad file README.dirs was added on branch vmlocking on 2007-08-20 22:07:08 +0000
 1.5.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.9.4.1 30-May-2010  rmind sync with head
 1.9.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.11.18.1 25-Feb-2013  tls resync with head
 1.11.8.1 23-Jan-2013  yamt sync with head
 1.12 08-Sep-2015  pooka Remove solved item.
 1.11 03-Jun-2015  pooka Annual update of deleting one entry. At this rate the TODO will be
empty in 2038!
 1.10 15-Jan-2014  pooka branches: 1.10.6;
yearly update

Miraculously, the list got smaller(!)
 1.9 08-Jan-2013  pooka branches: 1.9.2;
Update a bit. yay, this file isn't completely append-only!
 1.8 01-Feb-2011  pooka branches: 1.8.4; 1.8.14;
update todo from my private collection (which is now empty)
 1.7 26-Nov-2009  pooka branches: 1.7.4; 1.7.6; 1.7.8;
update a bit
 1.6 29-Mar-2009  pooka remove entries which are done
 1.5 16-Dec-2008  pooka branches: 1.5.2;
remove some completed TODO items and add new ones
 1.4 07-Aug-2008  pooka branches: 1.4.2;
some more todo points
 1.3 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.2 16-Jul-2008  pooka bring todo list upper-to-dater
 1.1 10-Sep-2007  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.14; 1.1.28; 1.1.32; 1.1.34; 1.1.36; 1.1.38;
manadatory TODO-list.
Makes project appear less dead when there's something TODO.
 1.1.38.1 19-Oct-2008  haad Sync with HEAD.
 1.1.36.2 31-Jul-2008  simonb Sync with head.
 1.1.36.1 18-Jul-2008  simonb Sync with head.
 1.1.34.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.32.2 11-Mar-2010  yamt sync with head
 1.1.32.1 04-May-2009  yamt sync with head.
 1.1.28.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.28.1 28-Sep-2008  mjf Sync with HEAD.
 1.1.14.2 06-Nov-2007  matt sync with HEAD
 1.1.14.1 10-Sep-2007  matt file TODO was added on branch matt-armv6 on 2007-11-06 23:34:27 +0000
 1.1.10.2 27-Oct-2007  yamt sync with head.
 1.1.10.1 10-Sep-2007  yamt file TODO was added on branch yamt-lazymbuf on 2007-10-27 11:36:18 +0000
 1.1.6.2 09-Oct-2007  ad Sync with head.
 1.1.6.1 10-Sep-2007  ad file TODO was added on branch vmlocking on 2007-10-09 13:45:00 +0000
 1.1.4.2 02-Oct-2007  joerg Sync with HEAD.
 1.1.4.1 10-Sep-2007  joerg file TODO was added on branch jmcneill-pm on 2007-10-02 18:29:25 +0000
 1.4.2.2 28-Apr-2009  skrll Sync with HEAD.
 1.4.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.5.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.7.8.1 08-Feb-2011  bouyer Sync with HEAD
 1.7.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.7.4.1 05-Mar-2011  rmind sync with head
 1.8.14.3 03-Dec-2017  jdolecek update from HEAD
 1.8.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.8.14.1 25-Feb-2013  tls resync with head
 1.8.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.4.1 23-Jan-2013  yamt sync with head
 1.9.2.1 18-May-2014  rmind sync with head
 1.10.6.2 22-Sep-2015  skrll Sync with HEAD
 1.10.6.1 06-Jun-2015  skrll Sync with HEAD
 1.10 12-Aug-2013  pooka This file has been obsoleted by "./buildrump.sh checkout{cvs,git}"
 1.9 15-May-2013  pooka branches: 1.9.2;
one more bump for the recent changes
 1.8 15-May-2013  pooka bump version for rumpuser changes
 1.7 18-Mar-2013  pooka add librumphijack to the list
 1.6 07-Mar-2013  pooka bump version for syscall changes
 1.5 01-Mar-2013  pooka Bump tree version for rumpcomp_user stuff.
 1.4 31-Jan-2013  pooka branches: 1.4.4;
bump for TOOLS_BUILDRUMP
 1.3 17-Jan-2013  pooka branches: 1.3.2;
bump version for recent portability fixes
 1.2 30-Dec-2012  pooka bump for arch linux/rpi support.
 1.1 27-Dec-2012  pooka Since cvs does not provide a version number for the entire tree, provide
identifiers which can be used by external parties to check if the NetBSD
source tree is of required vintage.

inspired by a buildrump.sh bug report due to an out-of-date src
 1.3.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.2.2 23-Jan-2013  yamt sync with head
 1.3.2.1 17-Jan-2013  yamt file VERSION was added on branch yamt-pagecache on 2013-01-23 00:06:27 +0000
 1.4.4.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.4.3 23-Jun-2013  tls resync from head
 1.4.4.2 25-Feb-2013  tls resync with head
 1.4.4.1 31-Jan-2013  tls file VERSION was added on branch tls-maxphys on 2013-02-25 00:30:07 +0000
 1.9.2.1 28-Aug-2013  rmind sync with head
 1.4 21-Mar-2020  pgoyette Teach rump how to process __link_set_sysctl_funcs so it can handle
modules the same as a real kernel.

Partly addresses PR kern/55088 - __link_set_evcnts not yet handled
(that will happen later)
 1.3 23-Apr-2014  pooka branches: 1.3.28;
domains are attached by module(-like) constructors, so no need to
play link_set games with them.
 1.2 01-Mar-2010  pooka branches: 1.2.2; 1.2.12; 1.2.22; 1.2.26; 1.2.36;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 12-Dec-2009  pooka branches: 1.1.2;
Use linker script to make __start/stop_link_set_modules be present
in libs built with binutils >=2.19. This is a less error-prone
method than the previous where components had to be tagged in the
Makefile as modules (and if they weren't, things broke. and vice
versa).
 1.1.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.36.1 10-Aug-2014  tls Rebase.
 1.2.26.1 18-May-2014  rmind sync with head
 1.2.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 01-Mar-2010  yamt file ldscript.rump was added on branch yamt-nfs-mp on 2010-03-11 15:04:32 +0000
 1.3.28.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.1 15-Mar-2013  pooka branches: 1.1.6; 1.1.14;
Generate support for sun ld.
 1.1.14.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.14.1 15-Mar-2013  yamt file ldscript_sun.rump was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.1.6.2 23-Jun-2013  tls resync from head
 1.1.6.1 15-Mar-2013  tls file ldscript_sun.rump was added on branch tls-maxphys on 2013-06-23 06:20:26 +0000
 1.1 15-Mar-2013  pooka branches: 1.1.6; 1.1.14;
Generate support for sun ld.
 1.1.14.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.14.1 15-Mar-2013  yamt file linksyms_sun.c was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.1.6.2 23-Jun-2013  tls resync from head
 1.1.6.1 15-Mar-2013  tls file linksyms_sun.c was added on branch tls-maxphys on 2013-06-23 06:20:26 +0000
 1.50 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.49 27-Sep-2019  bad branches: 1.49.6;
Remove libelf from "usr" list. Deleted 2015-09-30.
 1.48 27-Sep-2019  bad Exclude sys/external/{gpl2/dts,bsd/drm*}.

Saves some 100MB in the src-netbsd repo.
 1.47 26-Sep-2019  bad rtadvd needs expandm.[hc] from libwrap.
 1.46 26-Sep-2019  bad revert r1.35-r1.40 of sys/rump/listsrcdirs.

addressed differently in tools/Makefile r1.204.
 1.45 12-Sep-2019  bad typo: ARCH_EXTRA -> ARCHS_EXTRA
 1.44 12-Sep-2019  bad Add ews4800mips and sh3 heads only listed in src/tools/Makefile.nbincludes.
 1.43 12-Sep-2019  bad Make include_headerlist ignore files in already exported directories.
Invoke include_headerlist after exporting the ARCHS directories.
 1.42 12-Sep-2019  bad Summary: export the files from headerlist before the ARCHS's includes.
Or else cvs export will complain about them being in the way.
 1.41 12-Sep-2019  bad Summary: add the files from src/tools/headerlist to the output.
 1.40 12-Sep-2019  bad Summary: pax needs pack_dev.h from mknod. move mknod to sys sources
 1.39 12-Sep-2019  bad Summary: ammend previous. remove pax from userspace sources.

CVS: ----------------------------------------------------------------------
CVS: CVSROOT cvs.NetBSD.org:/cvsroot
CVS: please use "PR category/123" to have the commitmsg appended to PR 123
CVS:
CVS: Please evaluate your changes and consider the following.
CVS: Abort checkin if you answer no.
CVS: => For all changes:
CVS: Do the changed files compile?
CVS: Has the change been tested?
CVS: => If you are not completely familiar with the changed components:
CVS: Has the change been posted for review?
CVS: Have you allowed enough time for feedback?
CVS: => If the change is major:
CVS: => If the change adds files to, or removes files from $DESTDIR:
CVS: => If you are changing a library or kernel interface:
CVS: Have you successfully run "./build.sh release"?
 1.38 12-Sep-2019  bad Summary: add grep and stat.

CVS: ----------------------------------------------------------------------
CVS: CVSROOT cvs.NetBSD.org:/cvsroot
CVS: please use "PR category/123" to have the commitmsg appended to PR 123
CVS:
CVS: Please evaluate your changes and consider the following.
CVS: Abort checkin if you answer no.
CVS: => For all changes:
CVS: Do the changed files compile?
CVS: Has the change been tested?
CVS: => If you are not completely familiar with the changed components:
CVS: Has the change been posted for review?
CVS: Have you allowed enough time for feedback?
CVS: => If the change is major:
CVS: => If the change adds files to, or removes files from $DESTDIR:
CVS: => If you are changing a library or kernel interface:
CVS: Have you successfully run "./build.sh release"?
 1.37 11-Sep-2019  bad add src/external/public-domain/xz.
 1.36 17-Feb-2019  bad npfctl needs externalbsd/libnv.
 1.35 01-Apr-2018  ryo branches: 1.35.2;
Add initial support for ARMv8 (AARCH64) (by nisimura@ and ryo@)

- sys/arch/evbarm64 is gone and integrated into sys/arch/evbarm. (by skrll@)
- add support fdt. evbarm/conf/GENERIC64 fdt (bcm2837,sunxi,tegra) based generic 64bit kernel config. (by skrll@, jmcneill@)
 1.34 07-Jul-2015  justin branches: 1.34.16;
Add uname to rump sources
 1.33 29-Jun-2015  pooka add brconfig to userland utils
 1.32 15-Jun-2015  pooka add mixerctl to userland utils
 1.31 25-Apr-2015  pooka Add libkvm to list of userspace libraries.

Even though kvm per se isn't support by rump kernels at least for now,
libkvm contains methods such as kvm_getproc2() which can be necessary for
compiling existing applications with kvm awareness as rumprun unikernels.
 1.30 17-Apr-2015  pooka include sockstat in list of utilities
 1.29 07-Mar-2015  justin Add risc-v to checked out rump architectures
 1.28 13-Feb-2015  pooka add libc++
 1.27 08-Feb-2015  justin Add rtadvd to rump user sources
 1.26 24-Dec-2014  justin Add fdisk to rump listsrcdirs
 1.25 23-Dec-2014  justin Add mdconfig to rump listsrcdirs
 1.24 10-Dec-2014  pooka include lib/i18n_module in user sources

It's used by the libc build to determine the citrus module version,
so including it will give us consistent results both with a full
NetBSD checkout and a rumprun things only checkout.
 1.23 05-Dec-2014  pooka Add genassym

It's not reeeaaallly required currently, but libc build for some archs
(e.g. arm) wants to run it, and genassym is small enough for it to be
simplest to just include it.
 1.22 29-Oct-2014  justin branches: 1.22.2;
Add libelf to rump directories
 1.21 29-Oct-2014  pooka Perform internal consistency check automatically.
 1.20 29-Oct-2014  justin Revert, zfs was already elsewhere in list
 1.19 29-Oct-2014  justin Add zfs files to rump userspace sources
 1.18 11-Aug-2014  justin Add aarch64 to rump srcdirs
 1.17 09-Jul-2014  pooka Make the file system utility list consistent between fsck, mount and newfs.
For now, include ext2, ffs and msdosfs (and as a "special case", mount_tmpfs).
 1.16 09-Jul-2014  pooka split "sys" further into "sys" and "posix", per comments from justin
 1.15 08-Jul-2014  pooka In addition to kernel/tools sources, include another selection of sources
useful for running application stacks on rump kernels.
 1.14 15-Jun-2014  pooka Add cat, rpcgen and stat to TOOLS_BUILDRUMP. They're useful for
installing headers for the app stack cases that need it done, and small
enough to not matter for the kernel-only cases that don't.
 1.13 24-Feb-2014  pooka branches: 1.13.2; 1.13.4;
+rump_wmd
 1.12 20-Dec-2013  pooka include shmif_dumpbus
 1.11 29-Oct-2013  pooka Add MIPS. Requested by Justin Cormack.
 1.10 29-Oct-2013  pooka Maintain arch list in a separate variable.
no functional change
 1.9 19-Sep-2013  pooka Pull in all of sys/dev (i.e. don't skip pci/ and microcode/).
 1.8 10-Sep-2013  pooka +rump_server
 1.7 12-Aug-2013  pooka building ARM rump kernels now requires sys/arch/arm/arm32
 1.6 11-Aug-2013  pooka Include powerpc+evbpcc. Allows the buildrump.sh checkout to work on
powerpc machines. Tested on Linux/ppc64 by Justin Cormack.
 1.5 30-Jul-2013  pooka Include Makefiles under sys/arch.

This makes it easy to install the set of kernel headers that were used
by buildrump.sh. Requested by Justin Cormack for ljsyscall (Lua interface
definitions).
 1.4 18-Mar-2013  pooka branches: 1.4.6;
add librumphijack to the list
 1.3 10-Mar-2013  pooka Add -c, which produces cvs syntax output for the necessary subset
of src/sys.
 1.2 10-Mar-2013  pooka Avoid dependency on curlybrace expansion.
 1.1 13-Feb-2013  pooka branches: 1.1.4;
Move the list of source directories required by TOOLS_BUILDRUMP=yes from
the buildrump.sh repo to here. While I don't expect the list to change
often, it's a function of the NetBSD source tree -r/-D and therefore
easier to maintain here.
 1.1.4.5 03-Dec-2017  jdolecek update from HEAD
 1.1.4.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.3 23-Jun-2013  tls resync from head
 1.1.4.2 25-Feb-2013  tls resync with head
 1.1.4.1 13-Feb-2013  tls file listsrcdirs was added on branch tls-maxphys on 2013-02-25 00:30:07 +0000
 1.4.6.2 18-May-2014  rmind sync with head
 1.4.6.1 28-Aug-2013  rmind sync with head
 1.13.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.4.1 24-Feb-2014  yamt file listsrcdirs was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.13.2.1 10-Aug-2014  tls Rebase.
 1.22.2.3 22-Sep-2015  skrll Sync with HEAD
 1.22.2.2 06-Jun-2015  skrll Sync with HEAD
 1.22.2.1 06-Apr-2015  skrll Sync with HEAD
 1.34.16.1 07-Apr-2018  pgoyette Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
 1.35.2.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.35.2.1 10-Jun-2019  christos Sync with HEAD
 1.49.6.1 25-Apr-2020  bouyer Add xen as include dir for x86
 1.3 26-Jan-2016  pooka "rump_private.h" -> <rump-sys/kern.h>
 1.2 27-Apr-2014  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.10; 1.2.12;
unsprinkle const to fix clang build. mmm, travis ci
 1.1 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 3:

Add a tool to autogenerate callbacks from components to establish system
call handlers for non-modular syscalls.
 1.2.12.1 19-Mar-2016  skrll Sync with HEAD
 1.2.10.3 03-Dec-2017  jdolecek update from HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 27-Apr-2014  tls file makerumpsyscalls.sh was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.2.6.2 10-Aug-2014  tls Rebase.
 1.2.6.1 27-Apr-2014  tls file makerumpsyscalls.sh was added on branch tls-earlyentropy on 2014-08-10 06:56:49 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 27-Apr-2014  yamt file makerumpsyscalls.sh was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.2.2.2 18-May-2014  rmind sync with head
 1.2.2.1 27-Apr-2014  rmind file makerumpsyscalls.sh was added on branch rmind-smpnet on 2014-05-18 17:46:14 +0000
 1.11 20-May-2024  christos regen
 1.10 28-Jul-2023  christos Add epoll(2) from Theodore Preduta as part of GSoC 2023
 1.9 02-Nov-2020  christos regen
 1.8 14-Aug-2020  riastradh branches: 1.8.2;
regen
 1.7 16-May-2020  christos Add ACL support for FFS. From FreeBSD.
 1.6 22-Sep-2019  christos regen
 1.5 10-Aug-2018  pgoyette Regen
 1.4 18-Jun-2015  pooka branches: 1.4.16; 1.4.18;
regen
 1.3 08-Apr-2015  justin regen after syscall update
 1.2 25-Jul-2014  dholland branches: 1.2.2; 1.2.6; 1.2.8;
Regen for fdiscard and posix_fallocate.
 1.1 27-Apr-2014  pooka branches: 1.1.2; 1.1.4;
Eliminate weak symbols from rump kernel syscall handlers, part 5:

regen syscalls to eliminate weak aliases and link-time initialization
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 27-Apr-2014  yamt file rump.sysmap was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 27-Apr-2014  rmind file rump.sysmap was added on branch rmind-smpnet on 2014-05-18 17:46:14 +0000
 1.2.8.2 22-Sep-2015  skrll Sync with HEAD
 1.2.8.1 06-Jun-2015  skrll Sync with HEAD
 1.2.6.3 03-Dec-2017  jdolecek update from HEAD
 1.2.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.6.1 25-Jul-2014  tls file rump.sysmap was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.2.2.2 10-Aug-2014  tls Rebase.
 1.2.2.1 25-Jul-2014  tls file rump.sysmap was added on branch tls-earlyentropy on 2014-08-10 06:56:49 +0000
 1.4.18.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.4.18.1 10-Jun-2019  christos Sync with HEAD
 1.4.16.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.8.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.1 15-Mar-2013  pooka branches: 1.1.6; 1.1.14;
Support generating support for Sun ld.
 1.1.14.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.14.1 15-Mar-2013  yamt file sunldgen.sh was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.1.6.2 23-Jun-2013  tls resync from head
 1.1.6.1 15-Mar-2013  tls file sunldgen.sh was added on branch tls-maxphys on 2013-06-23 06:20:26 +0000
 1.1 09-Jun-2009  pooka branches: 1.1.2;
Checkpoint a bunch of work-in-progress: support for disk devices
and raidframe. Raidframe works well enough to configure a raid in
the rump kernel, but the usage is "interesting" (pending some other
changes/cleanup from other parts in my tree).

These are not built by default yet.
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 09-Jun-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-06-20 07:20:34 +0000
 1.18 05-Dec-2010  pooka Rename Makefile.rump${x} to Makefile.rump${x}comp for consistency.
 1.17 22-Nov-2010  pooka Add rump component for md(4).

Now, let's say you start a rump server and configure a memory disk
on it. Remote (as in TCP remote) clients may now access that
memory.

cloudy, my apps are scattered and they're cloudy
they have no borders, no boundaries
 1.16 24-Aug-2010  pooka Implement enough of a SCSI target to be able to perform tests on
our SCSIPI driver stack. Currently we pretend to be a single CD
controller with an optional host file as the image, but I guess
the sky's the limit.

dmesg porn:
NetBSD 5.99.39 (RUMP-ROAST) #0: Mon Aug 23 11:38:16 CEST 2010
pooka@pain-rustique.localhost:/usr/allsrc/src/sys/rump/librump/rumpkern
total memory = unlimited (host limit)
timecounter: Timecounters tick every 10.000 msec
timecounter: Timecounter "rumpclk" frequency 100 Hz quality 0
root file system type: rumpfs
mainbus0 (root)
scsitest0 at mainbus0
scsibus0 at scsitest0: 2 targets, 1 lun per target
cd0 at scsibus0 target 1 lun 0: <RUMPHOBO, It's a LIE, 0.00> cdrom removable
 1.15 23-Aug-2010  pooka Split scsipi out of librumpdev_umass into librumpdev_scsipi. umass
still compile time depends on scsipi in the sense of "ifdef
NATAPIBLUES", but I'm not going to fix that now.
 1.14 30-Jun-2010  pooka Make putter its own component: rumpdev_putter. It was coupled in
with rumpfs_puffs for prehistoric reasons which are no longer valid
(namely, only fs components existed back then and there was no /dev
support in rump fs namespace).
 1.13 01-May-2010  pooka remember to add audio to the list of device components
 1.12 01-May-2010  pooka support pad(4)
 1.11 12-Apr-2010  pooka support file system snapshot device
 1.10 22-Mar-2010  pooka USB bluetooth device rump component.

This is a curious driver in the sense that unlike all other current
device drivers, it does not require vfs. This is because the driver
is controlled via bluetooth, which is controlled via PF_BLUETOOTH
sockets (as opposed to a /dev node).
 1.9 11-Feb-2010  pooka branches: 1.9.2;
Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.8 31-Jan-2010  pooka branches: 1.8.2;
Add sysmon rump component.
 1.7 19-Jan-2010  pooka Add bpf rump component (and put in some wscons stuff i forgot to earlier).
 1.6 04-Dec-2009  haad Add initial version of RUMP based device-mapper port. libdm compile whole
device-mapper driver in userspace and allows us to test a develop new dm targets
in userspace.
 1.5 11-Oct-2009  pooka raidframe works well enough now to initialize parity, so install it.
 1.4 08-Sep-2009  pooka Build and install cgd, disk and rnd rump device components.
 1.3 04-Sep-2009  pooka build & install librumpdev_netsmb and librumpfs_smbfs components
 1.2 20-Jul-2009  pooka Add cgd rump kernel component.
 1.1 09-Jun-2009  pooka branches: 1.1.2;
Checkpoint a bunch of work-in-progress: support for disk devices
and raidframe. Raidframe works well enough to configure a raid in
the rump kernel, but the usage is "interesting" (pending some other
changes/cleanup from other parts in my tree).

These are not built by default yet.
 1.1.2.7 09-Oct-2010  yamt sync with head
 1.1.2.6 11-Aug-2010  yamt sync with head.
 1.1.2.5 11-Mar-2010  yamt sync with head
 1.1.2.4 16-Sep-2009  yamt sync with head
 1.1.2.3 19-Aug-2009  yamt sync with head.
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 09-Jun-2009  yamt file Makefile.rumpdev was added on branch yamt-nfs-mp on 2009-06-20 07:20:35 +0000
 1.8.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.8.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.8.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.9.2.3 05-Mar-2011  rmind sync with head
 1.9.2.2 03-Jul-2010  rmind sync with head
 1.9.2.1 30-May-2010  rmind sync with head
 1.25 04-Apr-2020  christos more smb removal.
 1.24 17-Apr-2017  riastradh branches: 1.24.12;
New rndsource driver for Araneus Alea II TRNG USB devices.

Disabled by default in x86/GENERIC and usbdevices.config pending
review and testing without rump ugenhc in the way, but enabled in
x86/ALL for compile-testing.

(Hi gson! Finally found a round tuit in my pocket, next to a certain
rectangular one.)
 1.23 15-Nov-2015  pooka branches: 1.23.2; 1.23.4;
Always descend into component directories for rumpdescribe.
 1.22 01-Nov-2015  pooka add virtio-scsi component
 1.21 03-Jun-2015  pooka add rump kernel component for the auich driver

contributed by Robert Millan <rmh@freebsd.org> via private email
 1.20 20-May-2015  pooka Add a rump kernel components for USB PCI host controllers.
 1.19 19-Nov-2014  pooka branches: 1.19.2;
On second thought, let's not build the rump kernel component for ac97
by default. The component is not used on a NetBSD target anyway.
 1.18 19-Nov-2014  pooka Add hdaudio driver as a rump kernel component

tested by booting a rump kernel on a T61, coupled with a client which
writes some Roy Buchanan to /dev/audio
 1.17 18-Nov-2014  pooka add ac97 component
for use with eap and others
 1.16 18-Nov-2014  pooka Add eap PCI audio driver.

tested by playing audio with rump kernel booted on qemu with -soundhw es1370
 1.15 06-Nov-2014  pooka Add rump kernel component for viornd

tested: qemu -device virtio-rng-pci
 1.14 22-Aug-2014  pooka Build virtio components as part of RUMPPCIDEVS
 1.13 13-Aug-2014  pooka Add component for the pcnet PCI driver to rump kernels. Virtualbox
emulates it by default, so it's nice-to-have for that.
 1.12 17-Jul-2014  prlw1 Add vnd support to rump
 1.11 24-Apr-2014  pooka scsitest is a SCSI target emulator used by one test, and has little
reason to get installed. Make the component private to the test using
it and obsolete the installed one.

IOW, rename sys/rump/dev/lib/libscsitest -> tests/dev/scsipi/libscsitest
 1.10 14-Apr-2014  pooka fix typo
 1.9 07-Apr-2014  pooka Add a rump kernel component for the iwn wireless driver, tested with
the one in my laptop:
iwn0 at pci0 dev 19 function 0: vendor 0x8086 product 0x4237 (rev. 0x00)
 1.8 04-Apr-2014  pooka branches: 1.8.2;
Add PCI components, commented out from the default build for now.
 1.7 14-Jan-2014  pgoyette Link new opencrypto library into the build.
 1.6 31-Mar-2011  pooka branches: 1.6.4; 1.6.14; 1.6.18;
add pud as a rump component
 1.5 07-Dec-2010  pooka branches: 1.5.2; 1.5.6;
add drvctl component
 1.4 07-Dec-2010  pooka haad removed 64bit atomic ops from dm, so put it back on the MI all list
 1.3 05-Dec-2010  pooka dm uses non-MI 64bit atomic ops, so don't include it in the default list.
 1.2 05-Dec-2010  pooka Leave usb-stuff out of alldevs until DELAY() is mi.
 1.1 05-Dec-2010  pooka Rename Makefile.rump${x} to Makefile.rump${x}comp for consistency.
 1.5.6.3 21-Apr-2011  rmind sync with head
 1.5.6.2 05-Mar-2011  rmind sync with head
 1.5.6.1 07-Dec-2010  rmind file Makefile.rumpdevcomp was added on branch rmind-uvmplock on 2011-03-05 20:56:05 +0000
 1.5.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.6.18.1 18-May-2014  rmind sync with head
 1.6.14.2 03-Dec-2017  jdolecek update from HEAD
 1.6.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.2.1 10-Aug-2014  tls Rebase.
 1.19.2.3 28-Aug-2017  skrll Sync with HEAD
 1.19.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.19.2.1 06-Jun-2015  skrll Sync with HEAD
 1.23.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.23.2.1 26-Apr-2017  pgoyette Sync with HEAD
 1.24.12.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.5 16-Nov-2015  pooka Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.4 17-Sep-2013  pooka branches: 1.4.6;
allow pcibus to attach to a rump kernel mainbus
 1.3 24-Aug-2010  pooka branches: 1.3.8; 1.3.18; 1.3.22;
Implement enough of a SCSI target to be able to perform tests on
our SCSIPI driver stack. Currently we pretend to be a single CD
controller with an optional host file as the image, but I guess
the sky's the limit.

dmesg porn:
NetBSD 5.99.39 (RUMP-ROAST) #0: Mon Aug 23 11:38:16 CEST 2010
pooka@pain-rustique.localhost:/usr/allsrc/src/sys/rump/librump/rumpkern
total memory = unlimited (host limit)
timecounter: Timecounters tick every 10.000 msec
timecounter: Timecounter "rumpclk" frequency 100 Hz quality 0
root file system type: rumpfs
mainbus0 (root)
scsitest0 at mainbus0
scsibus0 at scsitest0: 2 targets, 1 lun per target
cd0 at scsibus0 target 1 lun 0: <RUMPHOBO, It's a LIE, 0.00> cdrom removable
 1.2 08-Mar-2010  pooka branches: 1.2.2; 1.2.4; 1.2.6;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.1 12-Feb-2010  pooka move files.rump out of wip
 1.2.6.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.2.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.6.1 08-Mar-2010  uebayasi file files.rump was added on branch uebayasi-xip on 2010-04-30 14:44:23 +0000
 1.2.4.1 05-Mar-2011  rmind sync with head
 1.2.2.3 09-Oct-2010  yamt sync with head
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 08-Mar-2010  yamt file files.rump was added on branch yamt-nfs-mp on 2010-03-11 15:04:32 +0000
 1.3.22.1 18-May-2014  rmind sync with head
 1.3.18.2 03-Dec-2017  jdolecek update from HEAD
 1.3.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2 05-Dec-2010  pooka Rename Makefile.rump${x} to Makefile.rump${x}comp for consistency.
 1.1 09-Jun-2009  pooka branches: 1.1.2; 1.1.6;
Checkpoint a bunch of work-in-progress: support for disk devices
and raidframe. Raidframe works well enough to configure a raid in
the rump kernel, but the usage is "interesting" (pending some other
changes/cleanup from other parts in my tree).

These are not built by default yet.
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 09-Jun-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-06-20 07:20:35 +0000
 1.8 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.7 17-Nov-2015  pooka Fix argument to empty()

Guess none of the fast-running tests exercised the
component being initialized ...
 1.6 16-Nov-2015  pooka Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.5 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.4 24-Aug-2015  pooka continue consolidating non-modular option files
 1.3 01-Mar-2010  pooka branches: 1.3.20; 1.3.38;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.2 04-Sep-2009  pooka branches: 1.2.2;
build & install librumpdev_netsmb and librumpfs_smbfs components
 1.1 09-Jun-2009  pooka branches: 1.1.2;
Checkpoint a bunch of work-in-progress: support for disk devices
and raidframe. Raidframe works well enough to configure a raid in
the rump kernel, but the usage is "interesting" (pending some other
changes/cleanup from other parts in my tree).

These are not built by default yet.
 1.1.2.4 11-Mar-2010  yamt sync with head
 1.1.2.3 16-Sep-2009  yamt sync with head
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 09-Jun-2009  yamt file Makefile.inc was added on branch yamt-nfs-mp on 2009-06-20 07:20:35 +0000
 1.2.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.38.3 19-Mar-2016  skrll Sync with HEAD
 1.3.38.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.38.1 22-Sep-2015  skrll Sync with HEAD
 1.3.20.1 03-Dec-2017  jdolecek update from HEAD
 1.3 26-Jan-2016  pooka branches: 1.3.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 16-Nov-2015  pooka branches: 1.2.2;
Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.1 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2.2.3 19-Mar-2016  skrll Sync with HEAD
 1.2.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.2.1 16-Nov-2015  skrll file component_simple.c was added on branch nick-nhusb on 2015-12-27 12:10:08 +0000
 1.3.16.2 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 26-Jan-2016  jdolecek file component_simple.c was added on branch tls-maxphys on 2017-12-03 11:39:06 +0000
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6;
add audio(4) support
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file AUDIO.ioconf was added on branch uebayasi-xip on 2010-08-17 06:47:53 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file AUDIO.ioconf was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file AUDIO.ioconf was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.7 08-May-2019  isaki Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.6 01-Jun-2017  pgoyette branches: 1.6.10; 1.6.12;
Add infrastructure for modularization of audio, midi, and sequencer
 1.5 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 18-Nov-2014  nonaka branches: 1.3.2;
Adopy recent software volume control change.
 1.2 13-Mar-2014  pooka branches: 1.2.4;
rename component.c -> audio_component.c
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24; 1.1.28;
add audio(4) support
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.2 03-Dec-2017  jdolecek update from HEAD
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-08-17 06:47:53 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.2.4.1 23-Nov-2014  snj Pull up following revision(s) (requested by jmcneill in ticket #249):
sys/rump/dev/lib/libaudio/Makefile: revision 1.3
sys/rump/dev/lib/libpad/Makefile: revision 1.4
Adopy recent software volume control change.
 1.3.2.3 28-Aug-2017  skrll Sync with HEAD
 1.3.2.2 19-Mar-2016  skrll Sync with HEAD
 1.3.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.6.12.1 07-May-2019  isaki Fix paths and flags.
- aurateconv is gone. mulaw is a part of audio inseparably.
 1.6.10.1 10-Jun-2019  christos Sync with HEAD
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6;
add audio(4) support
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file audio.h was added on branch uebayasi-xip on 2010-08-17 06:47:53 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file audio.h was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file audio.h was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.5 08-May-2019  isaki Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.4 01-Jun-2017  pgoyette branches: 1.4.10; 1.4.12;
Add infrastructure for modularization of audio, midi, and sequencer
 1.3 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 08-Jun-2015  pooka create /dev/{audio,sound,mixer,audioctl} -> foo0 symlinks

from Robert Millan <rmh@freebsd.org> via rumpkernel-users
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> audio_component.c
 1.1.12.3 28-Aug-2017  skrll Sync with HEAD
 1.1.12.2 19-Mar-2016  skrll Sync with HEAD
 1.1.12.1 22-Sep-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file audio_component.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file audio_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file audio_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:14 +0000
 1.4.12.1 04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.4.10.1 10-Jun-2019  christos Sync with HEAD
 1.2 08-May-2019  isaki Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.66; 1.1.68;
add audio(4) support
 1.1.68.1 07-May-2019  isaki Fix paths and flags.
- aurateconv is gone. mulaw is a part of audio inseparably.
 1.1.66.1 10-Jun-2019  christos Sync with HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file aurateconv.h was added on branch uebayasi-xip on 2010-08-17 06:47:53 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file aurateconv.h was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file aurateconv.h was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.3 13-Mar-2014  pooka rename component.c -> audio_component.c
 1.2 25-Feb-2011  riz branches: 1.2.4; 1.2.14; 1.2.18;
Use AUDIO_DEVICE instead of 0 as the minor number for /dev/audio since
0 is incorrect. While I'm here, add /dev/sound, audioctl, and mixer too.

ok pooka@
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.10;
add audio(4) support
 1.1.10.1 05-Mar-2011  bouyer Sync with HEAD
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file component.c was added on branch uebayasi-xip on 2010-08-17 06:47:54 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.2.3 05-Mar-2011  rmind sync with head
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file component.c was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.2.18.1 18-May-2014  rmind sync with head
 1.2.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6;
add audio(4) support
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file midi.h was added on branch uebayasi-xip on 2010-08-17 06:47:54 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file midi.h was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file midi.h was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.2 08-May-2019  isaki Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.66; 1.1.68;
add audio(4) support
 1.1.68.1 07-May-2019  isaki Fix paths and flags.
- aurateconv is gone. mulaw is a part of audio inseparably.
 1.1.66.1 10-Jun-2019  christos Sync with HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file mulaw.h was added on branch uebayasi-xip on 2010-08-17 06:47:54 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file mulaw.h was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file mulaw.h was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
add audio(4) support
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-08-17 06:47:54 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.2 19-Oct-2015  pooka branches: 1.2.16;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 18-Nov-2014  pooka branches: 1.1.2;
add ac97 component
for use with eap and others
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 19-Oct-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:06 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 18-Nov-2014  pooka branches: 1.1.2;
add ac97 component
for use with eap and others
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 13-Mar-2014  pooka branches: 1.2.6;
rename component.c -> bpf_component.c
 1.1 19-Jan-2010  pooka branches: 1.1.4; 1.1.14; 1.1.24; 1.1.28;
Add bpf rump component (and put in some wscons stuff i forgot to earlier).
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.2 03-Dec-2017  jdolecek update from HEAD
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 11-Mar-2010  yamt sync with head
 1.1.4.1 19-Jan-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:32 +0000
 1.2.6.2 19-Mar-2016  skrll Sync with HEAD
 1.2.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4 28-Mar-2022  riastradh driver(9): devsw_detach never fails. Make it return void.

Prune a whole lotta dead branches as a result of this. (Some logic
calling this is also wrong for other reasons; devsw_detach is final
-- you should never have any reason to decide to roll it back. To be
cleaned up in subsequent commits...)

XXX kernel ABI change to devsw_detach signature requires bump
 1.3 19-Jul-2016  pgoyette Fix regression introduced in tests/net/bpf and tests/net/bpfilter

The rump code needs to call devsw_attach() in order to assign a dev_major
for bpf; it then uses this to create rumps /dev/bpf node. Unfortunately,
this leaves the devsw attached, so when the bpf module tries to initialize
itself, it gets an EEXIST error and fails.

So, once rump has figured what the dev_major should be, call devsw_detach()
to remove the devsw. Then, when the module initialization code calls
devsw_attach() it will succeed.
 1.2 26-Jan-2016  pooka branches: 1.2.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> bpf_component.c
 1.1.12.2 05-Oct-2016  skrll Sync with HEAD
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file bpf_component.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file bpf_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file bpf_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.2.2.1 19-Jul-2016  pgoyette Instead of repeatedly typing the conditional initialization of the
.d_localcount members in the various {b,c}devsw, define an initializer
macro and use it. This also removes the need for defining new symbols
for each 'struct localcount'.

As suggested by riastradh@
 1.5 13-Mar-2014  pooka rename component.c -> bpf_component.c
 1.4 07-Mar-2013  pooka branches: 1.4.6;
In retrospect, putting bpf under the dev faction wasn't the smartest
thing to do (might have just as well put it under vfs). It's maybe too
late to change the name/location, but at least make it attach as part
of net so that using bpf does not mandate linking in the dev faction.
 1.3 01-Mar-2010  pooka branches: 1.3.2; 1.3.12; 1.3.22;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.2 26-Jan-2010  pooka branches: 1.2.2;
let attach via module space
 1.1 19-Jan-2010  pooka Add bpf rump component (and put in some wscons stuff i forgot to earlier).
 1.2.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.22.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.22.1 23-Jun-2013  tls resync from head
 1.3.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.2.2 11-Mar-2010  yamt sync with head
 1.3.2.1 01-Mar-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:32 +0000
 1.4.6.1 18-May-2014  rmind sync with head
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 19-Jan-2010  pooka branches: 1.1.4; 1.1.24; 1.1.42;
Add bpf rump component (and put in some wscons stuff i forgot to earlier).
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 11-Mar-2010  yamt sync with head
 1.1.4.1 19-Jan-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:32 +0000
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
use ioconf files for pseudo-device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file CGD.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:06 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file CGD.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:12 +0000
 1.7 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.6 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.5 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.4 13-Mar-2014  pooka branches: 1.4.6;
rename component.c -> cgd_component.c
 1.3 16-Feb-2010  pooka branches: 1.3.10; 1.3.20; 1.3.24;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.2 07-Sep-2009  pooka branches: 1.2.2;
ketchup: rump_dev_makenodes() -> rump_vfs_makedevnodes()
 1.1 20-Jul-2009  pooka branches: 1.1.2;
Add cgd rump kernel component.
 1.1.2.4 11-Mar-2010  yamt sync with head
 1.1.2.3 16-Sep-2009  yamt sync with head
 1.1.2.2 19-Aug-2009  yamt sync with head.
 1.1.2.1 20-Jul-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-08-19 18:48:26 +0000
 1.2.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.24.1 18-May-2014  rmind sync with head
 1.3.20.2 03-Dec-2017  jdolecek update from HEAD
 1.3.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.6.3 19-Mar-2016  skrll Sync with HEAD
 1.4.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.6.1 22-Sep-2015  skrll Sync with HEAD
 1.3 25-Jul-2016  pgoyette When initializing the rump cgd component, use the correct driver name
(as found in the devsw_conv[] table). This will get us the "official"
major numbers for the cgd device.

After creating the rump file-space nodes for /dev/cgd* we then need to
detach the [bc]devsw's because normal module initialization will do its
own attachment, and we don't want that to fail.

While here, since we're doing the devsw_attach() twice, share the
results from the first call rather than starting from scratch.
 1.2 26-Jan-2016  pooka branches: 1.2.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> cgd_component.c
 1.1.12.2 05-Oct-2016  skrll Sync with HEAD
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file cgd_component.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file cgd_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file cgd_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.2.2.3 24-Jul-2016  pgoyette since we're now attached the [bc]devsw's, grabbing the assigned majors,
and then detaching (in anticipation of the driver module doing its own
attach), we need to make sure that the driver name matches what is
expected in devsw_attach(). In particular, the driver name is "cgd"
and not "/dev/cgd0" :)

While here, we might as well record the major numbers from the first
call, and just reuse them later. So make the module's variables global,
and reference them in the rump initialization code.

Yay - cgd now works in the localcount world, both as a kernel module
and as a rump component.
 1.2.2.2 23-Jul-2016  pgoyette Use correct function name - devsw_detach() vs cdevsw_detach()
----------------------------------------------------------------------
 1.2.2.1 23-Jul-2016  pgoyette The rump_cgd component needs to do an early cdevsw_attact() to figure
out the device major numbers being used. But we then need to detach
the [bc]devsw's to allow them to get attached normally during module
initialization.
 1.8 13-Mar-2014  pooka rename component.c -> cgd_component.c
 1.7 09-Mar-2011  pooka branches: 1.7.4; 1.7.14; 1.7.18;
Create cgd block device files in the right directory.
hi pooka!
 1.6 01-Mar-2010  pooka branches: 1.6.2; 1.6.4;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.5 13-Jan-2010  pooka branches: 1.5.2;
cgd is attached via the module interface now instead of pseudodevs.
 1.4 03-Dec-2009  pooka * create /dev on the rump rootfs automatically
* make rump_vfs_makedevnodes() take a full basepath instead of hardcoding
an assumption that the device node is created in /dev
+ the caller is responsible that the directory the nodes are being
created in exists
 1.3 01-Dec-2009  pooka whitespace
 1.2 07-Sep-2009  pooka ketchup: rump_dev_makenodes() -> rump_vfs_makedevnodes()
 1.1 20-Jul-2009  pooka branches: 1.1.2;
Add cgd rump kernel component.
 1.1.2.4 11-Mar-2010  yamt sync with head
 1.1.2.3 16-Sep-2009  yamt sync with head
 1.1.2.2 19-Aug-2009  yamt sync with head.
 1.1.2.1 20-Jul-2009  yamt file component.c was added on branch yamt-nfs-mp on 2009-08-19 18:48:26 +0000
 1.5.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.6.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.6.2.1 21-Apr-2011  rmind sync with head
 1.7.18.1 18-May-2014  rmind sync with head
 1.7.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 20-Jul-2009  pooka branches: 1.1.2; 1.1.24; 1.1.42;
Add cgd rump kernel component.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.2.2 19-Aug-2009  yamt sync with head.
 1.1.2.1 20-Jul-2009  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-08-19 18:48:26 +0000
 1.10 05-Apr-2019  christos need subr_disklabel.c
 1.9 19-Oct-2015  pooka branches: 1.9.18;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.8 16-May-2015  pooka Satisfy yet another non-modular driver still requiring a manual init call.
 1.7 16-Feb-2010  pooka branches: 1.7.20; 1.7.38;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.6 23-Nov-2009  pooka branches: 1.6.2;
If cpu_disklabel includes struct dkbad, define __HAVE_DISKLABEL_DKBAD.
This allows use of subr_disk_mbr on all archs. Default to it for
the rump disk component. No functional change for regular kernels.
(The other option would've been to include dkbad in disklabels
everywhere, but arguably this approach has less possible side-effects,
especially given that wedges and related magic will take over the
world any second now).
 1.5 23-Nov-2009  pooka kern_physio is already provided by rumpvfs
 1.4 06-Oct-2009  pooka Build proper version for i386 (since it works) and dummy versions
for the rest until the disklabel MD problems get sorted out.
 1.3 11-Sep-2009  pooka librumpdev_disk doesn't compile on a lot of platforms, so replace
it with a dummy for now until I can work out the problems (nothing
in-tree links against it yet).
 1.2 07-Sep-2009  pooka remember to build opendisk
 1.1 09-Jun-2009  pooka branches: 1.1.2;
Checkpoint a bunch of work-in-progress: support for disk devices
and raidframe. Raidframe works well enough to configure a raid in
the rump kernel, but the usage is "interesting" (pending some other
changes/cleanup from other parts in my tree).

These are not built by default yet.
 1.1.2.4 11-Mar-2010  yamt sync with head
 1.1.2.3 16-Sep-2009  yamt sync with head
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 09-Jun-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-06-20 07:20:35 +0000
 1.6.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.7.38.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.7.38.1 06-Jun-2015  skrll Sync with HEAD
 1.7.20.1 03-Dec-2017  jdolecek update from HEAD
 1.9.18.1 10-Jun-2019  christos Sync with HEAD
 1.2 26-Jan-2016  pooka branches: 1.2.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 16-May-2015  pooka branches: 1.1.2;
Satisfy yet another non-modular driver still requiring a manual init call.
 1.1.2.3 19-Mar-2016  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 16-May-2015  skrll file disk_component.c was added on branch nick-nhusb on 2015-06-06 14:40:26 +0000
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 26-Jan-2016  jdolecek file disk_component.c was added on branch tls-maxphys on 2017-12-03 11:39:06 +0000
 1.2 30-Jan-2010  pooka no longer used
 1.1 11-Sep-2009  pooka branches: 1.1.2;
librumpdev_disk doesn't compile on a lot of platforms, so replace
it with a dummy for now until I can work out the problems (nothing
in-tree links against it yet).
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 16-Sep-2009  yamt sync with head
 1.1.2.1 11-Sep-2009  yamt file dummy.c was added on branch yamt-nfs-mp on 2009-09-16 13:38:04 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 09-Jun-2009  pooka branches: 1.1.2; 1.1.24; 1.1.42;
Checkpoint a bunch of work-in-progress: support for disk devices
and raidframe. Raidframe works well enough to configure a raid in
the rump kernel, but the usage is "interesting" (pending some other
changes/cleanup from other parts in my tree).

These are not built by default yet.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 09-Jun-2009  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-06-20 07:20:35 +0000
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
use ioconf files for pseudo-device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file DM.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:07 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file DM.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:12 +0000
 1.8 17-Dec-2019  mlelstv Add error and zero targets to build.
 1.7 26-Jan-2016  pooka branches: 1.7.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.6 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.5 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.4 13-Mar-2014  pooka branches: 1.4.6;
rename component.c -> dm_component.c
 1.3 07-Jun-2010  pooka branches: 1.3.8; 1.3.18; 1.3.22;
Rump components do not, at least for now, get to tell what's NEEDED.
 1.2 16-Feb-2010  pooka branches: 1.2.2; 1.2.4;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 04-Dec-2009  haad branches: 1.1.2;
Add initial version of RUMP based device-mapper port. libdm compile whole
device-mapper driver in userspace and allows us to test a develop new dm targets
in userspace.
 1.1.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.4.1 03-Jul-2010  rmind sync with head
 1.2.2.3 11-Aug-2010  yamt sync with head.
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 16-Feb-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.3.22.1 18-May-2014  rmind sync with head
 1.3.18.2 03-Dec-2017  jdolecek update from HEAD
 1.3.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.6.3 19-Mar-2016  skrll Sync with HEAD
 1.4.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.6.1 22-Sep-2015  skrll Sync with HEAD
 1.7.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.4 13-Mar-2014  pooka rename component.c -> dm_component.c
 1.3 12-Oct-2010  pooka branches: 1.3.8; 1.3.18; 1.3.22;
Don't attach as pseudo device here. This driver does attach in modcmd.
 1.2 01-Mar-2010  pooka branches: 1.2.2; 1.2.4;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 04-Dec-2009  haad branches: 1.1.2;
Add initial version of RUMP based device-mapper port. libdm compile whole
device-mapper driver in userspace and allows us to test a develop new dm targets
in userspace.
 1.1.2.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.4.1 05-Mar-2011  rmind sync with head
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 01-Mar-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.3.22.1 18-May-2014  rmind sync with head
 1.3.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> dm_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file dm_component.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file dm_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file dm_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 04-Dec-2009  haad branches: 1.1.4; 1.1.24; 1.1.42;
Add initial version of RUMP based device-mapper port. libdm compile whole
device-mapper driver in userspace and allows us to test a develop new dm targets
in userspace.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 11-Mar-2010  yamt sync with head
 1.1.4.1 04-Dec-2009  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.1 07-Dec-2010  pooka branches: 1.1.6;
add drvctl component
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 07-Dec-2010  rmind file DRVCTL.ioconf was added on branch rmind-uvmplock on 2011-03-05 20:56:06 +0000
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 13-Mar-2014  pooka branches: 1.2.6;
rename component.c -> drvctl_component.c
 1.1 07-Dec-2010  pooka branches: 1.1.6; 1.1.10; 1.1.20; 1.1.24;
add drvctl component
 1.1.24.1 18-May-2014  rmind sync with head
 1.1.20.2 03-Dec-2017  jdolecek update from HEAD
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 07-Dec-2010  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:06 +0000
 1.2.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3 13-Mar-2014  pooka rename component.c -> drvctl_component.c
 1.2 10-Apr-2012  gson branches: 1.2.2; 1.2.4;
Fix cut-and-paste-os in panic messages
 1.1 07-Dec-2010  pooka branches: 1.1.6; 1.1.10; 1.1.14;
add drvctl component
 1.1.14.1 29-Apr-2012  mrg sync to latest -current.
 1.1.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.10.1 17-Apr-2012  yamt sync with head
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 07-Dec-2010  rmind file component.c was added on branch rmind-uvmplock on 2011-03-05 20:56:06 +0000
 1.2.4.1 18-May-2014  rmind sync with head
 1.2.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5 28-Mar-2022  riastradh driver(9): devsw_detach never fails. Make it return void.

Prune a whole lotta dead branches as a result of this. (Some logic
calling this is also wrong for other reasons; devsw_detach is final
-- you should never have any reason to decide to roll it back. To be
cleaned up in subsequent commits...)

XXX kernel ABI change to devsw_detach signature requires bump
 1.4 15-Jan-2017  pgoyette We no longer need ioconf.c - remove it to avoid "defined but not used"
compiler error.
 1.3 14-Jan-2017  pgoyette Don't call the drvctl module's initialization code during rump component
initialization. Instead, temporarily attach the drvctl's cdevsw to
determine its device c-major, create the /dev/drvctl node using that
c-major, and then detach. This leaves things in a state where normal
module initialization can run.

Since we're now creating the /dev/drvctl device node correctly, we don't
need to create it again. So mark the device as DEVNODE_DONTBOTHER in
the devsw_conv0 conversion table.

This bug was introduced more than a year ago (src/sys/kern/kern_drvctl.c
rev 1.40), but was silently ignored except when running a rump_server
built with LOCKDEBUG.
 1.2 26-Jan-2016  pooka branches: 1.2.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> drvctl_component.c
 1.1.12.2 05-Feb-2017  skrll Sync with HEAD
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file drvctl_component.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file drvctl_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:11 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file drvctl_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.2.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 07-Dec-2010  pooka branches: 1.1.6; 1.1.20; 1.1.38;
add drvctl component
 1.1.38.1 06-Apr-2015  skrll Sync with HEAD
 1.1.20.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 07-Dec-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:06 +0000
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
use ioconf files for pseudo-device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file FSS.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:07 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file FSS.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:12 +0000
 1.5 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.2 13-Mar-2014  pooka branches: 1.2.6;
rename component.c -> fss_component.c
 1.1 12-Apr-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24; 1.1.28;
support file system snapshot device
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.2 03-Dec-2017  jdolecek update from HEAD
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 12-Apr-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 12-Apr-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 12-Apr-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.2.6.3 19-Mar-2016  skrll Sync with HEAD
 1.2.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.6.1 22-Sep-2015  skrll Sync with HEAD
 1.2 13-Mar-2014  pooka rename component.c -> fss_component.c
 1.1 12-Apr-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24; 1.1.28;
support file system snapshot device
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 12-Apr-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 12-Apr-2010  rmind file component.c was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 12-Apr-2010  uebayasi file component.c was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.4 30-Jul-2016  pgoyette Fix variable names in previous
 1.3 30-Jul-2016  pgoyette More adaptation of the rump component init, to avoid EEXIST during
regular module initialization.
 1.2 26-Jan-2016  pooka branches: 1.2.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> fss_component.c
 1.1.12.2 05-Oct-2016  skrll Sync with HEAD
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file fss_component.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file fss_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file fss_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.2.2.2 06-Aug-2016  pgoyette Sync with HEAD
 1.2.2.1 31-Jul-2016  pgoyette When initializing the rump component, detach the [bc]devsw after
using the devmajors to create the device nodes. Normal module
initialization will reattach them.

XXX This code sequence is fairly common, and probably should be
XXX extracted into a separate routine and/or macro. But there's
XXX a lot of variables/parameters involved...
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 12-Apr-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
support file system snapshot device
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 12-Apr-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:00 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 12-Apr-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 12-Apr-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.2 19-Oct-2015  pooka branches: 1.2.16;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 19-Nov-2014  pooka branches: 1.1.2;
Add hdaudio driver as a rump kernel component

tested by booting a rump kernel on a T61, coupled with a client which
writes some Roy Buchanan to /dev/audio
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 19-Oct-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:07 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 19-Nov-2014  pooka branches: 1.1.2;
Add hdaudio driver as a rump kernel component

tested by booting a rump kernel on a T61, coupled with a client which
writes some Roy Buchanan to /dev/audio
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.1 22-Nov-2010  pooka branches: 1.1.6;
Add rump component for md(4).

Now, let's say you start a rump server and configure a memory disk
on it. Remote (as in TCP remote) clients may now access that
memory.

cloudy, my apps are scattered and they're cloudy
they have no borders, no boundaries
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 22-Nov-2010  rmind file MD.ioconf was added on branch rmind-uvmplock on 2011-03-05 20:56:06 +0000
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 17-Mar-2014  pooka branches: 1.2.6;
rename component.c -> md_component.c
 1.1 22-Nov-2010  pooka branches: 1.1.6; 1.1.10; 1.1.20; 1.1.24;
Add rump component for md(4).

Now, let's say you start a rump server and configure a memory disk
on it. Remote (as in TCP remote) clients may now access that
memory.

cloudy, my apps are scattered and they're cloudy
they have no borders, no boundaries
 1.1.24.1 18-May-2014  rmind sync with head
 1.1.20.2 03-Dec-2017  jdolecek update from HEAD
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 22-Nov-2010  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:06 +0000
 1.2.6.2 19-Mar-2016  skrll Sync with HEAD
 1.2.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4 17-Mar-2014  pooka rename component.c -> md_component.c
 1.3 04-Apr-2013  pooka branches: 1.3.4;
create device nodes
 1.2 10-Apr-2012  gson branches: 1.2.2;
Fix cut-and-paste-os in panic messages
 1.1 22-Nov-2010  pooka branches: 1.1.6; 1.1.10; 1.1.14;
Add rump component for md(4).

Now, let's say you start a rump server and configure a memory disk
on it. Remote (as in TCP remote) clients may now access that
memory.

cloudy, my apps are scattered and they're cloudy
they have no borders, no boundaries
 1.1.14.1 29-Apr-2012  mrg sync to latest -current.
 1.1.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.10.1 17-Apr-2012  yamt sync with head
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 22-Nov-2010  rmind file component.c was added on branch rmind-uvmplock on 2011-03-05 20:56:06 +0000
 1.2.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.2.1 23-Jun-2013  tls resync from head
 1.3.4.1 18-May-2014  rmind sync with head
 1.3 31-Mar-2022  pgoyette For device modules that provide both auto-config and /dev/xxx
interfaces, make sure that initialization and destruction
follow the proper sequence. This is triggered by the recent
changes to the devsw stuff; per riastradh@ the required call
sequence is:

devsw_attach()
config_init_component() or config_cf*_attach()
...
config_fini_component() or config_cf*_detach()
devsw_detach()

While here, add a few missing calls to some of the detach
routines.

Testing of these changes has been limited to:
1. compile without build break
2. no related test failures from atf
3. modload/modunload work as well as
before.

No functional device testing done, since I don't have any
of these devices. Let me know of any damage I might cause
here!

XXX Some of the modules affected by this commit are already
XXX broken; see kern/56772. This commit does not break
any additional modules (as far as I know).
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 17-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> md_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 17-Mar-2014  tls file md_component.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 17-Mar-2014  yamt file md_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 17-Mar-2014  rmind file md_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 22-Nov-2010  pooka branches: 1.1.6; 1.1.20; 1.1.38;
Add rump component for md(4).

Now, let's say you start a rump server and configure a memory disk
on it. Remote (as in TCP remote) clients may now access that
memory.

cloudy, my apps are scattered and they're cloudy
they have no borders, no boundaries
 1.1.38.1 06-Apr-2015  skrll Sync with HEAD
 1.1.20.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 22-Nov-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:06 +0000
 1.1 04-Apr-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Add a rump kernel component for mii support and phy drivers.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 04-Apr-2014  tls file MIIPHY.ioconf was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file MIIPHY.ioconf was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file MIIPHY.ioconf was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.6 16-Nov-2015  pooka Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.5 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 24-Aug-2015  pooka opt files were nop't
 1.2 26-May-2014  pooka branches: 1.2.4; 1.2.6;
mvphy is not configured, so don't try to build it
 1.1 04-Apr-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Add a rump kernel component for mii support and phy drivers.
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file Makefile was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.2.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.6.1 22-Sep-2015  skrll Sync with HEAD
 1.2.4.3 03-Dec-2017  jdolecek update from HEAD
 1.2.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.4.1 26-May-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 04-Apr-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add a rump kernel component for mii support and phy drivers.
 1.1.12.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 04-Apr-2014  tls file phy_at_mii.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file phy_at_mii.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file phy_at_mii.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 04-Apr-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add a rump kernel component for mii support and phy drivers.
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 04-Apr-2014  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file shlib_version was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.2 03-Feb-2014  pgoyette Undo previous - it still needs a lot more work.

For now, we'll use the hand-crafted cf* structures and directly
call all the config routines.
 1.1 31-Jan-2014  pgoyette Use ioconf file to generate config data structures
 1.10 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.9 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.8 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.7 13-Mar-2014  pooka branches: 1.7.4; 1.7.6; 1.7.10; 1.7.12;
rename component.c -> opencrypto_component.c
 1.6 03-Feb-2014  pgoyette Undo previous - it still needs a lot more work.

For now, we'll use the hand-crafted cf* structures and directly
call all the config routines.
 1.5 31-Jan-2014  pgoyette Use ioconf file to generate config data structures
 1.4 16-Jan-2014  pgoyette Don't bring in the zlib stuff at build time. This will get resolved
when the user starts the rump_server process.

OK pooka@
 1.3 16-Jan-2014  pgoyette Use existing rumpkern_z library rather than including another copy of
zlib.c
 1.2 16-Jan-2014  pgoyette Remove explicit definition of COMPAT_50. As pointed out by pooka@,
this is already defined in Makefile.rump
 1.1 14-Jan-2014  pgoyette Add new rump library for opencrypto framework
 1.7.12.3 19-Mar-2016  skrll Sync with HEAD
 1.7.12.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.7.12.1 22-Sep-2015  skrll Sync with HEAD
 1.7.10.3 03-Dec-2017  jdolecek update from HEAD
 1.7.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.10.1 13-Mar-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.7.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.6.1 13-Mar-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.7.4.2 18-May-2014  rmind sync with head
 1.7.4.1 13-Mar-2014  rmind file Makefile was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
use ioconf files for pseudo-device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file OPENCRYPTO.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:07 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file OPENCRYPTO.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:13 +0000
 1.2 13-Mar-2014  pooka rename component.c -> opencrypto_component.c
 1.1 14-Jan-2014  pgoyette Add new rump library for opencrypto framework
 1.6 27-Jan-2020  pgoyette Update comment to reflect recent change to the error message in question.
 1.5 29-Jun-2017  knakahara branches: 1.5.6; 1.5.12;
reduce rump waring message. pointed out by ozaki-r@n.o, thanks.
 1.4 26-Jan-2016  pooka branches: 1.4.10;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.2 13-Apr-2015  riastradh Convert remaining MI <sys/rnd.h> stragglers. Many MD ones left.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> opencrypto_component.c
 1.1.12.4 28-Aug-2017  skrll Sync with HEAD
 1.1.12.3 19-Mar-2016  skrll Sync with HEAD
 1.1.12.2 22-Sep-2015  skrll Sync with HEAD
 1.1.12.1 06-Jun-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file opencrypto_component.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file opencrypto_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file opencrypto_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.4.10.1 05-Jul-2017  snj Pull up following revision(s) (requested by knakahara in ticket #97):
sys/opencrypto/crypto.c: 1.87-1.91
sys/opencrypto/cryptodev.c: 1.93-1.95
sys/opencrypto/cryptodev.h: 1.37
sys/opencrypto/cryptosoft.c: 1.52
sys/rump/dev/lib/libopencrypto/opencrypto_component.c: 1.5
sanitize count used for kmem_alloc size.
Hmm, who uses CIOCNGSESSION, CIOCNFSESSION, CIOCNCRYPTM or CIOCNFKEYM?
--
sanitize in CIOCNCRYPTM and initialize comp_alg in CIOCNGSESSION
--
must release cap->cc_lock before calling cap->cc_newsession() because of spinlock.
--
refactor crypto_newsession() like FreeBSD.
--
support multiple encryption drivers (port from FreeBSD).
--
Divide crp_devflags from crp_flags to write exclusively.
CRYPTO_F_DQRETQ(new name is CRYPTODEV_F_RET) is used by cryptodev.c only.
It should be divided to other member.
--
Reduce crypto_ret_q_mtx lock regions.
crypto.c does not access the members of crp when the crp is in crp_q or
crp_ret_q. Furthermore, crp_q and crp_ret_q are protected by each mutex,
so the members of crp is not shared. That means crp_flags is not required
mutex in crypto.c.
--
fix cryptosoft.c:r1.51 mistake. swcrypto_attach() must not be called from module_init_class().
swcrypto_attach() will call softint_establish(), it must be called after cpus
attached. module_init_class() is too early to call softint_establish().
--
simplify mutex_enter/exit(crypto_q_mtx), and fix missing exit.
--
reduce rump waring message. pointed out by ozaki-r@n.o, thanks.
 1.5.12.1 29-Feb-2020  ad Sync with head.
 1.5.6.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 14-Jan-2014  pgoyette branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add new rump library for opencrypto framework
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 14-Jan-2014  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 14-Jan-2014  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 14-Jan-2014  rmind file shlib_version was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.7 16-Dec-2017  pgoyette Now that the pad module has an ioconf file, we need to provide one for
the rump-component, too.
 1.6 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.5 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.4 18-Nov-2014  nonaka branches: 1.4.2;
Adopy recent software volume control change.
 1.3 13-Mar-2014  pooka branches: 1.3.4;
rename component.c -> pad_component.c
 1.2 04-Apr-2013  pooka branches: 1.2.4;
create device nodes
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24;
support pad(4)
 1.1.24.3 03-Dec-2017  jdolecek update from HEAD
 1.1.24.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.24.1 23-Jun-2013  tls resync from head
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-08-17 06:47:54 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:01 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.2.4.1 18-May-2014  rmind sync with head
 1.3.4.1 23-Nov-2014  snj Pull up following revision(s) (requested by jmcneill in ticket #249):
sys/rump/dev/lib/libaudio/Makefile: revision 1.3
sys/rump/dev/lib/libpad/Makefile: revision 1.4
Adopy recent software volume control change.
 1.4.2.2 19-Mar-2016  skrll Sync with HEAD
 1.4.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1 16-Dec-2017  pgoyette Now that the pad module has an ioconf file, we need to provide one for
the rump-component, too.
 1.3 13-Mar-2014  pooka rename component.c -> pad_component.c
 1.2 04-Apr-2013  pooka branches: 1.2.4; 1.2.6;
create /dev/pad[0-3] instead of just /dev/pad
 1.1 04-Apr-2013  pooka create device nodes
 1.2.6.1 18-May-2014  rmind sync with head
 1.2.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.4.2 23-Jun-2013  tls resync from head
 1.2.4.1 04-Apr-2013  tls file component.c was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> pad_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file pad_component.c was added on branch tls-maxphys on 2014-08-20 00:04:37 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file pad_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file pad_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 01-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
support pad(4)
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 01-May-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-08-17 06:47:55 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 01-May-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:01 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 01-May-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.11 10-May-2016  pooka Avoid '.' in variable names which are expected to be passed to
this Makefile via the env.

That character is strictly speaking not allowed by POSIX in an exported
variable name, and at least dash >= 0.58 refuses to export such variables.

Furthermore, since the individual CFLAGS/CPPFLAGS/etc. variables
are not comprehensive enough for all cases (e.g. HURD), just
support the .includable version from now on, i.e.
RUMPCOMP_MAKEFILEINC_rumpdev_pci.

curious failure mode debugged by Martin Lucina
 1.10 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.9 01-Nov-2015  pooka Allow PCI implementers to specify arbitrary makefile constructs.
(interface subject to change)

from Robert Millan
 1.8 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.7 24-Aug-2015  pooka opt files were nop't
 1.6 15-Jun-2015  pooka Add a "userfeature" definition for iospace. I/O space is supported if
that flag is given and calling the init routine succeeds (and we're on
x86, which we probably need to be on anyway for this PCI component to
currently be supported).

Also, some adjustments to make things between flags consistent, namely
deprecate the Makefile variable RUMP_PCI_IOSPACE and don't require
userfeature.h to map 1:1 to the interfaces.

Includes contributions from Robert Millan.
 1.5 03-Jun-2015  pooka Rework how the external hypercalls are specified, more in the direction of
something general. I'm not sure if it's entirely general yet (since PCI
is the only place to use it), but at least a step in the right direction.
 1.4 22-Aug-2014  pooka branches: 1.4.2;
Add a compile-time selector for I/O space operations. Needs more work
some day, but allows virtio drivers to work today.
 1.3 14-Apr-2014  pooka branches: 1.3.2; 1.3.4; 1.3.8;
build hypercalls if RUMP_PCI_USER is defined
 1.2 14-Apr-2014  pooka add necessary -I for /dev/pci* creation
 1.1 04-Apr-2014  pooka branches: 1.1.2;
Add a rump kernel component for the PCI bus. It works both in Xen DomU
(via Xen's PCI passthrough) and Linux userspace (via uio_pci_generic).
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.3.8.3 03-Dec-2017  jdolecek update from HEAD
 1.3.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 14-Apr-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 14-Apr-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.3.2.2 18-May-2014  rmind sync with head
 1.3.2.1 14-Apr-2014  rmind file Makefile was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.4.2.5 29-May-2016  skrll Sync with HEAD
 1.4.2.4 19-Mar-2016  skrll Sync with HEAD
 1.4.2.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.2.2 22-Sep-2015  skrll Sync with HEAD
 1.4.2.1 06-Jun-2015  skrll Sync with HEAD
 1.1 04-Apr-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Add a rump kernel component for the PCI bus. It works both in Xen DomU
(via Xen's PCI passthrough) and Linux userspace (via uio_pci_generic).
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 04-Apr-2014  tls file PCI.ioconf was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file PCI.ioconf was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file PCI.ioconf was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.11 31-Mar-2022  pgoyette For device modules that provide both auto-config and /dev/xxx
interfaces, make sure that initialization and destruction
follow the proper sequence. This is triggered by the recent
changes to the devsw stuff; per riastradh@ the required call
sequence is:

devsw_attach()
config_init_component() or config_cf*_attach()
...
config_fini_component() or config_cf*_detach()
devsw_detach()

While here, add a few missing calls to some of the detach
routines.

Testing of these changes has been limited to:
1. compile without build break
2. no related test failures from atf
3. modload/modunload work as well as
before.

No functional device testing done, since I don't have any
of these devices. Let me know of any damage I might cause
here!

XXX Some of the modules affected by this commit are already
XXX broken; see kern/56772. This commit does not break
any additional modules (as far as I know).
 1.10 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.9 24-Apr-2021  thorpej branches: 1.9.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.8 06-Jun-2018  maya branches: 1.8.16;
Remove duplicate ;
 1.7 26-Jan-2016  pooka branches: 1.7.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.6 15-Jun-2015  pooka Add a "userfeature" definition for iospace. I/O space is supported if
that flag is given and calling the init routine succeeds (and we're on
x86, which we probably need to be on anyway for this PCI component to
currently be supported).

Also, some adjustments to make things between flags consistent, namely
deprecate the Makefile variable RUMP_PCI_IOSPACE and don't require
userfeature.h to map 1:1 to the interfaces.

Includes contributions from Robert Millan.
 1.5 22-Aug-2014  pooka branches: 1.5.2;
Add a compile-time selector for I/O space operations. Needs more work
some day, but allows virtio drivers to work today.
 1.4 31-Jul-2014  pooka branches: 1.4.4;
add missing \n

from Robert Millan <rmh@freebsd.org> via rumpkernel-users
 1.3 14-Apr-2014  pooka branches: 1.3.2; 1.3.4;
be even more explicit about handling only bus 0
 1.2 13-Apr-2014  pooka create /dev/pci device nodes
 1.1 04-Apr-2014  pooka branches: 1.1.2;
Add a rump kernel component for the PCI bus. It works both in Xen DomU
(via Xen's PCI passthrough) and Linux userspace (via uio_pci_generic).
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 14-Apr-2014  yamt file pci_at_mainbus.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.3.2.2 18-May-2014  rmind sync with head
 1.3.2.1 14-Apr-2014  rmind file pci_at_mainbus.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.4.4.3 03-Dec-2017  jdolecek update from HEAD
 1.4.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.4.1 31-Jul-2014  tls file pci_at_mainbus.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.5.2.2 19-Mar-2016  skrll Sync with HEAD
 1.5.2.1 22-Sep-2015  skrll Sync with HEAD
 1.7.16.1 25-Jun-2018  pgoyette Sync with HEAD
 1.8.16.1 02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.9.8.1 05-Aug-2021  thorpej Adapt to CFARGS().
 1.6 07-Jul-2016  msaitoh KNF. Remove extra spaces. No functional change.
 1.5 15-Jun-2015  pooka Add a "userfeature" definition for iospace. I/O space is supported if
that flag is given and calling the init routine succeeds (and we're on
x86, which we probably need to be on anyway for this PCI component to
currently be supported).

Also, some adjustments to make things between flags consistent, namely
deprecate the Makefile variable RUMP_PCI_IOSPACE and don't require
userfeature.h to map 1:1 to the interfaces.

Includes contributions from Robert Millan.
 1.4 03-Jun-2015  pooka implement bus_dmamem_free()

from Robert Millan <rmh@freebsd.org> via rumpkernel-users
 1.3 03-Jun-2015  pooka Demand that rumpcomp_userfeatures_pci.h is available for providing
information about the hypercall interface implementation.
 1.2 14-Apr-2014  pooka branches: 1.2.2; 1.2.4; 1.2.8; 1.2.10;
* make it possible for rumpcomp_pci_intr_establish() to know which
device it's establishing the interrupt for
* make it possible to implement bus_dmamem_map() properly
 1.1 04-Apr-2014  pooka branches: 1.1.2;
Add a rump kernel component for the PCI bus. It works both in Xen DomU
(via Xen's PCI passthrough) and Linux userspace (via uio_pci_generic).
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.2.10.3 09-Jul-2016  skrll Sync with HEAD
 1.2.10.2 22-Sep-2015  skrll Sync with HEAD
 1.2.10.1 06-Jun-2015  skrll Sync with HEAD
 1.2.8.3 03-Dec-2017  jdolecek update from HEAD
 1.2.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.8.1 14-Apr-2014  tls file pci_user.h was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 14-Apr-2014  yamt file pci_user.h was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.2.2.2 18-May-2014  rmind sync with head
 1.2.2.1 14-Apr-2014  rmind file pci_user.h was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.11 13-Feb-2022  riastradh rump: Omit unused EIEIO #define, vestige of powerpc bus_dma.c.
 1.10 02-Nov-2020  christos PR/55777: Ruslan Nikolaev: use MIN() from <sys/param.h> instead of min()
 1.9 05-Sep-2020  riastradh branches: 1.9.2;
Round of uvm.h cleanup.

The poorly named uvm.h is generally supposed to be for uvm-internal
users only.

- Narrow it to files that actually need it -- mostly files that need
to query whether curlwp is the pagedaemon, which should maybe be
exposed by an external header.

- Use uvm_extern.h where feasible and uvm_*.h for things not exposed
by it. We should split up uvm_extern.h but this will serve for now
to reduce the uvm.h dependencies.

- Use uvm_stat.h and #ifdef UVMHIST uvm.h for files that use
UVMHIST(ubchist), since ubchist is declared in uvm.h but the
reference evaporates if UVMHIST is not defined, so we reduce header
file dependencies.

- Make uvm_device.h and uvm_swap.h independently includable while
here.

ok chs@
 1.8 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.7 12-Dec-2018  alnsn Add missing RCSIDs.
 1.6 27-Apr-2018  maxv branches: 1.6.2;
M_CLUSTER -> M_EXT_CLUSTER, and remove M_CLUSTER completely.
 1.5 15-Jun-2015  pooka branches: 1.5.16;
Add a "userfeature" definition for iospace. I/O space is supported if
that flag is given and calling the init routine succeeds (and we're on
x86, which we probably need to be on anyway for this PCI component to
currently be supported).

Also, some adjustments to make things between flags consistent, namely
deprecate the Makefile variable RUMP_PCI_IOSPACE and don't require
userfeature.h to map 1:1 to the interfaces.

Includes contributions from Robert Millan.
 1.4 03-Jun-2015  pooka implement bus_dmamem_free()

from Robert Millan <rmh@freebsd.org> via rumpkernel-users
 1.3 14-Apr-2014  pooka branches: 1.3.2; 1.3.4; 1.3.8; 1.3.10;
* make it possible for rumpcomp_pci_intr_establish() to know which
device it's establishing the interrupt for
* make it possible to implement bus_dmamem_map() properly
 1.2 11-Apr-2014  pooka remove obfuscation macros
 1.1 04-Apr-2014  pooka branches: 1.1.2;
Add a rump kernel component for the PCI bus. It works both in Xen DomU
(via Xen's PCI passthrough) and Linux userspace (via uio_pci_generic).
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.3.10.2 22-Sep-2015  skrll Sync with HEAD
 1.3.10.1 06-Jun-2015  skrll Sync with HEAD
 1.3.8.3 03-Dec-2017  jdolecek update from HEAD
 1.3.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 14-Apr-2014  tls file rumpdev_bus_dma.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 14-Apr-2014  yamt file rumpdev_bus_dma.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.3.2.2 18-May-2014  rmind sync with head
 1.3.2.1 14-Apr-2014  rmind file rumpdev_bus_dma.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.5.16.2 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.5.16.1 02-May-2018  pgoyette Synch with HEAD
 1.6.2.1 10-Jun-2019  christos Sync with HEAD
 1.9.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.10 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.9 12-Dec-2018  alnsn Add missing RCSIDs.
 1.8 07-Jul-2016  msaitoh branches: 1.8.16; 1.8.18;
KNF. Remove extra spaces. No functional change.
 1.7 18-Jan-2016  pooka Implement the inverse of a nop.
 1.6 11-Aug-2015  pooka Fix handle typos/pastos in bus_space_barrier() calls
 1.5 15-Jun-2015  pooka Add a "userfeature" definition for iospace. I/O space is supported if
that flag is given and calling the init routine succeeds (and we're on
x86, which we probably need to be on anyway for this PCI component to
currently be supported).

Also, some adjustments to make things between flags consistent, namely
deprecate the Makefile variable RUMP_PCI_IOSPACE and don't require
userfeature.h to map 1:1 to the interfaces.

Includes contributions from Robert Millan.
 1.4 17-May-2015  pooka Implement bus_space_read/write_multi() and bus_space_subregion().

Used by (at least) wdc.
 1.3 22-Aug-2014  pooka branches: 1.3.2;
Add a compile-time selector for I/O space operations. Needs more work
some day, but allows virtio drivers to work today.
 1.2 13-Apr-2014  pooka branches: 1.2.2; 1.2.4; 1.2.8;
add some sort of bus_space_barrier()
 1.1 04-Apr-2014  pooka branches: 1.1.2;
Add a rump kernel component for the PCI bus. It works both in Xen DomU
(via Xen's PCI passthrough) and Linux userspace (via uio_pci_generic).
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.2.8.3 03-Dec-2017  jdolecek update from HEAD
 1.2.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.8.1 13-Apr-2014  tls file rumpdev_bus_space.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 13-Apr-2014  yamt file rumpdev_bus_space.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.2.2.2 18-May-2014  rmind sync with head
 1.2.2.1 13-Apr-2014  rmind file rumpdev_bus_space.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.3.2.3 19-Mar-2016  skrll Sync with HEAD
 1.3.2.2 22-Sep-2015  skrll Sync with HEAD
 1.3.2.1 06-Jun-2015  skrll Sync with HEAD
 1.8.18.1 10-Jun-2019  christos Sync with HEAD
 1.8.16.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.5 17-May-2015  pooka Add pciide_machdep_compat_intr_establish().

Used by ... would you believe pciide?
 1.4 26-Aug-2014  pooka branches: 1.4.2;
Implement pci_intr_setattr()

(well, kinda. it just ignores the MPSAFE param for now, but that's
easy to fix later)
 1.3 15-Apr-2014  pooka branches: 1.3.2; 1.3.4; 1.3.8;
update to new pci_intr_string()
 1.2 14-Apr-2014  pooka * make it possible for rumpcomp_pci_intr_establish() to know which
device it's establishing the interrupt for
* make it possible to implement bus_dmamem_map() properly
 1.1 04-Apr-2014  pooka branches: 1.1.2;
Add a rump kernel component for the PCI bus. It works both in Xen DomU
(via Xen's PCI passthrough) and Linux userspace (via uio_pci_generic).
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.3.8.3 03-Dec-2017  jdolecek update from HEAD
 1.3.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 15-Apr-2014  tls file rumpdev_pci.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 15-Apr-2014  yamt file rumpdev_pci.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.3.2.2 18-May-2014  rmind sync with head
 1.3.2.1 15-Apr-2014  rmind file rumpdev_pci.c was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.4.2.1 06-Jun-2015  skrll Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 04-Apr-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add a rump kernel component for the PCI bus. It works both in Xen DomU
(via Xen's PCI passthrough) and Linux userspace (via uio_pci_generic).
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 04-Apr-2014  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file shlib_version was added on branch rmind-smpnet on 2014-05-18 17:46:15 +0000
 1.4 16-Nov-2015  pooka branches: 1.4.16;
Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.3 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 03-Jun-2015  pooka branches: 1.1.2;
add rump kernel component for the auich driver

contributed by Robert Millan <rmh@freebsd.org> via private email
 1.1.2.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 03-Jun-2015  skrll file Makefile was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.4.16.2 03-Dec-2017  jdolecek update from HEAD
 1.4.16.1 16-Nov-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.1 03-Jun-2015  pooka branches: 1.1.2; 1.1.18;
add rump kernel component for the auich driver

contributed by Robert Millan <rmh@freebsd.org> via private email
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 03-Jun-2015  jdolecek file PCI_AUICH.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 03-Jun-2015  skrll file PCI_AUICH.ioconf was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 03-Jun-2015  pooka branches: 1.1.2;
add rump kernel component for the auich driver

contributed by Robert Millan <rmh@freebsd.org> via private email
 1.1.2.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 03-Jun-2015  skrll file auich_at_pci.c was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.4 16-Nov-2015  pooka branches: 1.4.16;
Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.3 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 18-Nov-2014  pooka branches: 1.1.2;
Add eap PCI audio driver.

tested by playing audio with rump kernel booted on qemu with -soundhw es1370
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.16.2 03-Dec-2017  jdolecek update from HEAD
 1.4.16.1 16-Nov-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.1 18-Nov-2014  pooka branches: 1.1.18;
Add eap PCI audio driver.

tested by playing audio with rump kernel booted on qemu with -soundhw es1370
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 18-Nov-2014  jdolecek file PCI_EAP.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 18-Nov-2014  pooka branches: 1.1.2;
Add eap PCI audio driver.

tested by playing audio with rump kernel booted on qemu with -soundhw es1370
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1 18-Nov-2014  pooka branches: 1.1.18;
Add eap PCI audio driver.

tested by playing audio with rump kernel booted on qemu with -soundhw es1370
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 18-Nov-2014  jdolecek file joy_eap.h was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 18-Nov-2014  pooka branches: 1.1.2;
Add eap PCI audio driver.

tested by playing audio with rump kernel booted on qemu with -soundhw es1370
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.3 19-Oct-2015  pooka branches: 1.3.16;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 28-Mar-2015  jmcneill Split hdaudio and PCI attach glue. Even though the driver was written with
this separation in mind, all of the code lived in sys/dev/pci/hdaudio. Move
common parts to sys/dev/hdaudio and PCI attach glue to sys/dev/pci.
 1.1 19-Nov-2014  pooka branches: 1.1.2;
Add hdaudio driver as a rump kernel component

tested by booting a rump kernel on a T61, coupled with a client which
writes some Roy Buchanan to /dev/audio
 1.1.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.3.16.2 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 19-Oct-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 19-Nov-2014  pooka branches: 1.1.2;
Add hdaudio driver as a rump kernel component

tested by booting a rump kernel on a T61, coupled with a client which
writes some Roy Buchanan to /dev/audio
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.4 16-Nov-2015  pooka Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.3 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 07-Apr-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add a rump kernel component for the iwn wireless driver, tested with
the one in my laptop:
iwn0 at pci0 dev 19 function 0: vendor 0x8086 product 0x4237 (rev. 0x00)
 1.1.12.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Apr-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 07-Apr-2014  tls file Makefile was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 07-Apr-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 07-Apr-2014  rmind file Makefile was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.1 07-Apr-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10;
Add a rump kernel component for the iwn wireless driver, tested with
the one in my laptop:
iwn0 at pci0 dev 19 function 0: vendor 0x8086 product 0x4237 (rev. 0x00)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Apr-2014  tls file PCI_IF_IWN.ioconf was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 07-Apr-2014  tls file PCI_IF_IWN.ioconf was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 07-Apr-2014  yamt file PCI_IF_IWN.ioconf was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 07-Apr-2014  rmind file PCI_IF_IWN.ioconf was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 07-Apr-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add a rump kernel component for the iwn wireless driver, tested with
the one in my laptop:
iwn0 at pci0 dev 19 function 0: vendor 0x8086 product 0x4237 (rev. 0x00)
 1.1.12.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Apr-2014  tls file iwn_at_pci.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 07-Apr-2014  tls file iwn_at_pci.c was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 07-Apr-2014  yamt file iwn_at_pci.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 07-Apr-2014  rmind file iwn_at_pci.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 07-Apr-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add a rump kernel component for the iwn wireless driver, tested with
the one in my laptop:
iwn0 at pci0 dev 19 function 0: vendor 0x8086 product 0x4237 (rev. 0x00)
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 07-Apr-2014  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 07-Apr-2014  tls file shlib_version was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 07-Apr-2014  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 07-Apr-2014  rmind file shlib_version was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.4 16-Nov-2015  pooka branches: 1.4.16;
Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.3 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 13-Aug-2014  pooka branches: 1.1.2;
Add component for the pcnet PCI driver to rump kernels. Virtualbox
emulates it by default, so it's nice-to-have for that.
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.16.2 03-Dec-2017  jdolecek update from HEAD
 1.4.16.1 16-Nov-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.1 13-Aug-2014  pooka branches: 1.1.18;
Add component for the pcnet PCI driver to rump kernels. Virtualbox
emulates it by default, so it's nice-to-have for that.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 13-Aug-2014  jdolecek file PCI_IF_PCN.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 13-Aug-2014  pooka branches: 1.1.2;
Add component for the pcnet PCI driver to rump kernels. Virtualbox
emulates it by default, so it's nice-to-have for that.
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 13-Aug-2014  pooka branches: 1.1.2;
Add component for the pcnet PCI driver to rump kernels. Virtualbox
emulates it by default, so it's nice-to-have for that.
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.4 16-Nov-2015  pooka Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.3 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 04-Apr-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add a rump kernel component that can attach if_wm @ pci
 1.1.12.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 04-Apr-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file Makefile was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.1 04-Apr-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Add a rump kernel component that can attach if_wm @ pci
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 04-Apr-2014  tls file PCI_IF_WM.ioconf was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file PCI_IF_WM.ioconf was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file PCI_IF_WM.ioconf was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 04-Apr-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add a rump kernel component that can attach if_wm @ pci
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 04-Apr-2014  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file shlib_version was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 04-Apr-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add a rump kernel component that can attach if_wm @ pci
 1.1.12.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 04-Apr-2014  tls file wm_at_pci.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 04-Apr-2014  yamt file wm_at_pci.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 04-Apr-2014  rmind file wm_at_pci.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.6 06-Nov-2020  christos PR/55789: Ruslan Nikolaev: New rump drivers
 1.5 16-Nov-2015  pooka branches: 1.5.16; 1.5.32;
Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.4 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 24-Aug-2015  pooka opt files were nop't
 1.1 20-May-2015  pooka branches: 1.1.2;
Add a rump kernel components for USB PCI host controllers.
 1.1.2.4 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.3 22-Sep-2015  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 20-May-2015  skrll file Makefile was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.5.32.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.5.16.2 03-Dec-2017  jdolecek update from HEAD
 1.5.16.1 16-Nov-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.2 06-Nov-2020  christos PR/55789: Ruslan Nikolaev: New rump drivers
 1.1 20-May-2015  pooka branches: 1.1.2; 1.1.18; 1.1.34;
Add a rump kernel components for USB PCI host controllers.
 1.1.34.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-May-2015  jdolecek file PCI_USBHC.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 20-May-2015  skrll file PCI_USBHC.ioconf was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.1 20-May-2015  pooka branches: 1.1.2; 1.1.18;
Add a rump kernel components for USB PCI host controllers.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-May-2015  jdolecek file ehci.h was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 20-May-2015  skrll file ehci.h was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.1 20-May-2015  pooka branches: 1.1.2; 1.1.18;
Add a rump kernel components for USB PCI host controllers.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-May-2015  jdolecek file ohci.h was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 20-May-2015  skrll file ohci.h was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.1 20-May-2015  pooka branches: 1.1.2; 1.1.18;
Add a rump kernel components for USB PCI host controllers.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-May-2015  jdolecek file uhci.h was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 20-May-2015  skrll file uhci.h was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 20-May-2015  pooka branches: 1.1.2;
Add a rump kernel components for USB PCI host controllers.
 1.1.2.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 20-May-2015  skrll file usbhc_at_pci.c was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.4 16-Nov-2015  pooka branches: 1.4.16;
Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.3 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 22-Aug-2014  pooka branches: 1.1.2;
Add a rump kernel component for the virtio bus.
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.16.2 03-Dec-2017  jdolecek update from HEAD
 1.4.16.1 16-Nov-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.2 10-May-2017  sevan branches: 1.2.8;
Match the ioconf name in sys/modules.
Resolves rumprun build process.
Put together with the help & direction of riastradh & paulg.
 1.1 22-Aug-2014  pooka branches: 1.1.2; 1.1.10;
Add a rump kernel component for the virtio bus.
 1.1.10.1 11-May-2017  pgoyette Sync with HEAD
 1.1.2.1 28-Aug-2017  skrll Sync with HEAD
 1.2.8.2 03-Dec-2017  jdolecek update from HEAD
 1.2.8.1 10-May-2017  jdolecek file PCI_VIRTIO.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:08 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 22-Aug-2014  pooka branches: 1.1.2;
Add a rump kernel component for the virtio bus.
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 22-Aug-2014  pooka branches: 1.1.2;
Add a rump kernel component for the virtio bus.
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 13-Mar-2014  pooka branches: 1.2.6;
rename component.c -> pud_component.c
 1.1 31-Mar-2011  pooka branches: 1.1.2; 1.1.6; 1.1.8; 1.1.18; 1.1.22;
actually add libpud and revert damage to libputter.
pax -rw and forgetting to rm -rf CVS has some nasty side-effects ....
 1.1.22.1 18-May-2014  rmind sync with head
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.1 31-Mar-2011  jruoho file Makefile was added on branch jruoho-x86intr on 2011-06-06 09:10:05 +0000
 1.1.2.2 21-Apr-2011  rmind sync with head
 1.1.2.1 31-Mar-2011  rmind file Makefile was added on branch rmind-uvmplock on 2011-04-21 01:42:16 +0000
 1.2.6.2 19-Mar-2016  skrll Sync with HEAD
 1.2.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3 13-Mar-2014  pooka rename component.c -> pud_component.c
 1.2 11-Mar-2012  gson branches: 1.2.2; 1.2.4;
Fix obvious cut-and-paste-o in error message string
 1.1 31-Mar-2011  pooka branches: 1.1.2; 1.1.6; 1.1.8; 1.1.12;
actually add libpud and revert damage to libputter.
pax -rw and forgetting to rm -rf CVS has some nasty side-effects ....
 1.1.12.1 05-Apr-2012  mrg sync to latest -current.
 1.1.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.8.1 17-Apr-2012  yamt sync with head
 1.1.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.1 31-Mar-2011  jruoho file component.c was added on branch jruoho-x86intr on 2011-06-06 09:10:05 +0000
 1.1.2.2 21-Apr-2011  rmind sync with head
 1.1.2.1 31-Mar-2011  rmind file component.c was added on branch rmind-uvmplock on 2011-04-21 01:42:16 +0000
 1.2.4.1 18-May-2014  rmind sync with head
 1.2.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> pud_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file pud_component.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file pud_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file pud_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 31-Mar-2011  pooka branches: 1.1.2; 1.1.6; 1.1.18; 1.1.36;
actually add libpud and revert damage to libputter.
pax -rw and forgetting to rm -rf CVS has some nasty side-effects ....
 1.1.36.1 06-Apr-2015  skrll Sync with HEAD
 1.1.18.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.1 31-Mar-2011  jruoho file shlib_version was added on branch jruoho-x86intr on 2011-06-06 09:10:05 +0000
 1.1.2.2 21-Apr-2011  rmind sync with head
 1.1.2.1 31-Mar-2011  rmind file shlib_version was added on branch rmind-uvmplock on 2011-04-21 01:42:16 +0000
 1.8 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.7 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.6 13-Mar-2014  pooka branches: 1.6.6;
rename component.c -> putter_component.c
 1.5 04-Apr-2013  pooka branches: 1.5.4;
set correct include path
 1.4 04-Apr-2013  pooka create /dev/putter device node in component attach
 1.3 31-Mar-2011  pooka branches: 1.3.4; 1.3.14;
actually add libpud and revert damage to libputter.
pax -rw and forgetting to rm -rf CVS has some nasty side-effects ....
 1.2 31-Mar-2011  pooka add pud as a rump component
 1.1 30-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8;
Make putter its own component: rumpdev_putter. It was coupled in
with rumpfs_puffs for prehistoric reasons which are no longer valid
(namely, only fs components existed back then and there was no /dev
support in rump fs namespace).
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 30-Jun-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-08-17 06:47:55 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 30-Jun-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:01 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 30-Jun-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-07-03 01:20:01 +0000
 1.3.14.3 03-Dec-2017  jdolecek update from HEAD
 1.3.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.14.1 23-Jun-2013  tls resync from head
 1.3.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.4.1 18-May-2014  rmind sync with head
 1.6.6.2 19-Mar-2016  skrll Sync with HEAD
 1.6.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4 13-Mar-2014  pooka rename component.c -> putter_component.c
 1.3 04-Apr-2013  pooka branches: 1.3.4; 1.3.6;
create /dev/putter device node in component attach
 1.2 31-Mar-2011  pooka actually add libpud and revert damage to libputter.
pax -rw and forgetting to rm -rf CVS has some nasty side-effects ....
 1.1 31-Mar-2011  pooka add pud as a rump component
 1.3.6.1 18-May-2014  rmind sync with head
 1.3.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.4.2 23-Jun-2013  tls resync from head
 1.3.4.1 04-Apr-2013  tls file component.c was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> putter_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file putter_component.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file putter_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file putter_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 30-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
Make putter its own component: rumpdev_putter. It was coupled in
with rumpfs_puffs for prehistoric reasons which are no longer valid
(namely, only fs components existed back then and there was no /dev
support in rump fs namespace).
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 30-Jun-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-08-17 06:47:55 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 30-Jun-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:01 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 30-Jun-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-07-03 01:20:01 +0000
 1.14 25-Sep-2023  oster We no longer need the deprecated copyback functionality now that
incorporating a used spare is automatic.

Copyback has always been an issue, as to do a copyback all IO to
the array had to be suspended, and so was very, very unlikely to
have been used in anything resembling a production system.
 1.13 06-Feb-2019  christos kill compat code dependencies.
 1.12 04-Feb-2019  mrg don't assume _LP64 == supports COMPAT_NETBSD32.

this is not true for alpha, ia64 and arm32 ports, and the first two
were not building because of it, and the latter would be missing
the oabi support (likely not a big deal, but still wrong.)

add a makefile fragment that tells you if it is supported and include
it where needed to define COMPAT_NETBSD32 when building the normal
kernel (ie, modules & rump.)


fixes alpha build, probably fixes ia64 build.


XXX: still leaves some netbsd32 code in rf_netbsdkintf.c, that should
be moved into some hooks, but first the configuration setup
needs to be moved into a common function the netbsd32 code can
call into, vs living in the switch case itself.
 1.11 18-Jan-2018  mrg branches: 1.11.4;
implement 32-bit compat support for raidframe.

convert several raidframe ioctls to be bitsize idempotent so that
they work the same in 32 and 64 bit worlds, allowing netbsd32 to
configure and query raid properly. remove useless 'row' in a few
places. add COMPAT_80 and put the old ioctls there.

raidframeio.h:
RAIDFRAME_TEST_ACC
- remove, unused
RAIDFRAME_GET_COMPONENT_LABEL
- convert to label not pointer to label
RAIDFRAME_CHECK_RECON_STATUS_EXT
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT
- convert to progress info not pointer to info
RAIDFRAME_GET_INFO
- version entirely.
raidframevar.h:
- rf_recon_req{} has row, flags and raidPtr removed (they're
not a useful part of this interface.)
- RF_Config_s{} and RF_DeviceConfig_s{} have numRow/rows removed.
- RF_RaidDisk_s{} is re-ordered slightly to fix alignment
padding - the actual data was already OK.
- InstallSpareTable() loses row argument

rf_compat32.c has code for RF_Config_s{} in 32 bit mode, used
by RAIDFRAME_CONFIGURE and RAIDFRAME_GET_INFO32.

rf_compat80.c has code for rf_recon_req{}, RF_RaidDisk_s{} and
RF_DeviceConfig_s{} to handle RAIDFRAME_FAIL_DISK,
RAIDFRAME_GET_COMPONENT_LABEL, RAIDFRAME_CHECK_RECON_STATUS_EXT,
RAIDFRAME_CHECK_PARITYREWRITE_STATUS_EXT,
RAIDFRAME_CHECK_COPYBACK_STATUS_EXT, RAIDFRAME_GET_INFO.

move several of the per-ioctl code blocks into separate functions.

add rf_recon_req_internal{} to replace old usage of global
rf_recon_req{} that had unused void * in the structure, ruining
it's 32/64 bit ABI.

add missing case for RAIDFRAME_GET_INFO50.

adjust raid tests to use the new .conf format, and add a case to
test the old method as well.

raidctl:
deal with lack of 'row' members in a couple of places.
fail request no longer takes row.
handle "START array" sections with just "numCol numSpare", ie
no "numRow" specified. for now, generate old-style configuration
but update raidctl.8 to specify the new style (keeping reference
to the old style.)

note that: RF_ComponentLabel_s::{row,num_rows} and
RF_SingleComponent_s::row are obsolete but not removed yet.
 1.10 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.9 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.8 20-Aug-2015  christos put back bsd.init.mk
 1.7 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.6 23-Apr-2015  pooka Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.
 1.5 22-Apr-2015  pooka Build compat code only when specified by RUMP_COMPAT
 1.4 13-Mar-2014  pooka branches: 1.4.6;
rename component.c -> raidframe_component.c
 1.3 23-Nov-2009  pooka branches: 1.3.12; 1.3.22; 1.3.26;
Add rf_paritymap.c, which is now required for raidframe.
 1.2 07-Sep-2009  pooka one more ketchup with rump_dev_makenodes -> rump_vfs_makedevnodes
 1.1 09-Jun-2009  pooka branches: 1.1.2;
Checkpoint a bunch of work-in-progress: support for disk devices
and raidframe. Raidframe works well enough to configure a raid in
the rump kernel, but the usage is "interesting" (pending some other
changes/cleanup from other parts in my tree).

These are not built by default yet.
 1.1.2.4 11-Mar-2010  yamt sync with head
 1.1.2.3 16-Sep-2009  yamt sync with head
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 09-Jun-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-06-20 07:20:35 +0000
 1.3.26.1 18-May-2014  rmind sync with head
 1.3.22.2 03-Dec-2017  jdolecek update from HEAD
 1.3.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.6.4 19-Mar-2016  skrll Sync with HEAD
 1.4.6.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.6.2 22-Sep-2015  skrll Sync with HEAD
 1.4.6.1 06-Jun-2015  skrll Sync with HEAD
 1.11.4.1 10-Jun-2019  christos Sync with HEAD
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
use ioconf files for pseudo-device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file RAIDFRAME.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:09 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file RAIDFRAME.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:13 +0000
 1.6 13-Mar-2014  pooka rename component.c -> raidframe_component.c
 1.5 01-Mar-2010  pooka branches: 1.5.10; 1.5.20; 1.5.24;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.4 03-Dec-2009  pooka branches: 1.4.2;
* create /dev on the rump rootfs automatically
* make rump_vfs_makedevnodes() take a full basepath instead of hardcoding
an assumption that the device node is created in /dev
+ the caller is responsible that the directory the nodes are being
created in exists
 1.3 07-Sep-2009  pooka one more ketchup with rump_dev_makenodes -> rump_vfs_makedevnodes
 1.2 20-Jul-2009  pooka describe & attach raidframe rump kernel component
 1.1 09-Jun-2009  pooka branches: 1.1.2;
Checkpoint a bunch of work-in-progress: support for disk devices
and raidframe. Raidframe works well enough to configure a raid in
the rump kernel, but the usage is "interesting" (pending some other
changes/cleanup from other parts in my tree).

These are not built by default yet.
 1.1.2.5 11-Mar-2010  yamt sync with head
 1.1.2.4 16-Sep-2009  yamt sync with head
 1.1.2.3 19-Aug-2009  yamt sync with head.
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 09-Jun-2009  yamt file component.c was added on branch yamt-nfs-mp on 2009-06-20 07:20:35 +0000
 1.4.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.5.24.1 18-May-2014  rmind sync with head
 1.5.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 26-Dec-2015  pgoyette Detach the {b,c}devsw after obtaining the device major numbers. We'll
re-attach during module initialization.

This enables the atf tests to once again succeed.
 1.3 26-Dec-2015  pgoyette Remove local CF_DRIVER_DECL - it is now defined in the raidframe driver's
module initialization code
 1.2 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> raidframe_component.c
 1.1.12.3 19-Mar-2016  skrll Sync with HEAD
 1.1.12.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.12.1 22-Sep-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file raidframe_component.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file raidframe_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:12 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file raidframe_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 09-Jun-2009  pooka branches: 1.1.2; 1.1.24; 1.1.42;
Checkpoint a bunch of work-in-progress: support for disk devices
and raidframe. Raidframe works well enough to configure a raid in
the rump kernel, but the usage is "interesting" (pending some other
changes/cleanup from other parts in my tree).

These are not built by default yet.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 09-Jun-2009  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-06-20 07:20:35 +0000
 1.12 30-Apr-2020  riastradh Rewrite entropy subsystem.

Primary goals:

1. Use cryptography primitives designed and vetted by cryptographers.
2. Be honest about entropy estimation.
3. Propagate full entropy as soon as possible.
4. Simplify the APIs.
5. Reduce overhead of rnd_add_data and cprng_strong.
6. Reduce side channels of HWRNG data and human input sources.
7. Improve visibility of operation with sysctl and event counters.

Caveat: rngtest is no longer used generically for RND_TYPE_RNG
rndsources. Hardware RNG devices should have hardware-specific
health tests. For example, checking for two repeated 256-bit outputs
works to detect AMD's 2019 RDRAND bug. Not all hardware RNGs are
necessarily designed to produce exactly uniform output.

ENTROPY POOL

- A Keccak sponge, with test vectors, replaces the old LFSR/SHA-1
kludge as the cryptographic primitive.

- `Entropy depletion' is available for testing purposes with a sysctl
knob kern.entropy.depletion; otherwise it is disabled, and once the
system reaches full entropy it is assumed to stay there as far as
modern cryptography is concerned.

- No `entropy estimation' based on sample values. Such `entropy
estimation' is a contradiction in terms, dishonest to users, and a
potential source of side channels. It is the responsibility of the
driver author to study the entropy of the process that generates
the samples.

- Per-CPU gathering pools avoid contention on a global queue.

- Entropy is occasionally consolidated into global pool -- as soon as
it's ready, if we've never reached full entropy, and with a rate
limit afterward. Operators can force consolidation now by running
sysctl -w kern.entropy.consolidate=1.

- rndsink(9) API has been replaced by an epoch counter which changes
whenever entropy is consolidated into the global pool.
. Usage: Cache entropy_epoch() when you seed. If entropy_epoch()
has changed when you're about to use whatever you seeded, reseed.
. Epoch is never zero, so initialize cache to 0 if you want to reseed
on first use.
. Epoch is -1 iff we have never reached full entropy -- in other
words, the old rnd_initial_entropy is (entropy_epoch() != -1) --
but it is better if you check for changes rather than for -1, so
that if the system estimated its own entropy incorrectly, entropy
consolidation has the opportunity to prevent future compromise.

- Sysctls and event counters provide operator visibility into what's
happening:
. kern.entropy.needed - bits of entropy short of full entropy
. kern.entropy.pending - bits known to be pending in per-CPU pools,
can be consolidated with sysctl -w kern.entropy.consolidate=1
. kern.entropy.epoch - number of times consolidation has happened,
never 0, and -1 iff we have never reached full entropy

CPRNG_STRONG

- A cprng_strong instance is now a collection of per-CPU NIST
Hash_DRBGs. There are only two in the system: user_cprng for
/dev/urandom and sysctl kern.?random, and kern_cprng for kernel
users which may need to operate in interrupt context up to IPL_VM.

(Calling cprng_strong in interrupt context does not strike me as a
particularly good idea, so I added an event counter to see whether
anything actually does.)

- Event counters provide operator visibility into when reseeding
happens.

INTEL RDRAND/RDSEED, VIA C3 RNG (CPU_RNG)

- Unwired for now; will be rewired in a subsequent commit.
 1.11 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.10 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.9 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.8 14-Apr-2015  riastradh Fix rump build: rndpseudo_50.c now needed by kernel, not rnd device.
 1.7 13-Mar-2014  pooka branches: 1.7.6;
rename component.c -> rnd_component.c
 1.6 02-Feb-2012  tls branches: 1.6.6; 1.6.10;
Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.5 20-Dec-2011  apb Put the path to the compat/common directory in a .PATH line, not in
an element of the SRCS list. This should fix a problem in which build
products were created in the source tree.

Also add a comment about where COMPAT_50 is defined.
 1.4 19-Dec-2011  apb SRCS += ${.CURDIR}/../../../../compat/common/rndpseudo_50.c
to fix build errors like this:

DESTDIR/usr/lib/librumpdev_rnd.so: undefined reference to
`rumpns_compat_50_rnd_ioctl'
 1.3 17-Dec-2011  tls Separate /dev/random pseudodevice implemenation from kernel entropy pool
implementation. Rewrite pseudodevice code to use cprng_strong(9).

The new pseudodevice is cloning, so each caller gets bits from a stream
generated with its own key. Users of /dev/urandom get their generators
keyed on a "best effort" basis -- the kernel will rekey generators
whenever the entropy pool hits the high water mark -- while users of
/dev/random get their generators rekeyed every time key-length bits
are output.

The underlying cprng_strong API can use AES-256 or AES-128, but we use
AES-128 because of concerns about related-key attacks on AES-256. This
improves performance (and reduces entropy pool depletion) significantly
for users of /dev/urandom but does cause users of /dev/random to rekey
twice as often.

Also fixes various bugs (including some missing locking and a reseed-counter
overflow in the CTR_DRBG code) found while testing this.

For long reads, this generator is approximately 20 times as fast as the
old generator (dd with bs=64K yields 53MB/sec on 2Ghz Core2 instead of
2.5MB/sec) and also uses a separate mutex per instance so concurrency
is greatly improved. For reads of typical key sizes for modern
cryptosystems (16-32 bytes) performance is about the same as the old
code: a little better for 32 bytes, a little worse for 16 bytes.
 1.2 16-Feb-2010  pooka branches: 1.2.10; 1.2.14;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 08-Sep-2009  pooka branches: 1.1.2; 1.1.4;
add rump rnd device component
 1.1.4.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 16-Sep-2009  yamt sync with head
 1.1.2.1 08-Sep-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-09-16 13:38:04 +0000
 1.2.14.1 18-Feb-2012  mrg merge to -current.
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 17-Apr-2012  yamt sync with head
 1.6.10.1 18-May-2014  rmind sync with head
 1.6.6.2 03-Dec-2017  jdolecek update from HEAD
 1.6.6.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.6.4 19-Mar-2016  skrll Sync with HEAD
 1.7.6.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.7.6.2 22-Sep-2015  skrll Sync with HEAD
 1.7.6.1 06-Jun-2015  skrll Sync with HEAD
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
use ioconf files for pseudo-device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file RND.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:09 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file RND.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:13 +0000
 1.5 13-Mar-2014  pooka rename component.c -> rnd_component.c
 1.4 26-Apr-2010  pooka branches: 1.4.8; 1.4.18; 1.4.22;
ungrossify
 1.3 01-Mar-2010  pooka branches: 1.3.2;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.2 03-Dec-2009  pooka branches: 1.2.2;
* create /dev on the rump rootfs automatically
* make rump_vfs_makedevnodes() take a full basepath instead of hardcoding
an assumption that the device node is created in /dev
+ the caller is responsible that the directory the nodes are being
created in exists
 1.1 08-Sep-2009  pooka branches: 1.1.2;
add rump rnd device component
 1.1.2.4 11-Aug-2010  yamt sync with head.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 16-Sep-2009  yamt sync with head
 1.1.2.1 08-Sep-2009  yamt file component.c was added on branch yamt-nfs-mp on 2009-09-16 13:38:04 +0000
 1.2.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.2.1 06-Mar-2011  rmind sync with head (and fix few botches with this)
 1.4.22.1 18-May-2014  rmind sync with head
 1.4.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7 30-Apr-2020  riastradh Rewrite entropy subsystem.

Primary goals:

1. Use cryptography primitives designed and vetted by cryptographers.
2. Be honest about entropy estimation.
3. Propagate full entropy as soon as possible.
4. Simplify the APIs.
5. Reduce overhead of rnd_add_data and cprng_strong.
6. Reduce side channels of HWRNG data and human input sources.
7. Improve visibility of operation with sysctl and event counters.

Caveat: rngtest is no longer used generically for RND_TYPE_RNG
rndsources. Hardware RNG devices should have hardware-specific
health tests. For example, checking for two repeated 256-bit outputs
works to detect AMD's 2019 RDRAND bug. Not all hardware RNGs are
necessarily designed to produce exactly uniform output.

ENTROPY POOL

- A Keccak sponge, with test vectors, replaces the old LFSR/SHA-1
kludge as the cryptographic primitive.

- `Entropy depletion' is available for testing purposes with a sysctl
knob kern.entropy.depletion; otherwise it is disabled, and once the
system reaches full entropy it is assumed to stay there as far as
modern cryptography is concerned.

- No `entropy estimation' based on sample values. Such `entropy
estimation' is a contradiction in terms, dishonest to users, and a
potential source of side channels. It is the responsibility of the
driver author to study the entropy of the process that generates
the samples.

- Per-CPU gathering pools avoid contention on a global queue.

- Entropy is occasionally consolidated into global pool -- as soon as
it's ready, if we've never reached full entropy, and with a rate
limit afterward. Operators can force consolidation now by running
sysctl -w kern.entropy.consolidate=1.

- rndsink(9) API has been replaced by an epoch counter which changes
whenever entropy is consolidated into the global pool.
. Usage: Cache entropy_epoch() when you seed. If entropy_epoch()
has changed when you're about to use whatever you seeded, reseed.
. Epoch is never zero, so initialize cache to 0 if you want to reseed
on first use.
. Epoch is -1 iff we have never reached full entropy -- in other
words, the old rnd_initial_entropy is (entropy_epoch() != -1) --
but it is better if you check for changes rather than for -1, so
that if the system estimated its own entropy incorrectly, entropy
consolidation has the opportunity to prevent future compromise.

- Sysctls and event counters provide operator visibility into what's
happening:
. kern.entropy.needed - bits of entropy short of full entropy
. kern.entropy.pending - bits known to be pending in per-CPU pools,
can be consolidated with sysctl -w kern.entropy.consolidate=1
. kern.entropy.epoch - number of times consolidation has happened,
never 0, and -1 iff we have never reached full entropy

CPRNG_STRONG

- A cprng_strong instance is now a collection of per-CPU NIST
Hash_DRBGs. There are only two in the system: user_cprng for
/dev/urandom and sysctl kern.?random, and kern_cprng for kernel
users which may need to operate in interrupt context up to IPL_VM.

(Calling cprng_strong in interrupt context does not strike me as a
particularly good idea, so I added an event counter to see whether
anything actually does.)

- Event counters provide operator visibility into when reseeding
happens.

INTEL RDRAND/RDSEED, VIA C3 RNG (CPU_RNG)

- Unwired for now; will be rewired in a subsequent commit.
 1.6 10-Feb-2020  riastradh Omit duplicate rnd_init in rump.
 1.5 30-May-2016  pooka branches: 1.5.18; 1.5.24;
Disable PR kern/51135 hack now that the problem is supposedly
fixed (to see if tests pass).
 1.4 16-May-2016  pooka Add workaround for PR kern/51135

If the rnd component is present, load extra initial entropy to avoid
/dev/random not being able to request it on demand. The extra initial
entropy will allow a few instances of /dev/random, but will eventually
go into the failure mode described in the PR.
 1.3 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> rnd_component.c
 1.1.12.4 09-Jul-2016  skrll Sync with HEAD
 1.1.12.3 29-May-2016  skrll Sync with HEAD
 1.1.12.2 19-Mar-2016  skrll Sync with HEAD
 1.1.12.1 22-Sep-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file rnd_component.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file rnd_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file rnd_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.5.24.1 29-Feb-2020  ad Sync with head.
 1.5.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 08-Sep-2009  pooka branches: 1.1.2; 1.1.24; 1.1.42;
add rump rnd device component
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.2.2 16-Sep-2009  yamt sync with head
 1.1.2.1 08-Sep-2009  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-09-16 13:38:04 +0000
 1.6 14-Apr-2022  pgoyette Split some common stuff into scsi_subr module. This enables loading
of the iscsi module whether or not there are any scsi things built
into the kernel.

Addresses the iscsi portion of kern/56772
 1.5 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 24-Aug-2015  pooka opt files were nop't
 1.2 13-Mar-2014  pooka branches: 1.2.6;
rename component.c -> scsipi_component.c
 1.1 23-Aug-2010  pooka branches: 1.1.2; 1.1.4; 1.1.10; 1.1.14; 1.1.24; 1.1.28;
Split scsipi out of librumpdev_umass into librumpdev_scsipi. umass
still compile time depends on scsipi in the sense of "ifdef
NATAPIBLUES", but I'm not going to fix that now.
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.2 03-Dec-2017  jdolecek update from HEAD
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.10.2 05-Mar-2011  rmind sync with head
 1.1.10.1 23-Aug-2010  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:08 +0000
 1.1.4.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.4.1 23-Aug-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-10-22 09:23:15 +0000
 1.1.2.2 09-Oct-2010  yamt sync with head
 1.1.2.1 23-Aug-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-10-09 03:32:40 +0000
 1.2.6.3 19-Mar-2016  skrll Sync with HEAD
 1.2.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.6.1 22-Sep-2015  skrll Sync with HEAD
 1.1 23-Aug-2010  pooka branches: 1.1.2; 1.1.4; 1.1.10;
Split scsipi out of librumpdev_umass into librumpdev_scsipi. umass
still compile time depends on scsipi in the sense of "ifdef
NATAPIBLUES", but I'm not going to fix that now.
 1.1.10.2 05-Mar-2011  rmind sync with head
 1.1.10.1 23-Aug-2010  rmind file SCSIPI.ioconf was added on branch rmind-uvmplock on 2011-03-05 20:56:08 +0000
 1.1.4.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.4.1 23-Aug-2010  uebayasi file SCSIPI.ioconf was added on branch uebayasi-xip on 2010-10-22 09:23:15 +0000
 1.1.2.2 09-Oct-2010  yamt sync with head
 1.1.2.1 23-Aug-2010  yamt file SCSIPI.ioconf was added on branch yamt-nfs-mp on 2010-10-09 03:32:40 +0000
 1.2 13-Mar-2014  pooka rename component.c -> scsipi_component.c
 1.1 23-Aug-2010  pooka branches: 1.1.2; 1.1.4; 1.1.10; 1.1.14; 1.1.24; 1.1.28;
Split scsipi out of librumpdev_umass into librumpdev_scsipi. umass
still compile time depends on scsipi in the sense of "ifdef
NATAPIBLUES", but I'm not going to fix that now.
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.10.2 05-Mar-2011  rmind sync with head
 1.1.10.1 23-Aug-2010  rmind file component.c was added on branch rmind-uvmplock on 2011-03-05 20:56:08 +0000
 1.1.4.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.4.1 23-Aug-2010  uebayasi file component.c was added on branch uebayasi-xip on 2010-10-22 09:23:15 +0000
 1.1.2.2 09-Oct-2010  yamt sync with head
 1.1.2.1 23-Aug-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-10-09 03:32:40 +0000
 1.6 31-Mar-2022  pgoyette For device modules that provide both auto-config and /dev/xxx
interfaces, make sure that initialization and destruction
follow the proper sequence. This is triggered by the recent
changes to the devsw stuff; per riastradh@ the required call
sequence is:

devsw_attach()
config_init_component() or config_cf*_attach()
...
config_fini_component() or config_cf*_detach()
devsw_detach()

While here, add a few missing calls to some of the detach
routines.

Testing of these changes has been limited to:
1. compile without build break
2. no related test failures from atf
3. modload/modunload work as well as
before.

No functional device testing done, since I don't have any
of these devices. Let me know of any damage I might cause
here!

XXX Some of the modules affected by this commit are already
XXX broken; see kern/56772. This commit does not break
any additional modules (as far as I know).
 1.5 27-Jan-2019  rin Fix merge botches. I hope there's no more left...
 1.4 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.3 12-Dec-2018  alnsn Add missing RCSIDs.
 1.2 26-Jan-2016  pooka branches: 1.2.16; 1.2.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> scsipi_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file scsipi_component.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file scsipi_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file scsipi_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2.18.1 10-Jun-2019  christos Sync with HEAD
 1.2.16.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 23-Aug-2010  pooka branches: 1.1.2; 1.1.4; 1.1.10; 1.1.24; 1.1.42;
Split scsipi out of librumpdev_umass into librumpdev_scsipi. umass
still compile time depends on scsipi in the sense of "ifdef
NATAPIBLUES", but I'm not going to fix that now.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 05-Mar-2011  rmind sync with head
 1.1.10.1 23-Aug-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:08 +0000
 1.1.4.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.4.1 23-Aug-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-10-22 09:23:15 +0000
 1.1.2.2 09-Oct-2010  yamt sync with head
 1.1.2.1 23-Aug-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-10-09 03:32:41 +0000
 1.9 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.8 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.7 24-Aug-2015  pooka continue consolidating non-modular option files
 1.6 13-Mar-2014  pooka branches: 1.6.6;
rename component.c -> sysmon_component.c
 1.5 05-Dec-2010  pooka branches: 1.5.8; 1.5.18; 1.5.22;
whitespace polish
 1.4 19-Oct-2010  pgoyette Build the new swsensor(4) device and add to set lists
 1.3 22-Jul-2010  pgoyette Convert swwdog(4) from a simple defpseudo device to a defpseudodev so
that we can attach a power management handler. The handler prevents
a suspend if the watchdog is active, to be consistent with other
watchdog drivers.

As discussed on tech-kern.
 1.2 16-Feb-2010  pooka branches: 1.2.2; 1.2.4;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 31-Jan-2010  pooka branches: 1.1.2;
Add sysmon rump component.
 1.1.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.4.1 05-Mar-2011  rmind sync with head
 1.2.2.3 11-Aug-2010  yamt sync with head.
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 16-Feb-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.5.22.1 18-May-2014  rmind sync with head
 1.5.18.2 03-Dec-2017  jdolecek update from HEAD
 1.5.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.6.3 19-Mar-2016  skrll Sync with HEAD
 1.6.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.6.6.1 22-Sep-2015  skrll Sync with HEAD
 1.1 22-Jul-2010  pgoyette branches: 1.1.2; 1.1.4; 1.1.10;
Convert swwdog(4) from a simple defpseudo device to a defpseudodev so
that we can attach a power management handler. The handler prevents
a suspend if the watchdog is active, to be consistent with other
watchdog drivers.

As discussed on tech-kern.
 1.1.10.2 05-Mar-2011  rmind sync with head
 1.1.10.1 22-Jul-2010  rmind file SYSMON.ioconf was added on branch rmind-uvmplock on 2011-03-05 20:56:09 +0000
 1.1.4.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.4.1 22-Jul-2010  uebayasi file SYSMON.ioconf was added on branch uebayasi-xip on 2010-08-17 06:47:55 +0000
 1.1.2.2 11-Aug-2010  yamt sync with head.
 1.1.2.1 22-Jul-2010  yamt file SYSMON.ioconf was added on branch yamt-nfs-mp on 2010-08-11 22:55:01 +0000
 1.7 13-Mar-2014  pooka rename component.c -> sysmon_component.c
 1.6 20-Oct-2010  pooka branches: 1.6.8; 1.6.18; 1.6.22;
Attach swsensor only once (it attaches automatically via MODULE
like everything else that is linked in as a module).
 1.5 19-Oct-2010  pgoyette Build the new swsensor(4) device and add to set lists
 1.4 04-Oct-2010  pgoyette Update error message - no funcitonal change.
 1.3 03-Aug-2010  pooka Attach component to make it work after defpseudodev conversion
(yea, i need to fix the infrastructure for this).
 1.2 01-Mar-2010  pooka branches: 1.2.2; 1.2.4;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 31-Jan-2010  pooka branches: 1.1.2;
Add sysmon rump component.
 1.1.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.4.1 05-Mar-2011  rmind sync with head
 1.2.2.4 09-Oct-2010  yamt sync with head
 1.2.2.3 11-Aug-2010  yamt sync with head.
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 01-Mar-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.6.22.1 18-May-2014  rmind sync with head
 1.6.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 31-Jan-2010  pooka branches: 1.1.4; 1.1.24; 1.1.42;
Add sysmon rump component.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 11-Mar-2010  yamt sync with head
 1.1.4.1 31-Jan-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.3 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 23-Apr-2015  pgoyette Update initialization of sysmon rump library sub-components. These are now handled as part of module initialization, and do not require manual invocation.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> sysmon_component.c
 1.1.12.2 19-Mar-2016  skrll Sync with HEAD
 1.1.12.1 06-Jun-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file sysmon_component.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file sysmon_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file sysmon_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2 19-Apr-2017  riastradh branches: 1.2.2; 1.2.4; 1.2.12; 1.2.16;
Modularize ualea(4).

Unclear why we have a separate xyz.ioconf for module and XYZ.ioconf
for rump component, but at least xyz_modcmd obviates the need for
xyz_component.c (though evidently the latter could have been replaced
anyway by RUMP_COMPONENT=ioconf in the rump component Makefile).
 1.1 17-Apr-2017  riastradh New rndsource driver for Araneus Alea II TRNG USB devices.

Disabled by default in x86/GENERIC and usbdevices.config pending
review and testing without rump ugenhc in the way, but enabled in
x86/ALL for compile-testing.

(Hi gson! Finally found a round tuit in my pocket, next to a certain
rectangular one.)
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 19-Apr-2017  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:09 +0000
 1.2.12.2 28-Aug-2017  skrll Sync with HEAD
 1.2.12.1 19-Apr-2017  skrll file Makefile was added on branch nick-nhusb on 2017-08-28 17:53:14 +0000
 1.2.4.2 26-Apr-2017  pgoyette Sync with HEAD
 1.2.4.1 19-Apr-2017  pgoyette file Makefile was added on branch pgoyette-localcount on 2017-04-26 02:53:30 +0000
 1.2.2.2 19-Apr-2017  riastradh 982139
 1.2.2.1 19-Apr-2017  riastradh file Makefile was added on branch bouyer-socketcan on 2017-04-19 00:01:39 +0000
 1.2 18-Apr-2017  riastradh branches: 1.2.2; 1.2.4; 1.2.12; 1.2.16;
Make comment match.
 1.1 17-Apr-2017  riastradh New rndsource driver for Araneus Alea II TRNG USB devices.

Disabled by default in x86/GENERIC and usbdevices.config pending
review and testing without rump ugenhc in the way, but enabled in
x86/ALL for compile-testing.

(Hi gson! Finally found a round tuit in my pocket, next to a certain
rectangular one.)
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 18-Apr-2017  jdolecek file UALEA.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:09 +0000
 1.2.12.2 28-Aug-2017  skrll Sync with HEAD
 1.2.12.1 18-Apr-2017  skrll file UALEA.ioconf was added on branch nick-nhusb on 2017-08-28 17:53:14 +0000
 1.2.4.2 26-Apr-2017  pgoyette Sync with HEAD
 1.2.4.1 18-Apr-2017  pgoyette file UALEA.ioconf was added on branch pgoyette-localcount on 2017-04-26 02:53:30 +0000
 1.2.2.2 18-Apr-2017  riastradh 1190989
 1.2.2.1 18-Apr-2017  riastradh file UALEA.ioconf was added on branch bouyer-socketcan on 2017-04-18 19:41:28 +0000
 1.2 19-Apr-2017  riastradh branches: 1.2.2;
Modularize ualea(4).

Unclear why we have a separate xyz.ioconf for module and XYZ.ioconf
for rump component, but at least xyz_modcmd obviates the need for
xyz_component.c (though evidently the latter could have been replaced
anyway by RUMP_COMPONENT=ioconf in the rump component Makefile).
 1.1 17-Apr-2017  riastradh New rndsource driver for Araneus Alea II TRNG USB devices.

Disabled by default in x86/GENERIC and usbdevices.config pending
review and testing without rump ugenhc in the way, but enabled in
x86/ALL for compile-testing.

(Hi gson! Finally found a round tuit in my pocket, next to a certain
rectangular one.)
 1.2.2.2 19-Apr-2017  riastradh 982139
 1.2.2.1 19-Apr-2017  riastradh file ualea_component.c was added on branch bouyer-socketcan on 2017-04-19 00:01:39 +0000
 1.6 16-Nov-2015  pooka Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.5 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 26-Mar-2010  pooka branches: 1.3.2; 1.3.4; 1.3.6; 1.3.24; 1.3.42;
Remove unused opt_bluetooth.h

plunky: "feel free"
 1.2 22-Mar-2010  pooka Include bthub support.

As mario knows, it should be in another component, but just cram
it here for now until someone solves kernel module dependencies
for us.
 1.1 22-Mar-2010  pooka USB bluetooth device rump component.

This is a curious driver in the sense that unlike all other current
device drivers, it does not require vfs. This is because the driver
is controlled via bluetooth, which is controlled via PF_BLUETOOTH
sockets (as opposed to a /dev node).
 1.3.42.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.24.1 03-Dec-2017  jdolecek update from HEAD
 1.3.6.2 11-Aug-2010  yamt sync with head.
 1.3.6.1 26-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:01 +0000
 1.3.4.2 30-May-2010  rmind sync with head
 1.3.4.1 26-Mar-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.3.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.2.1 26-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.2 22-Mar-2010  pooka branches: 1.2.2; 1.2.4; 1.2.6;
Include bthub support.

As mario knows, it should be in another component, but just cram
it here for now until someone solves kernel module dependencies
for us.
 1.1 22-Mar-2010  pooka USB bluetooth device rump component.

This is a curious driver in the sense that unlike all other current
device drivers, it does not require vfs. This is because the driver
is controlled via bluetooth, which is controlled via PF_BLUETOOTH
sockets (as opposed to a /dev node).
 1.2.6.2 11-Aug-2010  yamt sync with head.
 1.2.6.1 22-Mar-2010  yamt file UBT.ioconf was added on branch yamt-nfs-mp on 2010-08-11 22:55:01 +0000
 1.2.4.2 30-May-2010  rmind sync with head
 1.2.4.1 22-Mar-2010  rmind file UBT.ioconf was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.2.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.2.1 22-Mar-2010  uebayasi file UBT.ioconf was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 22-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
USB bluetooth device rump component.

This is a curious driver in the sense that unlike all other current
device drivers, it does not require vfs. This is because the driver
is controlled via bluetooth, which is controlled via PF_BLUETOOTH
sockets (as opposed to a /dev node).
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 22-Mar-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:01 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 22-Mar-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 22-Mar-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.5 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.4 26-Mar-2010  pooka branches: 1.4.2; 1.4.4; 1.4.6; 1.4.24; 1.4.42;
Catch up with cosmetic changes to output from config(1)
 1.3 25-Mar-2010  pooka use config_init_component()
 1.2 22-Mar-2010  pooka Include bthub support.

As mario knows, it should be in another component, but just cram
it here for now until someone solves kernel module dependencies
for us.
 1.1 22-Mar-2010  pooka USB bluetooth device rump component.

This is a curious driver in the sense that unlike all other current
device drivers, it does not require vfs. This is because the driver
is controlled via bluetooth, which is controlled via PF_BLUETOOTH
sockets (as opposed to a /dev node).
 1.4.42.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.24.1 03-Dec-2017  jdolecek update from HEAD
 1.4.6.2 11-Aug-2010  yamt sync with head.
 1.4.6.1 26-Mar-2010  yamt file ubt_at_usb.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:01 +0000
 1.4.4.2 30-May-2010  rmind sync with head
 1.4.4.1 26-Mar-2010  rmind file ubt_at_usb.c was added on branch rmind-uvmplock on 2010-05-30 05:18:04 +0000
 1.4.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.4.2.1 26-Mar-2010  uebayasi file ubt_at_usb.c was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.7 26-Jan-2016  pooka nuke a few missed -Ifactiondir CPPFLAGSitions.
 1.6 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.5 14-Jun-2010  pooka branches: 1.5.18; 1.5.36;
tty support is finally a standalone component
 1.4 01-Mar-2010  pooka branches: 1.4.2; 1.4.4; 1.4.6;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.
 1.3 01-Mar-2010  pooka add u3g
 1.2 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.4.6.3 17-Aug-2010  uebayasi Sync with HEAD.
 1.4.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.4.6.1 01-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.4.4.1 03-Jul-2010  rmind sync with head
 1.4.2.3 11-Aug-2010  yamt sync with head.
 1.4.2.2 11-Mar-2010  yamt sync with head
 1.4.2.1 01-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.5.36.2 19-Mar-2016  skrll Sync with HEAD
 1.5.36.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.5.18.1 03-Dec-2017  jdolecek update from HEAD
 1.6 22-Jun-2017  christos should be umodeswitch!
 1.5 30-Aug-2010  pooka branches: 1.5.18; 1.5.36; 1.5.52;
doesn't need files.rump
 1.4 08-Mar-2010  pooka branches: 1.4.2; 1.4.4; 1.4.6;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.3 01-Mar-2010  pooka add u3g
 1.2 12-Feb-2010  pooka move files.rump out of wip
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.4.6.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.4.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.4.6.1 08-Mar-2010  uebayasi file UCOM.ioconf was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.4.4.1 05-Mar-2011  rmind sync with head
 1.4.2.3 09-Oct-2010  yamt sync with head
 1.4.2.2 11-Mar-2010  yamt sync with head
 1.4.2.1 08-Mar-2010  yamt file UCOM.ioconf was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.5.52.1 12-Feb-2018  snj Pull up following revision(s) (requested by christos in ticket #544):
sys/rump/dev/lib/libucom/UCOM.ioconf: 1.6
should be umodeswitch!
 1.5.36.1 28-Aug-2017  skrll Sync with HEAD
 1.5.18.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 11-Feb-2010  pooka branches: 1.1.2; 1.1.6; 1.1.24; 1.1.42;
Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 11-Feb-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 11-Feb-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.1 11-Feb-2010  pooka branches: 1.1.2; 1.1.6;
Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 11-Feb-2010  uebayasi file ucom.h was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 11-Feb-2010  yamt file ucom.h was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.12 31-Mar-2022  pgoyette For device modules that provide both auto-config and /dev/xxx
interfaces, make sure that initialization and destruction
follow the proper sequence. This is triggered by the recent
changes to the devsw stuff; per riastradh@ the required call
sequence is:

devsw_attach()
config_init_component() or config_cf*_attach()
...
config_fini_component() or config_cf*_detach()
devsw_detach()

While here, add a few missing calls to some of the detach
routines.

Testing of these changes has been limited to:
1. compile without build break
2. no related test failures from atf
3. modload/modunload work as well as
before.

No functional device testing done, since I don't have any
of these devices. Let me know of any damage I might cause
here!

XXX Some of the modules affected by this commit are already
XXX broken; see kern/56772. This commit does not break
any additional modules (as far as I know).
 1.11 27-Jan-2019  rin Fix merge botches. I hope there's no more left...
 1.10 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.9 12-Dec-2018  alnsn Add missing RCSIDs.
 1.8 26-Jan-2016  pooka branches: 1.8.16; 1.8.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.7 26-Mar-2010  pooka branches: 1.7.2; 1.7.20; 1.7.38;
Catch up with cosmetic changes to output from config(1)
 1.6 25-Mar-2010  pooka use config_init_component()
 1.5 08-Mar-2010  pooka branches: 1.5.2; 1.5.4;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.4 07-Mar-2010  pooka Make rump devfs expose ttyU1 and dtyU1 as well.
 1.3 01-Mar-2010  pooka Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.2 01-Mar-2010  pooka add u3g
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.5.4.1 06-Mar-2011  rmind sync with head (and fix few botches with this)
 1.5.2.3 11-Aug-2010  yamt sync with head.
 1.5.2.2 11-Mar-2010  yamt sync with head
 1.5.2.1 08-Mar-2010  yamt file ucom_at_usb.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.7.38.1 19-Mar-2016  skrll Sync with HEAD
 1.7.20.1 03-Dec-2017  jdolecek update from HEAD
 1.7.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.7.2.1 26-Mar-2010  uebayasi file ucom_at_usb.c was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.8.18.1 10-Jun-2019  christos Sync with HEAD
 1.8.16.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.14 23-Apr-2016  skrll Merge nick-nhusb

- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
 1.13 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.12 16-Nov-2015  pooka Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.11 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.10 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.9 14-Sep-2015  pooka Fully build ugenhc only on archs where libusb is built.
 1.8 13-Mar-2014  pooka branches: 1.8.6;
rename rumpcomp_user.* -> ugenhc_user.*
 1.7 19-Sep-2013  pooka Move the bus_dma implementation that works only with ugenhc into the
ugenhc component itself.
 1.6 28-Apr-2013  pooka branches: 1.6.4;
problem with ioconf.c solved, reenable
 1.5 28-Apr-2013  pooka duh, the untypoed version doesn't work with bsd.ioconf.mk. comment it
out while i figure it out
 1.4 28-Apr-2013  pooka typo
 1.3 28-Apr-2013  pooka The ioctl hypercall is used only by the usb host controller driver,
so make it exclusive to that component. I'm happy to see it gone.
 1.2 08-Mar-2010  pooka branches: 1.2.2; 1.2.6; 1.2.14; 1.2.24;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.2.24.3 03-Dec-2017  jdolecek update from HEAD
 1.2.24.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.24.1 23-Jun-2013  tls resync from head
 1.2.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.6.1 08-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 08-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.6.4.1 18-May-2014  rmind sync with head
 1.8.6.4 19-Mar-2016  skrll Sync with HEAD
 1.8.6.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.8.6.2 22-Sep-2015  skrll Sync with HEAD
 1.8.6.1 02-Dec-2014  skrll Step #1 of memory allocation re-organisation.

Centralised the buffer allocation routine which now supports DMA
and non-DMA capable host controllers. Remove the
ubm_{alloc,free}m methods from usbd_bus_methods.

The buffer allocation is only allowed in thread context and,
therefore, negates the usefulness of the reserve dma code which
is removed in this change.

USBD_NO_COPY is also no longer required as usbd_transfer and
usbd_transfer_complete now track buffer usage and handle any
copying.
 1.1 08-Mar-2010  pooka branches: 1.1.2; 1.1.6;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 08-Mar-2010  uebayasi file UGENHC.ioconf was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 08-Mar-2010  yamt file UGENHC.ioconf was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.7 13-Mar-2014  pooka rename rumpcomp_user.* -> ugenhc_user.*
 1.6 04-Jul-2013  pooka Some systems provide ioctl() via unistd.h
(not that this is going to work there, but at least we don't
get unnecessary compiler warnings)
 1.5 30-Apr-2013  pooka branches: 1.5.4; 1.5.6;
Translate error codes between the hypervisor and rump kernel.
 1.4 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.3 29-Apr-2013  christos don't compile the for kernel
 1.2 28-Apr-2013  pooka need errno
 1.1 28-Apr-2013  pooka The ioctl hypercall is used only by the usb host controller driver,
so make it exclusive to that component. I'm happy to see it gone.
 1.5.6.2 18-May-2014  rmind sync with head
 1.5.6.1 28-Aug-2013  rmind sync with head
 1.5.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.4.2 23-Jun-2013  tls resync from head
 1.5.4.1 30-Apr-2013  tls file rumpcomp_user.c was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.2 13-Mar-2014  pooka rename rumpcomp_user.* -> ugenhc_user.*
 1.1 28-Apr-2013  pooka branches: 1.1.4; 1.1.6;
The ioctl hypercall is used only by the usb host controller driver,
so make it exclusive to that component. I'm happy to see it gone.
 1.1.6.1 18-May-2014  rmind sync with head
 1.1.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 28-Apr-2013  tls file rumpcomp_user.h was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 11-Feb-2010  pooka branches: 1.1.2; 1.1.6; 1.1.24; 1.1.42;
Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 11-Feb-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 11-Feb-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.31 03-Mar-2022  riastradh usb: Hold pipe lock across upm_transfer and upm_start.

This simplifies the code and fixes races with abort. Access to the
pipe's queue is now done exclusively while the pipe is locked.
 1.30 03-Mar-2022  riastradh usb: Factor usb_insert_transfer out of upm_transfer and make private.

Almost every upm_transfer function starts with:

mutex_enter(&sc->sc_lock);
err = usb_insert_transfer(xfer);
mutex_exit(&sc->sc_lock);
if (err)
return err;

Some of them have debug messages sprinkled in here too, or assert
that err == USBD_NORMAL_COMPLETION (alternative is USBD_IN_PROGRESS,
only for pipes with up_running or up_serialise, presumably not
applicable for these types of pipes). Some of them also assert
xfer->ux_status == USBD_NOT_STARTED, which is guaranteed on entry and
preserved by usb_insert_transer.

Exceptions:

- arch/mips/adm5120/dev/ahci.c ahci_device_isoc_transfer just returns
USBD_NORMAL_COMPLETION, but I'm pretty sure this is and always has
been broken anyway, so won't make anything worse (if anything, might
make it better...)

- external/bsd/dwc2/dwc2.c dwc2_device_bulk_transfer and
dwc2_device_isoc_transfer _also_ issue dwc2_device_start(xfer)
under the lock. This is probably a better way to do it, but let's
do it uniformly across all HCIs at once.

- rump/dev/lib/libugenhc/ugenhc.c rumpusb_device_bulk_transfer
sometimes returns USBD_IN_PROGRESS _without_ queueing the transfer,
in the !rump_threads case. Not really sure how this is supposed to
work... If it actually breaks anything, we can figure it out.
 1.29 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.28 24-Apr-2021  thorpej branches: 1.28.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.27 03-Sep-2018  riastradh branches: 1.27.14;
Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.26 17-Apr-2017  riastradh branches: 1.26.10; 1.26.12;
Fix bulk xfer buffer with usedma = false.
 1.25 17-Apr-2017  riastradh Fix order of outputs in rumpuser_open call.

Now ugenhc works again after a four-year hiatus...
 1.24 23-Apr-2016  skrll branches: 1.24.2; 1.24.4;
Merge nick-nhusb

- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
 1.23 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.22 02-Aug-2014  skrll branches: 1.22.2; 1.22.4; 1.22.8;
Fix error checking mistake introduced in r1.15.

Hi Antti!
 1.21 02-Aug-2014  skrll First pass at adapting to usbmp.
 1.20 02-Aug-2014  skrll Let's believe the spec when it says "must".
 1.19 02-Aug-2014  skrll Return a valid error in rumpusb_root_intr_start on failure.
 1.18 20-Mar-2014  christos branches: 1.18.2;
kill sprintf
 1.17 13-Mar-2014  pooka rename rumpcomp_user.* -> ugenhc_user.*
 1.16 13-Sep-2013  joerg GC rumpusb_device_intr_methods.
 1.15 30-Apr-2013  pooka branches: 1.15.4;
Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.14 29-Apr-2013  pooka Reduce hypercalls related to reading to essentially an amalgamation
of readv and preadv. ditto for writing. Hypercalls are so seldomly
used that it doesn't justify 3x the calls for syntactic sugar.
 1.13 28-Apr-2013  pooka The ioctl hypercall is used only by the usb host controller driver,
so make it exclusive to that component. I'm happy to see it gone.
 1.12 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.11 14-Sep-2012  pooka Do not assume that O_FOO flags have matching values in the rump kernel
and hypervisor.
 1.10 10-Jun-2012  mrg branches: 1.10.2;
merge the jmcneill-usbmp branch. many thanks to jared for the
initial work, and every one else who has tested things for me.
this is largely my fault at this point :-)

the main changes are something like:

- usbd_bus_methods{} gains a get_lock() to enable the
host controller to provide a lock for the USB code.
if the lock isn't provided, old-style protection is
(partially) applied.

- ehci/ohci/uhci have been converted to the new
interfaces, including mutex/cv/etc conversion.

- usbdivar.h contains a discussion about locking and
what locks are held for which method calls. more
to come for usbdi(9) here.

- audio drivers (uaudio, umidi, auvitek) have been
properly SMPified now that USB is ready.

- scsi drivers have been modified to take the kernel
lock explicitly before calling into scsi code.

- usb pipes are associated with a lock, that is the
same as the controller lock. (this could be split
up further in the future.)

- several usbfoo_locked() or usbfoo_unlocked()
functions have been added to the usbdi(9) to
enable functionality with or without the USB
lock (per controller) already being held.

the TODO.usbmp file has specific details on what is left to
do, including what device-specific changes should be done now
that the whole framework is ready.
 1.9 22-Mar-2010  pooka branches: 1.9.2; 1.9.10; 1.9.14;
* support isochronous transfers (for as much as they can be supported
considering our ugen driver doesn't support isochronous write.
kern/25960 seems to contain a patch and could be investigated for that)
* add a dirty rotten hack which makes interrupt transfers of >16
work for me
 1.8 23-Feb-2010  pooka branches: 1.8.2; 1.8.4;
* abort correct endpoint in bulk xfers
* actually free memory in the freem method (well, usually stick
it to the usb freelist, but same thing)
 1.7 22-Feb-2010  pooka * get UDESC_CONFIG for proper config index
* support UR_SET_CONFIG for root hub
* set port change bits for root hub interrupts
+ cosmetics
 1.6 20-Feb-2010  pooka Fix snafu with error reporting in bulk transfers.
 1.5 18-Feb-2010  pooka Don't leak control endpoint descriptors.
 1.4 18-Feb-2010  pooka Actually, detach is possible enough if the device isn't in use.
So just support it.
 1.3 18-Feb-2010  pooka Change match to be based on the existence of the ugen device node
and signal the root hub interrupt only once we are succesfully able
to open the device node. This makes it possible to insert a device
after the rump kernel was booted and have it succesfully attach
(does not make detach possible yet, though, as there are some
ugen and host kernel uhci/ohci/ehci evil crashies with that).

XXX: optimally, match would fail if there is a permanent error in
opening. However, it is difficult to figure out the difference
between the device backing ugen not being present, a transient
error in opening and a permanent error in opening. For example,
which of the latter two would EPERM be? And, ugen returns ENXIO
if the device is not present, but how would be know that's really
the case and not some other ENXIO from elsewhere in the stack?
 1.2 17-Feb-2010  pooka * allow one more request
* print warning if a request which might fail, fails
* report error from bulk transfers
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.8.4.1 30-May-2010  rmind sync with head
 1.8.2.3 11-Aug-2010  yamt sync with head.
 1.8.2.2 11-Mar-2010  yamt sync with head
 1.8.2.1 23-Feb-2010  yamt file ugenhc.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:33 +0000
 1.9.14.1 24-Feb-2012  mrg add a couple of comments to note areas will need work to enable mp.
 1.9.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.9.10.1 30-Oct-2012  yamt sync with head
 1.9.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.9.2.1 22-Mar-2010  uebayasi file ugenhc.c was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.10.2.4 03-Dec-2017  jdolecek update from HEAD
 1.10.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.10.2.2 23-Jun-2013  tls resync from head
 1.10.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.15.4.1 18-May-2014  rmind sync with head
 1.18.2.1 10-Aug-2014  tls Rebase.
 1.22.8.1 06-Sep-2016  skrll First pass at netbsd-7 updated with USB code from HEAD
 1.22.4.14 28-Aug-2017  skrll Sync with HEAD
 1.22.4.13 19-Mar-2016  skrll Sync with HEAD
 1.22.4.12 22-Oct-2015  skrll Simplify *_XFER2SC using ux_bus
 1.22.4.11 20-Oct-2015  skrll Consistently providei/use *_{XFER,PIPE,BUS}2SC, etc macros
 1.22.4.10 11-Oct-2015  skrll Update ubm_allocx with the isoc frame count parameter and use it in
dwctwo(4)
 1.22.4.9 19-Mar-2015  skrll Do the same as OpenBSD and get rid of the *_handle typedefs and use
plain structures insteads
 1.22.4.8 05-Dec-2014  skrll KNF. Remove ( ) from return statements.
 1.22.4.7 04-Dec-2014  skrll Rework roothub control transfers so that much of the code is shared
across HCDs.

I have retained the vendor/product reporting for each HCD for now,
but it maybe get removed later.

ahci(4) now reports a language table and uses the usb_makestrdesc
function instead of rolling its own version.
 1.22.4.6 03-Dec-2014  skrll Rename usbroothub_subr.[ch] to usbroothub.[ch]
 1.22.4.5 03-Dec-2014  skrll Provide a USETWD macro for use with USB words designated
initialisers.
 1.22.4.4 03-Dec-2014  skrll The grand renaming of structure members.

No functional change.
 1.22.4.3 02-Dec-2014  skrll Step #1 of memory allocation re-organisation.

Centralised the buffer allocation routine which now supports DMA
and non-DMA capable host controllers. Remove the
ubm_{alloc,free}m methods from usbd_bus_methods.

The buffer allocation is only allowed in thread context and,
therefore, negates the usefulness of the reserve dma code which
is removed in this change.

USBD_NO_COPY is also no longer required as usbd_transfer and
usbd_transfer_complete now track buffer usage and handle any
copying.
 1.22.4.2 01-Dec-2014  skrll Add prefixes to method structures member names. No functional change.
 1.22.4.1 30-Nov-2014  skrll Use C99 types. u_int{8,16,32,64}_t to uint{8,16,32,64}_t.

No functional change.
 1.22.2.2 19-Apr-2017  snj Pull up following revision(s) (requested by skrll in ticket #1403):
sys/rump/dev/lib/libugenhc/ugenhc.c: revision 1.25, 1.26
Fix order of outputs in rumpuser_open call.
Now ugenhc works again after a four-year hiatus...
--
Fix bulk xfer buffer with usedma = false.
 1.22.2.1 05-Apr-2017  snj Pull up following revision(s) (requested by skrll in ticket #1395):
share/man/man4/axe.4: netbsd-7-nhusb
share/man/man4/axen.4: netbsd-7-nhusb
share/man/man4/cdce.4: netbsd-7-nhusb
share/man/man4/uaudio.4: netbsd-7-nhusb
share/man/man4/ucom.4: netbsd-7-nhusb
share/man/man4/uep.4: netbsd-7-nhusb
share/man/man4/urtw.4: netbsd-7-nhusb
share/man/man4/usb.4: netbsd-7-nhusb
share/man/man4/uyap.4: netbsd-7-nhusb
share/man/man4/xhci.4: netbsd-7-nhusb
share/man/man9/usbdi.9: netbsd-7-nhusb
sys/arch/amd64/conf/ALL: netbsd-7-nhusb
sys/arch/amd64/conf/GENERIC: netbsd-7-nhusb
sys/arch/amiga/dev/slhci_zbus.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_otg.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_usb.c: netbsd-7-nhusb
sys/arch/arm/amlogic/amlogic_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/at91/at91ohci.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm2835_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm53xx_usb.c: netbsd-7-nhusb
sys/arch/arm/ep93xx/epohci.c: netbsd-7-nhusb
sys/arch/arm/gemini/obio_ehci.c: netbsd-7-nhusb
sys/arch/arm/imx/files.imx23: netbsd-7-nhusb
sys/arch/arm/imx/imxusb.c: netbsd-7-nhusb
sys/arch/arm/imx/imxusbreg.h: netbsd-7-nhusb
sys/arch/arm/omap/obio_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/omap3_ehci.c: netbsd-7-nhusb
sys/arch/arm/omap/omapl1x_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/tiotg.c: netbsd-7-nhusb
sys/arch/arm/s3c2xx0/ohci_s3c24x0.c: netbsd-7-nhusb
sys/arch/arm/samsung/exynos_usb.c: netbsd-7-nhusb
sys/arch/arm/xscale/pxa2x0_ohci.c: netbsd-7-nhusb
sys/arch/arm/zynq/zynq_usb.c: netbsd-7-nhusb
sys/arch/hpcarm/dev/nbp_slhci.c: netbsd-7-nhusb
sys/arch/hpcmips/dev/plumohci.c: netbsd-7-nhusb
sys/arch/i386/conf/ALL: netbsd-7-nhusb
sys/arch/i386/conf/GENERIC: netbsd-7-nhusb
sys/arch/i386/pci/gcscehci.c: netbsd-7-nhusb
sys/arch/luna68k/conf/GENERIC: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahci.c: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahcivar.h: netbsd-7-nhusb
sys/arch/mips/alchemy/dev/ohci_aubus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ehci_arbus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ohci_arbus.c: netbsd-7-nhusb
sys/arch/mips/conf/files.adm5120: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ehci.c: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ohci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ehci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ohci.c: netbsd-7-nhusb
sys/arch/playstation2/dev/ohci_sbus.c: netbsd-7-nhusb
sys/arch/powerpc/booke/dev/pq3ehci.c: netbsd-7-nhusb
sys/arch/powerpc/ibm4xx/dev/dwctwo_plb.c: netbsd-7-nhusb
sys/arch/x68k/dev/slhci_intio.c: netbsd-7-nhusb
sys/conf/files: netbsd-7-nhusb
sys/dev/cardbus/ehci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/ohci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/uhci_cardbus.c: netbsd-7-nhusb
sys/dev/ic/sl811hs.c: netbsd-7-nhusb
sys/dev/ic/sl811hsvar.h: netbsd-7-nhusb
sys/dev/isa/slhci_isa.c: netbsd-7-nhusb
sys/dev/marvell/ehci_mv.c: netbsd-7-nhusb
sys/dev/pci/ehci_pci.c: netbsd-7-nhusb
sys/dev/pci/ohci_pci.c: netbsd-7-nhusb
sys/dev/pci/uhci_pci.c: netbsd-7-nhusb
sys/dev/pci/xhci_pci.c: netbsd-7-nhusb
sys/dev/pcmcia/slhci_pcmcia.c: netbsd-7-nhusb
sys/dev/usb/Makefile.usbdevs: netbsd-7-nhusb
sys/dev/usb/TODO: netbsd-7-nhusb
sys/dev/usb/TODO.usbmp: netbsd-7-nhusb
sys/dev/usb/aubtfwl.c: netbsd-7-nhusb
sys/dev/usb/auvitek.c: netbsd-7-nhusb
sys/dev/usb/auvitek_audio.c: netbsd-7-nhusb
sys/dev/usb/auvitek_dtv.c: netbsd-7-nhusb
sys/dev/usb/auvitek_i2c.c: netbsd-7-nhusb
sys/dev/usb/auvitek_video.c: netbsd-7-nhusb
sys/dev/usb/auvitekvar.h: netbsd-7-nhusb
sys/dev/usb/ehci.c: netbsd-7-nhusb
sys/dev/usb/ehcireg.h: netbsd-7-nhusb
sys/dev/usb/ehcivar.h: netbsd-7-nhusb
sys/dev/usb/emdtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_dtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_ir.c: netbsd-7-nhusb
sys/dev/usb/emdtvvar.h: netbsd-7-nhusb
sys/dev/usb/ezload.c: netbsd-7-nhusb
sys/dev/usb/ezload.h: netbsd-7-nhusb
sys/dev/usb/files.usb: netbsd-7-nhusb
sys/dev/usb/hid.c: netbsd-7-nhusb
sys/dev/usb/hid.h: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.c: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.h: netbsd-7-nhusb
sys/dev/usb/if_atu.c: netbsd-7-nhusb
sys/dev/usb/if_atureg.h: netbsd-7-nhusb
sys/dev/usb/if_aue.c: netbsd-7-nhusb
sys/dev/usb/if_auereg.h: netbsd-7-nhusb
sys/dev/usb/if_axe.c: netbsd-7-nhusb
sys/dev/usb/if_axen.c: netbsd-7-nhusb
sys/dev/usb/if_axenreg.h: netbsd-7-nhusb
sys/dev/usb/if_axereg.h: netbsd-7-nhusb
sys/dev/usb/if_cdce.c: netbsd-7-nhusb
sys/dev/usb/if_cdcereg.h: netbsd-7-nhusb
sys/dev/usb/if_cue.c: netbsd-7-nhusb
sys/dev/usb/if_cuereg.h: netbsd-7-nhusb
sys/dev/usb/if_kue.c: netbsd-7-nhusb
sys/dev/usb/if_kuereg.h: netbsd-7-nhusb
sys/dev/usb/if_otus.c: netbsd-7-nhusb
sys/dev/usb/if_otusvar.h: netbsd-7-nhusb
sys/dev/usb/if_rum.c: netbsd-7-nhusb
sys/dev/usb/if_rumreg.h: netbsd-7-nhusb
sys/dev/usb/if_rumvar.h: netbsd-7-nhusb
sys/dev/usb/if_run.c: netbsd-7-nhusb
sys/dev/usb/if_runvar.h: netbsd-7-nhusb
sys/dev/usb/if_smsc.c: netbsd-7-nhusb
sys/dev/usb/if_smscreg.h: netbsd-7-nhusb
sys/dev/usb/if_smscvar.h: netbsd-7-nhusb
sys/dev/usb/if_udav.c: netbsd-7-nhusb
sys/dev/usb/if_udavreg.h: netbsd-7-nhusb
sys/dev/usb/if_upgt.c: netbsd-7-nhusb
sys/dev/usb/if_upgtvar.h: netbsd-7-nhusb
sys/dev/usb/if_upl.c: netbsd-7-nhusb
sys/dev/usb/if_ural.c: netbsd-7-nhusb
sys/dev/usb/if_uralreg.h: netbsd-7-nhusb
sys/dev/usb/if_uralvar.h: netbsd-7-nhusb
sys/dev/usb/if_url.c: netbsd-7-nhusb
sys/dev/usb/if_urlreg.h: netbsd-7-nhusb
sys/dev/usb/if_urndis.c: netbsd-7-nhusb
sys/dev/usb/if_urndisreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtw.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn_data.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnvar.h: netbsd-7-nhusb
sys/dev/usb/if_urtwreg.h: netbsd-7-nhusb
sys/dev/usb/if_zyd.c: netbsd-7-nhusb
sys/dev/usb/if_zydreg.h: netbsd-7-nhusb
sys/dev/usb/irmce.c: netbsd-7-nhusb
sys/dev/usb/moscom.c: netbsd-7-nhusb
sys/dev/usb/motg.c: netbsd-7-nhusb
sys/dev/usb/motgvar.h: netbsd-7-nhusb
sys/dev/usb/ohci.c: netbsd-7-nhusb
sys/dev/usb/ohcireg.h: netbsd-7-nhusb
sys/dev/usb/ohcivar.h: netbsd-7-nhusb
sys/dev/usb/pseye.c: netbsd-7-nhusb
sys/dev/usb/slurm.c: netbsd-7-nhusb
sys/dev/usb/stuirda.c: netbsd-7-nhusb
sys/dev/usb/u3g.c: netbsd-7-nhusb
sys/dev/usb/uark.c: netbsd-7-nhusb
sys/dev/usb/uatp.c: netbsd-7-nhusb
sys/dev/usb/uaudio.c: netbsd-7-nhusb
sys/dev/usb/uberry.c: netbsd-7-nhusb
sys/dev/usb/ubsa.c: netbsd-7-nhusb
sys/dev/usb/ubsa_common.c: netbsd-7-nhusb
sys/dev/usb/ubsavar.h: netbsd-7-nhusb
sys/dev/usb/ubt.c: netbsd-7-nhusb
sys/dev/usb/uchcom.c: netbsd-7-nhusb
sys/dev/usb/ucom.c: netbsd-7-nhusb
sys/dev/usb/ucomvar.h: netbsd-7-nhusb
sys/dev/usb/ucycom.c: netbsd-7-nhusb
sys/dev/usb/udl.c: netbsd-7-nhusb
sys/dev/usb/udl.h: netbsd-7-nhusb
sys/dev/usb/udsbr.c: netbsd-7-nhusb
sys/dev/usb/udsir.c: netbsd-7-nhusb
sys/dev/usb/uep.c: netbsd-7-nhusb
sys/dev/usb/uftdi.c: netbsd-7-nhusb
sys/dev/usb/uftdireg.h: netbsd-7-nhusb
sys/dev/usb/ugen.c: netbsd-7-nhusb
sys/dev/usb/ugensa.c: netbsd-7-nhusb
sys/dev/usb/uhci.c: netbsd-7-nhusb
sys/dev/usb/uhcireg.h: netbsd-7-nhusb
sys/dev/usb/uhcivar.h: netbsd-7-nhusb
sys/dev/usb/uhid.c: netbsd-7-nhusb
sys/dev/usb/uhidev.c: netbsd-7-nhusb
sys/dev/usb/uhidev.h: netbsd-7-nhusb
sys/dev/usb/uhmodem.c: netbsd-7-nhusb
sys/dev/usb/uhso.c: netbsd-7-nhusb
sys/dev/usb/uhub.c: netbsd-7-nhusb
sys/dev/usb/uipad.c: netbsd-7-nhusb
sys/dev/usb/uipaq.c: netbsd-7-nhusb
sys/dev/usb/uirda.c: netbsd-7-nhusb
sys/dev/usb/uirdavar.h: netbsd-7-nhusb
sys/dev/usb/ukbd.c: netbsd-7-nhusb
sys/dev/usb/ukbdmap.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.h: netbsd-7-nhusb
sys/dev/usb/ulpt.c: netbsd-7-nhusb
sys/dev/usb/umass.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.h: netbsd-7-nhusb
sys/dev/usb/umass_quirks.c: netbsd-7-nhusb
sys/dev/usb/umass_quirks.h: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.c: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.h: netbsd-7-nhusb
sys/dev/usb/umassvar.h: netbsd-7-nhusb
sys/dev/usb/umcs.c: netbsd-7-nhusb
sys/dev/usb/umct.c: netbsd-7-nhusb
sys/dev/usb/umidi.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.h: netbsd-7-nhusb
sys/dev/usb/umodem.c: netbsd-7-nhusb
sys/dev/usb/umodem_common.c: netbsd-7-nhusb
sys/dev/usb/umodemvar.h: netbsd-7-nhusb
sys/dev/usb/ums.c: netbsd-7-nhusb
sys/dev/usb/uplcom.c: netbsd-7-nhusb
sys/dev/usb/urio.c: netbsd-7-nhusb
sys/dev/usb/urio.h: netbsd-7-nhusb
sys/dev/usb/usb.c: netbsd-7-nhusb
sys/dev/usb/usb.h: netbsd-7-nhusb
sys/dev/usb/usb_mem.c: netbsd-7-nhusb
sys/dev/usb/usb_mem.h: netbsd-7-nhusb
sys/dev/usb/usb_quirks.c: netbsd-7-nhusb
sys/dev/usb/usb_quirks.h: netbsd-7-nhusb
sys/dev/usb/usb_subr.c: netbsd-7-nhusb
sys/dev/usb/usbdevices.config: netbsd-7-nhusb
sys/dev/usb/usbdevs: netbsd-7-nhusb
sys/dev/usb/usbdevs.h: netbsd-7-nhusb
sys/dev/usb/usbdevs_data.h: netbsd-7-nhusb
sys/dev/usb/usbdi.c: netbsd-7-nhusb
sys/dev/usb/usbdi.h: netbsd-7-nhusb
sys/dev/usb/usbdi_util.c: netbsd-7-nhusb
sys/dev/usb/usbdi_util.h: netbsd-7-nhusb
sys/dev/usb/usbdivar.h: netbsd-7-nhusb
sys/dev/usb/usbhid.h: netbsd-7-nhusb
sys/dev/usb/usbhist.h: netbsd-7-nhusb
sys/dev/usb/usbroothub.c: netbsd-7-nhusb
sys/dev/usb/usbroothub.h: netbsd-7-nhusb
sys/dev/usb/usbroothub_subr.c: delete
sys/dev/usb/usbroothub_subr.h: delete
sys/dev/usb/uscanner.c: netbsd-7-nhusb
sys/dev/usb/uslsa.c: netbsd-7-nhusb
sys/dev/usb/usscanner.c: netbsd-7-nhusb
sys/dev/usb/ustir.c: netbsd-7-nhusb
sys/dev/usb/uthum.c: netbsd-7-nhusb
sys/dev/usb/utoppy.c: netbsd-7-nhusb
sys/dev/usb/uts.c: netbsd-7-nhusb
sys/dev/usb/uvideo.c: netbsd-7-nhusb
sys/dev/usb/uvisor.c: netbsd-7-nhusb
sys/dev/usb/uvscom.c: netbsd-7-nhusb
sys/dev/usb/uyap.c: netbsd-7-nhusb
sys/dev/usb/uyap_firmware.h: netbsd-7-nhusb
sys/dev/usb/uyurex.c: netbsd-7-nhusb
sys/dev/usb/x1input_rdesc.h: netbsd-7-nhusb
sys/dev/usb/xhci.c: netbsd-7-nhusb
sys/dev/usb/xhcireg.h: netbsd-7-nhusb
sys/dev/usb/xhcivar.h: netbsd-7-nhusb
sys/dev/usb/xinput_rdesc.h: netbsd-7-nhusb
sys/external/bsd/common/conf/files.linux: netbsd-7-nhusb
sys/external/bsd/common/include/linux/err.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/kernel.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/workqueue.h: netbsd-7-nhusb
sys/external/bsd/common/linux/linux_work.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/atombios_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/drm/files.drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/i915drm/files.i915drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/include/linux/err.h: delete
sys/external/bsd/drm2/include/linux/workqueue.h: delete
sys/external/bsd/drm2/linux/files.drmkms_linux: netbsd-7-nhusb
sys/external/bsd/drm2/linux/linux_work.c: delete
sys/external/bsd/dwc2/dwc2.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2var.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwctwo2netbsd: netbsd-7-nhusb
sys/external/bsd/dwc2/conf/files.dwc2: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_coreintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdddma.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hw.h: netbsd-7-nhusb
sys/modules/drmkms_linux/Makefile: netbsd-7-nhusb
sys/modules/i915drmkms/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libugenhc/ugenhc.c: netbsd-7-nhusb
sys/rump/dev/lib/libusb/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libusb/USB.ioconf: netbsd-7-nhusb
sys/rump/dev/lib/libusb/usb_at_ugenhc.c: delete
sys/rump/dev/lib/libusb/opt/opt_usb.h: delete
sys/rump/dev/lib/libusb/opt/opt_usbverbose.h: delete
sys/sys/mbuf.h: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.8: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.c: netbsd-7-nhusb
Merge netbsd-7-nhusb:
- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
- Change the SOFTINT level from NET to SERIAL for the USB softint handler.
This gives the callback a chance of running when another softint handler
at SOFTINT_NET has blocked holding a lock, e.g. softnet_lock and most of
the network stack.
- kern/49065 - ifconfig tun0 ... sequence locks up system / lockup:
softnet_lock held across usb xfr
- kern/50491 - unkillable wait in usbd_transfer while using usmsc0
on raspberry pi 2
- kern/51395 - USB Ethernet makes xhci hang
- Various improvements to slhci(4)
- Various improvements to dwc2(4)
 1.24.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.24.2.1 26-Apr-2017  pgoyette Sync with HEAD
 1.26.12.1 10-Jun-2019  christos Sync with HEAD
 1.26.10.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.27.14.1 21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.28.8.1 05-Aug-2021  thorpej Adapt to CFARGS().
 1.4 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.3 26-Mar-2010  pooka branches: 1.3.2; 1.3.20; 1.3.38;
Catch up with cosmetic changes to output from config(1)
 1.2 25-Mar-2010  pooka use config_init_component()
 1.1 08-Mar-2010  pooka branches: 1.1.2; 1.1.4;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.1.4.1 30-May-2010  rmind sync with head
 1.1.2.3 11-Aug-2010  yamt sync with head.
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 08-Mar-2010  yamt file ugenhc_at_mainbus.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.3.38.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.20.1 03-Dec-2017  jdolecek update from HEAD
 1.3.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.2.1 26-Mar-2010  uebayasi file ugenhc_at_mainbus.c was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.3 23-Apr-2016  skrll Merge nick-nhusb

- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
 1.2 14-Sep-2015  pooka Note in comment why this "d"ma implementation is not in libusb.
 1.1 19-Sep-2013  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Move the bus_dma implementation that works only with ugenhc into the
ugenhc component itself.
 1.1.12.2 02-Dec-2014  skrll Step #1 of memory allocation re-organisation.

Centralised the buffer allocation routine which now supports DMA
and non-DMA capable host controllers. Remove the
ubm_{alloc,free}m methods from usbd_bus_methods.

The buffer allocation is only allowed in thread context and,
therefore, negates the usefulness of the reserve dma code which
is removed in this change.

USBD_NO_COPY is also no longer required as usbd_transfer and
usbd_transfer_complete now track buffer usage and handle any
copying.
 1.1.12.1 30-Nov-2014  skrll Whitespace
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 19-Sep-2013  tls file ugenhc_dma.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 19-Sep-2013  yamt file ugenhc_dma.c was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 19-Sep-2013  rmind file ugenhc_dma.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.4 26-Mar-2019  bad Protect __KERNEL_RCSID. It isn't available when compile rumpkernels under e.g. Linux.
 1.3 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.2 12-Dec-2018  alnsn Add missing RCSIDs.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.34; 1.1.36;
rename rumpcomp_user.* -> ugenhc_user.*
 1.1.36.1 10-Jun-2019  christos Sync with HEAD
 1.1.34.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file ugenhc_user.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file ugenhc_user.c was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file ugenhc_user.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
rename rumpcomp_user.* -> ugenhc_user.*
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file ugenhc_user.h was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file ugenhc_user.h was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file ugenhc_user.h was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.5 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 01-Mar-2010  pooka branches: 1.3.2; 1.3.6; 1.3.24; 1.3.42;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.
 1.2 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.3.42.2 19-Mar-2016  skrll Sync with HEAD
 1.3.42.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.24.1 03-Dec-2017  jdolecek update from HEAD
 1.3.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.6.1 01-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:24 +0000
 1.3.2.2 11-Mar-2010  yamt sync with head
 1.3.2.1 01-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.4 30-Aug-2010  pooka doesn't need files.rump
 1.3 08-Mar-2010  pooka branches: 1.3.2; 1.3.4; 1.3.6;
convert to ioconf/pseudo-root
 1.2 12-Feb-2010  pooka move files.rump out of wip
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.3.6.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.3.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.6.1 08-Mar-2010  uebayasi file ULPT.ioconf was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.3.4.1 05-Mar-2011  rmind sync with head
 1.3.2.3 09-Oct-2010  yamt sync with head
 1.3.2.2 11-Mar-2010  yamt sync with head
 1.3.2.1 08-Mar-2010  yamt file ULPT.ioconf was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 11-Feb-2010  pooka branches: 1.1.2; 1.1.6; 1.1.24; 1.1.42;
Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 11-Feb-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 11-Feb-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.10 31-Mar-2022  pgoyette For device modules that provide both auto-config and /dev/xxx
interfaces, make sure that initialization and destruction
follow the proper sequence. This is triggered by the recent
changes to the devsw stuff; per riastradh@ the required call
sequence is:

devsw_attach()
config_init_component() or config_cf*_attach()
...
config_fini_component() or config_cf*_detach()
devsw_detach()

While here, add a few missing calls to some of the detach
routines.

Testing of these changes has been limited to:
1. compile without build break
2. no related test failures from atf
3. modload/modunload work as well as
before.

No functional device testing done, since I don't have any
of these devices. Let me know of any damage I might cause
here!

XXX Some of the modules affected by this commit are already
XXX broken; see kern/56772. This commit does not break
any additional modules (as far as I know).
 1.9 27-Jan-2019  rin Fix merge botches. I hope there's no more left...
 1.8 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.7 12-Dec-2018  alnsn Add missing RCSIDs.
 1.6 26-Jan-2016  pooka branches: 1.6.16; 1.6.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.5 26-Mar-2010  pooka branches: 1.5.2; 1.5.20; 1.5.38;
Catch up with cosmetic changes to output from config(1)
 1.4 25-Mar-2010  pooka use config_init_component()
 1.3 08-Mar-2010  pooka branches: 1.3.2; 1.3.4;
convert to ioconf/pseudo-root
 1.2 01-Mar-2010  pooka Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.3.4.1 30-May-2010  rmind sync with head
 1.3.2.3 11-Aug-2010  yamt sync with head.
 1.3.2.2 11-Mar-2010  yamt sync with head
 1.3.2.1 08-Mar-2010  yamt file ulpt_at_usb.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.5.38.1 19-Mar-2016  skrll Sync with HEAD
 1.5.20.1 03-Dec-2017  jdolecek update from HEAD
 1.5.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.5.2.1 26-Mar-2010  uebayasi file ulpt_at_usb.c was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.6.18.1 10-Jun-2019  christos Sync with HEAD
 1.6.16.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.12 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.11 13-Apr-2020  jdolecek unhook umass_isdata.c from here too
 1.10 19-Oct-2015  pooka branches: 1.10.18; 1.10.28;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.9 24-Aug-2015  pooka opt files were nop't
 1.8 13-Jun-2015  pooka fix snafu to enable umass component also for amd64
 1.7 13-Mar-2014  pooka branches: 1.7.6;
rename component.c -> umass_component.c
 1.6 23-Aug-2010  pooka branches: 1.6.8; 1.6.18; 1.6.22;
Split scsipi out of librumpdev_umass into librumpdev_scsipi. umass
still compile time depends on scsipi in the sense of "ifdef
NATAPIBLUES", but I'm not going to fix that now.
 1.5 01-Mar-2010  pooka branches: 1.5.2; 1.5.4; 1.5.6;
Rename IOCONFIG to IOCONF. It matches the config(1) keyword and
aligns better in Makefiles.
 1.4 17-Feb-2010  pooka Support SCSIVERBOSE.
 1.3 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.2 12-Feb-2010  pooka I forgot I didn't fix kern/40505 yet, and hence using delay()/DELAY()
in rumps is hard due to some archs having a colorful idea of what
they should be like. So temporarily disable build of components
using those for non-i386 (use the no-need-to-mess-with-setlists
approach).
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.5.6.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.5.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.5.6.1 01-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.5.4.1 05-Mar-2011  rmind sync with head
 1.5.2.3 09-Oct-2010  yamt sync with head
 1.5.2.2 11-Mar-2010  yamt sync with head
 1.5.2.1 01-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.6.22.1 18-May-2014  rmind sync with head
 1.6.18.2 03-Dec-2017  jdolecek update from HEAD
 1.6.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.7.6.1 22-Sep-2015  skrll Sync with HEAD
 1.10.28.1 20-Apr-2020  bouyer Sync with HEAD
 1.10.18.1 21-Apr-2020  martin Sync with HEAD
 1.4 23-Aug-2010  pooka Split scsipi out of librumpdev_umass into librumpdev_scsipi. umass
still compile time depends on scsipi in the sense of "ifdef
NATAPIBLUES", but I'm not going to fix that now.
 1.3 08-Mar-2010  pooka branches: 1.3.2; 1.3.4; 1.3.6;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.2 12-Feb-2010  pooka move files.rump out of wip
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.3.6.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.3.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.6.1 08-Mar-2010  uebayasi file UMASS.ioconf was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.3.4.1 05-Mar-2011  rmind sync with head
 1.3.2.3 09-Oct-2010  yamt sync with head
 1.3.2.2 11-Mar-2010  yamt sync with head
 1.3.2.1 08-Mar-2010  yamt file UMASS.ioconf was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.2 13-Mar-2014  pooka rename component.c -> umass_component.c
 1.1 23-Aug-2010  pooka branches: 1.1.2; 1.1.4; 1.1.10; 1.1.14; 1.1.24; 1.1.28;
Split scsipi out of librumpdev_umass into librumpdev_scsipi. umass
still compile time depends on scsipi in the sense of "ifdef
NATAPIBLUES", but I'm not going to fix that now.
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.10.2 05-Mar-2011  rmind sync with head
 1.1.10.1 23-Aug-2010  rmind file component.c was added on branch rmind-uvmplock on 2011-03-05 20:56:09 +0000
 1.1.4.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.4.1 23-Aug-2010  uebayasi file component.c was added on branch uebayasi-xip on 2010-10-22 07:22:45 +0000
 1.1.2.2 09-Oct-2010  yamt sync with head
 1.1.2.1 23-Aug-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-10-09 03:32:42 +0000
 1.1 12-Feb-2010  pooka branches: 1.1.2; 1.1.6;
I forgot I didn't fix kern/40505 yet, and hence using delay()/DELAY()
in rumps is hard due to some archs having a colorful idea of what
they should be like. So temporarily disable build of components
using those for non-i386 (use the no-need-to-mess-with-setlists
approach).
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 12-Feb-2010  uebayasi file dummy.c was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 12-Feb-2010  yamt file dummy.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.6 23-Aug-2010  pooka Split scsipi out of librumpdev_umass into librumpdev_scsipi. umass
still compile time depends on scsipi in the sense of "ifdef
NATAPIBLUES", but I'm not going to fix that now.
 1.5 26-Mar-2010  pooka branches: 1.5.2;
Catch up with cosmetic changes to output from config(1)
 1.4 25-Mar-2010  pooka use config_init_component()
 1.3 08-Mar-2010  pooka branches: 1.3.2; 1.3.4;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.2 01-Mar-2010  pooka Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.3.4.2 05-Mar-2011  rmind sync with head
 1.3.4.1 30-May-2010  rmind sync with head
 1.3.2.4 09-Oct-2010  yamt sync with head
 1.3.2.3 11-Aug-2010  yamt sync with head.
 1.3.2.2 11-Mar-2010  yamt sync with head
 1.3.2.1 08-Mar-2010  yamt file sd_at_scsibus_at_umass.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.5.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.5.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.5.2.1 26-Mar-2010  uebayasi file sd_at_scsibus_at_umass.c was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 11-Feb-2010  pooka branches: 1.1.2; 1.1.6; 1.1.24; 1.1.42;
Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 11-Feb-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 11-Feb-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.5 27-Jan-2019  rin Fix merge botches. I hope there's no more left...
 1.4 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.3 12-Dec-2018  alnsn Add missing RCSIDs.
 1.2 26-Jan-2016  pooka branches: 1.2.16; 1.2.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> umass_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file umass_component.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file umass_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file umass_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2.18.1 10-Jun-2019  christos Sync with HEAD
 1.2.16.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.12 23-Apr-2016  skrll Merge nick-nhusb

- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
 1.11 16-Nov-2015  pooka Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.10 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.9 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.8 24-Aug-2015  pooka continue consolidating non-modular option files
 1.7 20-May-2015  pooka Rename usb_at_ugenhc.c to the more generic usb_at_hc.c now that
host controllers beyond ugenhc are attached.
 1.6 31-Jan-2011  christos branches: 1.6.14; 1.6.30; 1.6.32; 1.6.36;
enable this for amd64 too.
 1.5 05-Dec-2010  pooka branches: 1.5.2; 1.5.4;
include usb_verbose in the component (at least for the time being)
 1.4 08-Mar-2010  pooka branches: 1.4.2; 1.4.4; 1.4.6;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.3 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.2 12-Feb-2010  pooka I forgot I didn't fix kern/40505 yet, and hence using delay()/DELAY()
in rumps is hard due to some archs having a colorful idea of what
they should be like. So temporarily disable build of components
using those for non-i386 (use the no-need-to-mess-with-setlists
approach).
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.4.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.4.6.1 08-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.4.4.1 05-Mar-2011  rmind sync with head
 1.4.2.2 11-Mar-2010  yamt sync with head
 1.4.2.1 08-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.5.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.5.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.6.36.1 14-Sep-2016  skrll Update for branch
 1.6.32.4 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.6.32.3 22-Sep-2015  skrll Sync with HEAD
 1.6.32.2 06-Jun-2015  skrll Sync with HEAD
 1.6.32.1 03-Dec-2014  skrll Rename usbroothub_subr.[ch] to usbroothub.[ch]
 1.6.30.1 05-Apr-2017  snj Pull up following revision(s) (requested by skrll in ticket #1395):
share/man/man4/axe.4: netbsd-7-nhusb
share/man/man4/axen.4: netbsd-7-nhusb
share/man/man4/cdce.4: netbsd-7-nhusb
share/man/man4/uaudio.4: netbsd-7-nhusb
share/man/man4/ucom.4: netbsd-7-nhusb
share/man/man4/uep.4: netbsd-7-nhusb
share/man/man4/urtw.4: netbsd-7-nhusb
share/man/man4/usb.4: netbsd-7-nhusb
share/man/man4/uyap.4: netbsd-7-nhusb
share/man/man4/xhci.4: netbsd-7-nhusb
share/man/man9/usbdi.9: netbsd-7-nhusb
sys/arch/amd64/conf/ALL: netbsd-7-nhusb
sys/arch/amd64/conf/GENERIC: netbsd-7-nhusb
sys/arch/amiga/dev/slhci_zbus.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_otg.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_usb.c: netbsd-7-nhusb
sys/arch/arm/amlogic/amlogic_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/at91/at91ohci.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm2835_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm53xx_usb.c: netbsd-7-nhusb
sys/arch/arm/ep93xx/epohci.c: netbsd-7-nhusb
sys/arch/arm/gemini/obio_ehci.c: netbsd-7-nhusb
sys/arch/arm/imx/files.imx23: netbsd-7-nhusb
sys/arch/arm/imx/imxusb.c: netbsd-7-nhusb
sys/arch/arm/imx/imxusbreg.h: netbsd-7-nhusb
sys/arch/arm/omap/obio_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/omap3_ehci.c: netbsd-7-nhusb
sys/arch/arm/omap/omapl1x_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/tiotg.c: netbsd-7-nhusb
sys/arch/arm/s3c2xx0/ohci_s3c24x0.c: netbsd-7-nhusb
sys/arch/arm/samsung/exynos_usb.c: netbsd-7-nhusb
sys/arch/arm/xscale/pxa2x0_ohci.c: netbsd-7-nhusb
sys/arch/arm/zynq/zynq_usb.c: netbsd-7-nhusb
sys/arch/hpcarm/dev/nbp_slhci.c: netbsd-7-nhusb
sys/arch/hpcmips/dev/plumohci.c: netbsd-7-nhusb
sys/arch/i386/conf/ALL: netbsd-7-nhusb
sys/arch/i386/conf/GENERIC: netbsd-7-nhusb
sys/arch/i386/pci/gcscehci.c: netbsd-7-nhusb
sys/arch/luna68k/conf/GENERIC: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahci.c: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahcivar.h: netbsd-7-nhusb
sys/arch/mips/alchemy/dev/ohci_aubus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ehci_arbus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ohci_arbus.c: netbsd-7-nhusb
sys/arch/mips/conf/files.adm5120: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ehci.c: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ohci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ehci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ohci.c: netbsd-7-nhusb
sys/arch/playstation2/dev/ohci_sbus.c: netbsd-7-nhusb
sys/arch/powerpc/booke/dev/pq3ehci.c: netbsd-7-nhusb
sys/arch/powerpc/ibm4xx/dev/dwctwo_plb.c: netbsd-7-nhusb
sys/arch/x68k/dev/slhci_intio.c: netbsd-7-nhusb
sys/conf/files: netbsd-7-nhusb
sys/dev/cardbus/ehci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/ohci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/uhci_cardbus.c: netbsd-7-nhusb
sys/dev/ic/sl811hs.c: netbsd-7-nhusb
sys/dev/ic/sl811hsvar.h: netbsd-7-nhusb
sys/dev/isa/slhci_isa.c: netbsd-7-nhusb
sys/dev/marvell/ehci_mv.c: netbsd-7-nhusb
sys/dev/pci/ehci_pci.c: netbsd-7-nhusb
sys/dev/pci/ohci_pci.c: netbsd-7-nhusb
sys/dev/pci/uhci_pci.c: netbsd-7-nhusb
sys/dev/pci/xhci_pci.c: netbsd-7-nhusb
sys/dev/pcmcia/slhci_pcmcia.c: netbsd-7-nhusb
sys/dev/usb/Makefile.usbdevs: netbsd-7-nhusb
sys/dev/usb/TODO: netbsd-7-nhusb
sys/dev/usb/TODO.usbmp: netbsd-7-nhusb
sys/dev/usb/aubtfwl.c: netbsd-7-nhusb
sys/dev/usb/auvitek.c: netbsd-7-nhusb
sys/dev/usb/auvitek_audio.c: netbsd-7-nhusb
sys/dev/usb/auvitek_dtv.c: netbsd-7-nhusb
sys/dev/usb/auvitek_i2c.c: netbsd-7-nhusb
sys/dev/usb/auvitek_video.c: netbsd-7-nhusb
sys/dev/usb/auvitekvar.h: netbsd-7-nhusb
sys/dev/usb/ehci.c: netbsd-7-nhusb
sys/dev/usb/ehcireg.h: netbsd-7-nhusb
sys/dev/usb/ehcivar.h: netbsd-7-nhusb
sys/dev/usb/emdtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_dtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_ir.c: netbsd-7-nhusb
sys/dev/usb/emdtvvar.h: netbsd-7-nhusb
sys/dev/usb/ezload.c: netbsd-7-nhusb
sys/dev/usb/ezload.h: netbsd-7-nhusb
sys/dev/usb/files.usb: netbsd-7-nhusb
sys/dev/usb/hid.c: netbsd-7-nhusb
sys/dev/usb/hid.h: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.c: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.h: netbsd-7-nhusb
sys/dev/usb/if_atu.c: netbsd-7-nhusb
sys/dev/usb/if_atureg.h: netbsd-7-nhusb
sys/dev/usb/if_aue.c: netbsd-7-nhusb
sys/dev/usb/if_auereg.h: netbsd-7-nhusb
sys/dev/usb/if_axe.c: netbsd-7-nhusb
sys/dev/usb/if_axen.c: netbsd-7-nhusb
sys/dev/usb/if_axenreg.h: netbsd-7-nhusb
sys/dev/usb/if_axereg.h: netbsd-7-nhusb
sys/dev/usb/if_cdce.c: netbsd-7-nhusb
sys/dev/usb/if_cdcereg.h: netbsd-7-nhusb
sys/dev/usb/if_cue.c: netbsd-7-nhusb
sys/dev/usb/if_cuereg.h: netbsd-7-nhusb
sys/dev/usb/if_kue.c: netbsd-7-nhusb
sys/dev/usb/if_kuereg.h: netbsd-7-nhusb
sys/dev/usb/if_otus.c: netbsd-7-nhusb
sys/dev/usb/if_otusvar.h: netbsd-7-nhusb
sys/dev/usb/if_rum.c: netbsd-7-nhusb
sys/dev/usb/if_rumreg.h: netbsd-7-nhusb
sys/dev/usb/if_rumvar.h: netbsd-7-nhusb
sys/dev/usb/if_run.c: netbsd-7-nhusb
sys/dev/usb/if_runvar.h: netbsd-7-nhusb
sys/dev/usb/if_smsc.c: netbsd-7-nhusb
sys/dev/usb/if_smscreg.h: netbsd-7-nhusb
sys/dev/usb/if_smscvar.h: netbsd-7-nhusb
sys/dev/usb/if_udav.c: netbsd-7-nhusb
sys/dev/usb/if_udavreg.h: netbsd-7-nhusb
sys/dev/usb/if_upgt.c: netbsd-7-nhusb
sys/dev/usb/if_upgtvar.h: netbsd-7-nhusb
sys/dev/usb/if_upl.c: netbsd-7-nhusb
sys/dev/usb/if_ural.c: netbsd-7-nhusb
sys/dev/usb/if_uralreg.h: netbsd-7-nhusb
sys/dev/usb/if_uralvar.h: netbsd-7-nhusb
sys/dev/usb/if_url.c: netbsd-7-nhusb
sys/dev/usb/if_urlreg.h: netbsd-7-nhusb
sys/dev/usb/if_urndis.c: netbsd-7-nhusb
sys/dev/usb/if_urndisreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtw.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn_data.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnvar.h: netbsd-7-nhusb
sys/dev/usb/if_urtwreg.h: netbsd-7-nhusb
sys/dev/usb/if_zyd.c: netbsd-7-nhusb
sys/dev/usb/if_zydreg.h: netbsd-7-nhusb
sys/dev/usb/irmce.c: netbsd-7-nhusb
sys/dev/usb/moscom.c: netbsd-7-nhusb
sys/dev/usb/motg.c: netbsd-7-nhusb
sys/dev/usb/motgvar.h: netbsd-7-nhusb
sys/dev/usb/ohci.c: netbsd-7-nhusb
sys/dev/usb/ohcireg.h: netbsd-7-nhusb
sys/dev/usb/ohcivar.h: netbsd-7-nhusb
sys/dev/usb/pseye.c: netbsd-7-nhusb
sys/dev/usb/slurm.c: netbsd-7-nhusb
sys/dev/usb/stuirda.c: netbsd-7-nhusb
sys/dev/usb/u3g.c: netbsd-7-nhusb
sys/dev/usb/uark.c: netbsd-7-nhusb
sys/dev/usb/uatp.c: netbsd-7-nhusb
sys/dev/usb/uaudio.c: netbsd-7-nhusb
sys/dev/usb/uberry.c: netbsd-7-nhusb
sys/dev/usb/ubsa.c: netbsd-7-nhusb
sys/dev/usb/ubsa_common.c: netbsd-7-nhusb
sys/dev/usb/ubsavar.h: netbsd-7-nhusb
sys/dev/usb/ubt.c: netbsd-7-nhusb
sys/dev/usb/uchcom.c: netbsd-7-nhusb
sys/dev/usb/ucom.c: netbsd-7-nhusb
sys/dev/usb/ucomvar.h: netbsd-7-nhusb
sys/dev/usb/ucycom.c: netbsd-7-nhusb
sys/dev/usb/udl.c: netbsd-7-nhusb
sys/dev/usb/udl.h: netbsd-7-nhusb
sys/dev/usb/udsbr.c: netbsd-7-nhusb
sys/dev/usb/udsir.c: netbsd-7-nhusb
sys/dev/usb/uep.c: netbsd-7-nhusb
sys/dev/usb/uftdi.c: netbsd-7-nhusb
sys/dev/usb/uftdireg.h: netbsd-7-nhusb
sys/dev/usb/ugen.c: netbsd-7-nhusb
sys/dev/usb/ugensa.c: netbsd-7-nhusb
sys/dev/usb/uhci.c: netbsd-7-nhusb
sys/dev/usb/uhcireg.h: netbsd-7-nhusb
sys/dev/usb/uhcivar.h: netbsd-7-nhusb
sys/dev/usb/uhid.c: netbsd-7-nhusb
sys/dev/usb/uhidev.c: netbsd-7-nhusb
sys/dev/usb/uhidev.h: netbsd-7-nhusb
sys/dev/usb/uhmodem.c: netbsd-7-nhusb
sys/dev/usb/uhso.c: netbsd-7-nhusb
sys/dev/usb/uhub.c: netbsd-7-nhusb
sys/dev/usb/uipad.c: netbsd-7-nhusb
sys/dev/usb/uipaq.c: netbsd-7-nhusb
sys/dev/usb/uirda.c: netbsd-7-nhusb
sys/dev/usb/uirdavar.h: netbsd-7-nhusb
sys/dev/usb/ukbd.c: netbsd-7-nhusb
sys/dev/usb/ukbdmap.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.h: netbsd-7-nhusb
sys/dev/usb/ulpt.c: netbsd-7-nhusb
sys/dev/usb/umass.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.h: netbsd-7-nhusb
sys/dev/usb/umass_quirks.c: netbsd-7-nhusb
sys/dev/usb/umass_quirks.h: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.c: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.h: netbsd-7-nhusb
sys/dev/usb/umassvar.h: netbsd-7-nhusb
sys/dev/usb/umcs.c: netbsd-7-nhusb
sys/dev/usb/umct.c: netbsd-7-nhusb
sys/dev/usb/umidi.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.h: netbsd-7-nhusb
sys/dev/usb/umodem.c: netbsd-7-nhusb
sys/dev/usb/umodem_common.c: netbsd-7-nhusb
sys/dev/usb/umodemvar.h: netbsd-7-nhusb
sys/dev/usb/ums.c: netbsd-7-nhusb
sys/dev/usb/uplcom.c: netbsd-7-nhusb
sys/dev/usb/urio.c: netbsd-7-nhusb
sys/dev/usb/urio.h: netbsd-7-nhusb
sys/dev/usb/usb.c: netbsd-7-nhusb
sys/dev/usb/usb.h: netbsd-7-nhusb
sys/dev/usb/usb_mem.c: netbsd-7-nhusb
sys/dev/usb/usb_mem.h: netbsd-7-nhusb
sys/dev/usb/usb_quirks.c: netbsd-7-nhusb
sys/dev/usb/usb_quirks.h: netbsd-7-nhusb
sys/dev/usb/usb_subr.c: netbsd-7-nhusb
sys/dev/usb/usbdevices.config: netbsd-7-nhusb
sys/dev/usb/usbdevs: netbsd-7-nhusb
sys/dev/usb/usbdevs.h: netbsd-7-nhusb
sys/dev/usb/usbdevs_data.h: netbsd-7-nhusb
sys/dev/usb/usbdi.c: netbsd-7-nhusb
sys/dev/usb/usbdi.h: netbsd-7-nhusb
sys/dev/usb/usbdi_util.c: netbsd-7-nhusb
sys/dev/usb/usbdi_util.h: netbsd-7-nhusb
sys/dev/usb/usbdivar.h: netbsd-7-nhusb
sys/dev/usb/usbhid.h: netbsd-7-nhusb
sys/dev/usb/usbhist.h: netbsd-7-nhusb
sys/dev/usb/usbroothub.c: netbsd-7-nhusb
sys/dev/usb/usbroothub.h: netbsd-7-nhusb
sys/dev/usb/usbroothub_subr.c: delete
sys/dev/usb/usbroothub_subr.h: delete
sys/dev/usb/uscanner.c: netbsd-7-nhusb
sys/dev/usb/uslsa.c: netbsd-7-nhusb
sys/dev/usb/usscanner.c: netbsd-7-nhusb
sys/dev/usb/ustir.c: netbsd-7-nhusb
sys/dev/usb/uthum.c: netbsd-7-nhusb
sys/dev/usb/utoppy.c: netbsd-7-nhusb
sys/dev/usb/uts.c: netbsd-7-nhusb
sys/dev/usb/uvideo.c: netbsd-7-nhusb
sys/dev/usb/uvisor.c: netbsd-7-nhusb
sys/dev/usb/uvscom.c: netbsd-7-nhusb
sys/dev/usb/uyap.c: netbsd-7-nhusb
sys/dev/usb/uyap_firmware.h: netbsd-7-nhusb
sys/dev/usb/uyurex.c: netbsd-7-nhusb
sys/dev/usb/x1input_rdesc.h: netbsd-7-nhusb
sys/dev/usb/xhci.c: netbsd-7-nhusb
sys/dev/usb/xhcireg.h: netbsd-7-nhusb
sys/dev/usb/xhcivar.h: netbsd-7-nhusb
sys/dev/usb/xinput_rdesc.h: netbsd-7-nhusb
sys/external/bsd/common/conf/files.linux: netbsd-7-nhusb
sys/external/bsd/common/include/linux/err.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/kernel.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/workqueue.h: netbsd-7-nhusb
sys/external/bsd/common/linux/linux_work.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/atombios_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/drm/files.drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/i915drm/files.i915drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/include/linux/err.h: delete
sys/external/bsd/drm2/include/linux/workqueue.h: delete
sys/external/bsd/drm2/linux/files.drmkms_linux: netbsd-7-nhusb
sys/external/bsd/drm2/linux/linux_work.c: delete
sys/external/bsd/dwc2/dwc2.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2var.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwctwo2netbsd: netbsd-7-nhusb
sys/external/bsd/dwc2/conf/files.dwc2: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_coreintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdddma.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hw.h: netbsd-7-nhusb
sys/modules/drmkms_linux/Makefile: netbsd-7-nhusb
sys/modules/i915drmkms/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libugenhc/ugenhc.c: netbsd-7-nhusb
sys/rump/dev/lib/libusb/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libusb/USB.ioconf: netbsd-7-nhusb
sys/rump/dev/lib/libusb/usb_at_ugenhc.c: delete
sys/rump/dev/lib/libusb/opt/opt_usb.h: delete
sys/rump/dev/lib/libusb/opt/opt_usbverbose.h: delete
sys/sys/mbuf.h: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.8: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.c: netbsd-7-nhusb
Merge netbsd-7-nhusb:
- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
- Change the SOFTINT level from NET to SERIAL for the USB softint handler.
This gives the callback a chance of running when another softint handler
at SOFTINT_NET has blocked holding a lock, e.g. softnet_lock and most of
the network stack.
- kern/49065 - ifconfig tun0 ... sequence locks up system / lockup:
softnet_lock held across usb xfr
- kern/50491 - unkillable wait in usbd_transfer while using usmsc0
on raspberry pi 2
- kern/51395 - USB Ethernet makes xhci hang
- Various improvements to slhci(4)
- Various improvements to dwc2(4)
 1.6.14.1 03-Dec-2017  jdolecek update from HEAD
 1.3 06-Nov-2020  christos PR/55789: Ruslan Nikolaev: New rump drivers
 1.2 20-May-2015  pooka branches: 1.2.30;
also attach usb@{e,o,u}hci
 1.1 08-Mar-2010  pooka branches: 1.1.2; 1.1.6; 1.1.24; 1.1.40; 1.1.42; 1.1.46;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.1.46.1 06-Sep-2016  skrll First pass at netbsd-7 updated with USB code from HEAD
 1.1.42.1 06-Jun-2015  skrll Sync with HEAD
 1.1.40.1 05-Apr-2017  snj Pull up following revision(s) (requested by skrll in ticket #1395):
share/man/man4/axe.4: netbsd-7-nhusb
share/man/man4/axen.4: netbsd-7-nhusb
share/man/man4/cdce.4: netbsd-7-nhusb
share/man/man4/uaudio.4: netbsd-7-nhusb
share/man/man4/ucom.4: netbsd-7-nhusb
share/man/man4/uep.4: netbsd-7-nhusb
share/man/man4/urtw.4: netbsd-7-nhusb
share/man/man4/usb.4: netbsd-7-nhusb
share/man/man4/uyap.4: netbsd-7-nhusb
share/man/man4/xhci.4: netbsd-7-nhusb
share/man/man9/usbdi.9: netbsd-7-nhusb
sys/arch/amd64/conf/ALL: netbsd-7-nhusb
sys/arch/amd64/conf/GENERIC: netbsd-7-nhusb
sys/arch/amiga/dev/slhci_zbus.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_otg.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_usb.c: netbsd-7-nhusb
sys/arch/arm/amlogic/amlogic_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/at91/at91ohci.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm2835_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm53xx_usb.c: netbsd-7-nhusb
sys/arch/arm/ep93xx/epohci.c: netbsd-7-nhusb
sys/arch/arm/gemini/obio_ehci.c: netbsd-7-nhusb
sys/arch/arm/imx/files.imx23: netbsd-7-nhusb
sys/arch/arm/imx/imxusb.c: netbsd-7-nhusb
sys/arch/arm/imx/imxusbreg.h: netbsd-7-nhusb
sys/arch/arm/omap/obio_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/omap3_ehci.c: netbsd-7-nhusb
sys/arch/arm/omap/omapl1x_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/tiotg.c: netbsd-7-nhusb
sys/arch/arm/s3c2xx0/ohci_s3c24x0.c: netbsd-7-nhusb
sys/arch/arm/samsung/exynos_usb.c: netbsd-7-nhusb
sys/arch/arm/xscale/pxa2x0_ohci.c: netbsd-7-nhusb
sys/arch/arm/zynq/zynq_usb.c: netbsd-7-nhusb
sys/arch/hpcarm/dev/nbp_slhci.c: netbsd-7-nhusb
sys/arch/hpcmips/dev/plumohci.c: netbsd-7-nhusb
sys/arch/i386/conf/ALL: netbsd-7-nhusb
sys/arch/i386/conf/GENERIC: netbsd-7-nhusb
sys/arch/i386/pci/gcscehci.c: netbsd-7-nhusb
sys/arch/luna68k/conf/GENERIC: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahci.c: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahcivar.h: netbsd-7-nhusb
sys/arch/mips/alchemy/dev/ohci_aubus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ehci_arbus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ohci_arbus.c: netbsd-7-nhusb
sys/arch/mips/conf/files.adm5120: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ehci.c: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ohci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ehci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ohci.c: netbsd-7-nhusb
sys/arch/playstation2/dev/ohci_sbus.c: netbsd-7-nhusb
sys/arch/powerpc/booke/dev/pq3ehci.c: netbsd-7-nhusb
sys/arch/powerpc/ibm4xx/dev/dwctwo_plb.c: netbsd-7-nhusb
sys/arch/x68k/dev/slhci_intio.c: netbsd-7-nhusb
sys/conf/files: netbsd-7-nhusb
sys/dev/cardbus/ehci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/ohci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/uhci_cardbus.c: netbsd-7-nhusb
sys/dev/ic/sl811hs.c: netbsd-7-nhusb
sys/dev/ic/sl811hsvar.h: netbsd-7-nhusb
sys/dev/isa/slhci_isa.c: netbsd-7-nhusb
sys/dev/marvell/ehci_mv.c: netbsd-7-nhusb
sys/dev/pci/ehci_pci.c: netbsd-7-nhusb
sys/dev/pci/ohci_pci.c: netbsd-7-nhusb
sys/dev/pci/uhci_pci.c: netbsd-7-nhusb
sys/dev/pci/xhci_pci.c: netbsd-7-nhusb
sys/dev/pcmcia/slhci_pcmcia.c: netbsd-7-nhusb
sys/dev/usb/Makefile.usbdevs: netbsd-7-nhusb
sys/dev/usb/TODO: netbsd-7-nhusb
sys/dev/usb/TODO.usbmp: netbsd-7-nhusb
sys/dev/usb/aubtfwl.c: netbsd-7-nhusb
sys/dev/usb/auvitek.c: netbsd-7-nhusb
sys/dev/usb/auvitek_audio.c: netbsd-7-nhusb
sys/dev/usb/auvitek_dtv.c: netbsd-7-nhusb
sys/dev/usb/auvitek_i2c.c: netbsd-7-nhusb
sys/dev/usb/auvitek_video.c: netbsd-7-nhusb
sys/dev/usb/auvitekvar.h: netbsd-7-nhusb
sys/dev/usb/ehci.c: netbsd-7-nhusb
sys/dev/usb/ehcireg.h: netbsd-7-nhusb
sys/dev/usb/ehcivar.h: netbsd-7-nhusb
sys/dev/usb/emdtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_dtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_ir.c: netbsd-7-nhusb
sys/dev/usb/emdtvvar.h: netbsd-7-nhusb
sys/dev/usb/ezload.c: netbsd-7-nhusb
sys/dev/usb/ezload.h: netbsd-7-nhusb
sys/dev/usb/files.usb: netbsd-7-nhusb
sys/dev/usb/hid.c: netbsd-7-nhusb
sys/dev/usb/hid.h: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.c: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.h: netbsd-7-nhusb
sys/dev/usb/if_atu.c: netbsd-7-nhusb
sys/dev/usb/if_atureg.h: netbsd-7-nhusb
sys/dev/usb/if_aue.c: netbsd-7-nhusb
sys/dev/usb/if_auereg.h: netbsd-7-nhusb
sys/dev/usb/if_axe.c: netbsd-7-nhusb
sys/dev/usb/if_axen.c: netbsd-7-nhusb
sys/dev/usb/if_axenreg.h: netbsd-7-nhusb
sys/dev/usb/if_axereg.h: netbsd-7-nhusb
sys/dev/usb/if_cdce.c: netbsd-7-nhusb
sys/dev/usb/if_cdcereg.h: netbsd-7-nhusb
sys/dev/usb/if_cue.c: netbsd-7-nhusb
sys/dev/usb/if_cuereg.h: netbsd-7-nhusb
sys/dev/usb/if_kue.c: netbsd-7-nhusb
sys/dev/usb/if_kuereg.h: netbsd-7-nhusb
sys/dev/usb/if_otus.c: netbsd-7-nhusb
sys/dev/usb/if_otusvar.h: netbsd-7-nhusb
sys/dev/usb/if_rum.c: netbsd-7-nhusb
sys/dev/usb/if_rumreg.h: netbsd-7-nhusb
sys/dev/usb/if_rumvar.h: netbsd-7-nhusb
sys/dev/usb/if_run.c: netbsd-7-nhusb
sys/dev/usb/if_runvar.h: netbsd-7-nhusb
sys/dev/usb/if_smsc.c: netbsd-7-nhusb
sys/dev/usb/if_smscreg.h: netbsd-7-nhusb
sys/dev/usb/if_smscvar.h: netbsd-7-nhusb
sys/dev/usb/if_udav.c: netbsd-7-nhusb
sys/dev/usb/if_udavreg.h: netbsd-7-nhusb
sys/dev/usb/if_upgt.c: netbsd-7-nhusb
sys/dev/usb/if_upgtvar.h: netbsd-7-nhusb
sys/dev/usb/if_upl.c: netbsd-7-nhusb
sys/dev/usb/if_ural.c: netbsd-7-nhusb
sys/dev/usb/if_uralreg.h: netbsd-7-nhusb
sys/dev/usb/if_uralvar.h: netbsd-7-nhusb
sys/dev/usb/if_url.c: netbsd-7-nhusb
sys/dev/usb/if_urlreg.h: netbsd-7-nhusb
sys/dev/usb/if_urndis.c: netbsd-7-nhusb
sys/dev/usb/if_urndisreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtw.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn_data.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnvar.h: netbsd-7-nhusb
sys/dev/usb/if_urtwreg.h: netbsd-7-nhusb
sys/dev/usb/if_zyd.c: netbsd-7-nhusb
sys/dev/usb/if_zydreg.h: netbsd-7-nhusb
sys/dev/usb/irmce.c: netbsd-7-nhusb
sys/dev/usb/moscom.c: netbsd-7-nhusb
sys/dev/usb/motg.c: netbsd-7-nhusb
sys/dev/usb/motgvar.h: netbsd-7-nhusb
sys/dev/usb/ohci.c: netbsd-7-nhusb
sys/dev/usb/ohcireg.h: netbsd-7-nhusb
sys/dev/usb/ohcivar.h: netbsd-7-nhusb
sys/dev/usb/pseye.c: netbsd-7-nhusb
sys/dev/usb/slurm.c: netbsd-7-nhusb
sys/dev/usb/stuirda.c: netbsd-7-nhusb
sys/dev/usb/u3g.c: netbsd-7-nhusb
sys/dev/usb/uark.c: netbsd-7-nhusb
sys/dev/usb/uatp.c: netbsd-7-nhusb
sys/dev/usb/uaudio.c: netbsd-7-nhusb
sys/dev/usb/uberry.c: netbsd-7-nhusb
sys/dev/usb/ubsa.c: netbsd-7-nhusb
sys/dev/usb/ubsa_common.c: netbsd-7-nhusb
sys/dev/usb/ubsavar.h: netbsd-7-nhusb
sys/dev/usb/ubt.c: netbsd-7-nhusb
sys/dev/usb/uchcom.c: netbsd-7-nhusb
sys/dev/usb/ucom.c: netbsd-7-nhusb
sys/dev/usb/ucomvar.h: netbsd-7-nhusb
sys/dev/usb/ucycom.c: netbsd-7-nhusb
sys/dev/usb/udl.c: netbsd-7-nhusb
sys/dev/usb/udl.h: netbsd-7-nhusb
sys/dev/usb/udsbr.c: netbsd-7-nhusb
sys/dev/usb/udsir.c: netbsd-7-nhusb
sys/dev/usb/uep.c: netbsd-7-nhusb
sys/dev/usb/uftdi.c: netbsd-7-nhusb
sys/dev/usb/uftdireg.h: netbsd-7-nhusb
sys/dev/usb/ugen.c: netbsd-7-nhusb
sys/dev/usb/ugensa.c: netbsd-7-nhusb
sys/dev/usb/uhci.c: netbsd-7-nhusb
sys/dev/usb/uhcireg.h: netbsd-7-nhusb
sys/dev/usb/uhcivar.h: netbsd-7-nhusb
sys/dev/usb/uhid.c: netbsd-7-nhusb
sys/dev/usb/uhidev.c: netbsd-7-nhusb
sys/dev/usb/uhidev.h: netbsd-7-nhusb
sys/dev/usb/uhmodem.c: netbsd-7-nhusb
sys/dev/usb/uhso.c: netbsd-7-nhusb
sys/dev/usb/uhub.c: netbsd-7-nhusb
sys/dev/usb/uipad.c: netbsd-7-nhusb
sys/dev/usb/uipaq.c: netbsd-7-nhusb
sys/dev/usb/uirda.c: netbsd-7-nhusb
sys/dev/usb/uirdavar.h: netbsd-7-nhusb
sys/dev/usb/ukbd.c: netbsd-7-nhusb
sys/dev/usb/ukbdmap.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.h: netbsd-7-nhusb
sys/dev/usb/ulpt.c: netbsd-7-nhusb
sys/dev/usb/umass.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.h: netbsd-7-nhusb
sys/dev/usb/umass_quirks.c: netbsd-7-nhusb
sys/dev/usb/umass_quirks.h: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.c: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.h: netbsd-7-nhusb
sys/dev/usb/umassvar.h: netbsd-7-nhusb
sys/dev/usb/umcs.c: netbsd-7-nhusb
sys/dev/usb/umct.c: netbsd-7-nhusb
sys/dev/usb/umidi.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.h: netbsd-7-nhusb
sys/dev/usb/umodem.c: netbsd-7-nhusb
sys/dev/usb/umodem_common.c: netbsd-7-nhusb
sys/dev/usb/umodemvar.h: netbsd-7-nhusb
sys/dev/usb/ums.c: netbsd-7-nhusb
sys/dev/usb/uplcom.c: netbsd-7-nhusb
sys/dev/usb/urio.c: netbsd-7-nhusb
sys/dev/usb/urio.h: netbsd-7-nhusb
sys/dev/usb/usb.c: netbsd-7-nhusb
sys/dev/usb/usb.h: netbsd-7-nhusb
sys/dev/usb/usb_mem.c: netbsd-7-nhusb
sys/dev/usb/usb_mem.h: netbsd-7-nhusb
sys/dev/usb/usb_quirks.c: netbsd-7-nhusb
sys/dev/usb/usb_quirks.h: netbsd-7-nhusb
sys/dev/usb/usb_subr.c: netbsd-7-nhusb
sys/dev/usb/usbdevices.config: netbsd-7-nhusb
sys/dev/usb/usbdevs: netbsd-7-nhusb
sys/dev/usb/usbdevs.h: netbsd-7-nhusb
sys/dev/usb/usbdevs_data.h: netbsd-7-nhusb
sys/dev/usb/usbdi.c: netbsd-7-nhusb
sys/dev/usb/usbdi.h: netbsd-7-nhusb
sys/dev/usb/usbdi_util.c: netbsd-7-nhusb
sys/dev/usb/usbdi_util.h: netbsd-7-nhusb
sys/dev/usb/usbdivar.h: netbsd-7-nhusb
sys/dev/usb/usbhid.h: netbsd-7-nhusb
sys/dev/usb/usbhist.h: netbsd-7-nhusb
sys/dev/usb/usbroothub.c: netbsd-7-nhusb
sys/dev/usb/usbroothub.h: netbsd-7-nhusb
sys/dev/usb/usbroothub_subr.c: delete
sys/dev/usb/usbroothub_subr.h: delete
sys/dev/usb/uscanner.c: netbsd-7-nhusb
sys/dev/usb/uslsa.c: netbsd-7-nhusb
sys/dev/usb/usscanner.c: netbsd-7-nhusb
sys/dev/usb/ustir.c: netbsd-7-nhusb
sys/dev/usb/uthum.c: netbsd-7-nhusb
sys/dev/usb/utoppy.c: netbsd-7-nhusb
sys/dev/usb/uts.c: netbsd-7-nhusb
sys/dev/usb/uvideo.c: netbsd-7-nhusb
sys/dev/usb/uvisor.c: netbsd-7-nhusb
sys/dev/usb/uvscom.c: netbsd-7-nhusb
sys/dev/usb/uyap.c: netbsd-7-nhusb
sys/dev/usb/uyap_firmware.h: netbsd-7-nhusb
sys/dev/usb/uyurex.c: netbsd-7-nhusb
sys/dev/usb/x1input_rdesc.h: netbsd-7-nhusb
sys/dev/usb/xhci.c: netbsd-7-nhusb
sys/dev/usb/xhcireg.h: netbsd-7-nhusb
sys/dev/usb/xhcivar.h: netbsd-7-nhusb
sys/dev/usb/xinput_rdesc.h: netbsd-7-nhusb
sys/external/bsd/common/conf/files.linux: netbsd-7-nhusb
sys/external/bsd/common/include/linux/err.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/kernel.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/workqueue.h: netbsd-7-nhusb
sys/external/bsd/common/linux/linux_work.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/atombios_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/drm/files.drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/i915drm/files.i915drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/include/linux/err.h: delete
sys/external/bsd/drm2/include/linux/workqueue.h: delete
sys/external/bsd/drm2/linux/files.drmkms_linux: netbsd-7-nhusb
sys/external/bsd/drm2/linux/linux_work.c: delete
sys/external/bsd/dwc2/dwc2.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2var.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwctwo2netbsd: netbsd-7-nhusb
sys/external/bsd/dwc2/conf/files.dwc2: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_coreintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdddma.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hw.h: netbsd-7-nhusb
sys/modules/drmkms_linux/Makefile: netbsd-7-nhusb
sys/modules/i915drmkms/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libugenhc/ugenhc.c: netbsd-7-nhusb
sys/rump/dev/lib/libusb/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libusb/USB.ioconf: netbsd-7-nhusb
sys/rump/dev/lib/libusb/usb_at_ugenhc.c: delete
sys/rump/dev/lib/libusb/opt/opt_usb.h: delete
sys/rump/dev/lib/libusb/opt/opt_usbverbose.h: delete
sys/sys/mbuf.h: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.8: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.c: netbsd-7-nhusb
Merge netbsd-7-nhusb:
- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
- Change the SOFTINT level from NET to SERIAL for the USB softint handler.
This gives the callback a chance of running when another softint handler
at SOFTINT_NET has blocked holding a lock, e.g. softnet_lock and most of
the network stack.
- kern/49065 - ifconfig tun0 ... sequence locks up system / lockup:
softnet_lock held across usb xfr
- kern/50491 - unkillable wait in usbd_transfer while using usmsc0
on raspberry pi 2
- kern/51395 - USB Ethernet makes xhci hang
- Various improvements to slhci(4)
- Various improvements to dwc2(4)
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 08-Mar-2010  uebayasi file USB.ioconf was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 08-Mar-2010  yamt file USB.ioconf was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.2.30.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.1 12-Feb-2010  pooka branches: 1.1.2; 1.1.6;
I forgot I didn't fix kern/40505 yet, and hence using delay()/DELAY()
in rumps is hard due to some archs having a colorful idea of what
they should be like. So temporarily disable build of components
using those for non-i386 (use the no-need-to-mess-with-setlists
approach).
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 12-Feb-2010  uebayasi file dummy.c was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 12-Feb-2010  yamt file dummy.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.2 08-Mar-2010  pooka Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 11-Feb-2010  pooka branches: 1.1.2; 1.1.6; 1.1.24; 1.1.42;
Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 11-Feb-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 11-Feb-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 20-May-2015  pooka branches: 1.1.2;
Rename usb_at_ugenhc.c to the more generic usb_at_hc.c now that
host controllers beyond ugenhc are attached.
 1.1.2.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 20-May-2015  skrll file usb_at_hc.c was added on branch nick-nhusb on 2015-06-06 14:40:27 +0000
 1.4 20-May-2015  pooka Rename usb_at_ugenhc.c to the more generic usb_at_hc.c now that
host controllers beyond ugenhc are attached.
 1.3 26-Mar-2010  pooka branches: 1.3.2; 1.3.20; 1.3.36; 1.3.38; 1.3.42;
Catch up with cosmetic changes to output from config(1)
 1.2 25-Mar-2010  pooka use config_init_component()
 1.1 08-Mar-2010  pooka branches: 1.1.2; 1.1.4;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.1.4.1 30-May-2010  rmind sync with head
 1.1.2.3 11-Aug-2010  yamt sync with head.
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 08-Mar-2010  yamt file usb_at_ugenhc.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.3.42.1 06-Sep-2016  skrll First pass at netbsd-7 updated with USB code from HEAD
 1.3.38.1 06-Jun-2015  skrll Sync with HEAD
 1.3.36.1 05-Apr-2017  snj Pull up following revision(s) (requested by skrll in ticket #1395):
share/man/man4/axe.4: netbsd-7-nhusb
share/man/man4/axen.4: netbsd-7-nhusb
share/man/man4/cdce.4: netbsd-7-nhusb
share/man/man4/uaudio.4: netbsd-7-nhusb
share/man/man4/ucom.4: netbsd-7-nhusb
share/man/man4/uep.4: netbsd-7-nhusb
share/man/man4/urtw.4: netbsd-7-nhusb
share/man/man4/usb.4: netbsd-7-nhusb
share/man/man4/uyap.4: netbsd-7-nhusb
share/man/man4/xhci.4: netbsd-7-nhusb
share/man/man9/usbdi.9: netbsd-7-nhusb
sys/arch/amd64/conf/ALL: netbsd-7-nhusb
sys/arch/amd64/conf/GENERIC: netbsd-7-nhusb
sys/arch/amiga/dev/slhci_zbus.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_otg.c: netbsd-7-nhusb
sys/arch/arm/allwinner/awin_usb.c: netbsd-7-nhusb
sys/arch/arm/amlogic/amlogic_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/at91/at91ohci.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm2835_dwctwo.c: netbsd-7-nhusb
sys/arch/arm/broadcom/bcm53xx_usb.c: netbsd-7-nhusb
sys/arch/arm/ep93xx/epohci.c: netbsd-7-nhusb
sys/arch/arm/gemini/obio_ehci.c: netbsd-7-nhusb
sys/arch/arm/imx/files.imx23: netbsd-7-nhusb
sys/arch/arm/imx/imxusb.c: netbsd-7-nhusb
sys/arch/arm/imx/imxusbreg.h: netbsd-7-nhusb
sys/arch/arm/omap/obio_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/omap3_ehci.c: netbsd-7-nhusb
sys/arch/arm/omap/omapl1x_ohci.c: netbsd-7-nhusb
sys/arch/arm/omap/tiotg.c: netbsd-7-nhusb
sys/arch/arm/s3c2xx0/ohci_s3c24x0.c: netbsd-7-nhusb
sys/arch/arm/samsung/exynos_usb.c: netbsd-7-nhusb
sys/arch/arm/xscale/pxa2x0_ohci.c: netbsd-7-nhusb
sys/arch/arm/zynq/zynq_usb.c: netbsd-7-nhusb
sys/arch/hpcarm/dev/nbp_slhci.c: netbsd-7-nhusb
sys/arch/hpcmips/dev/plumohci.c: netbsd-7-nhusb
sys/arch/i386/conf/ALL: netbsd-7-nhusb
sys/arch/i386/conf/GENERIC: netbsd-7-nhusb
sys/arch/i386/pci/gcscehci.c: netbsd-7-nhusb
sys/arch/luna68k/conf/GENERIC: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahci.c: netbsd-7-nhusb
sys/arch/mips/adm5120/dev/ahcivar.h: netbsd-7-nhusb
sys/arch/mips/alchemy/dev/ohci_aubus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ehci_arbus.c: netbsd-7-nhusb
sys/arch/mips/atheros/dev/ohci_arbus.c: netbsd-7-nhusb
sys/arch/mips/conf/files.adm5120: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ehci.c: netbsd-7-nhusb
sys/arch/mips/ralink/ralink_ohci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ehci.c: netbsd-7-nhusb
sys/arch/mips/rmi/rmixl_ohci.c: netbsd-7-nhusb
sys/arch/playstation2/dev/ohci_sbus.c: netbsd-7-nhusb
sys/arch/powerpc/booke/dev/pq3ehci.c: netbsd-7-nhusb
sys/arch/powerpc/ibm4xx/dev/dwctwo_plb.c: netbsd-7-nhusb
sys/arch/x68k/dev/slhci_intio.c: netbsd-7-nhusb
sys/conf/files: netbsd-7-nhusb
sys/dev/cardbus/ehci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/ohci_cardbus.c: netbsd-7-nhusb
sys/dev/cardbus/uhci_cardbus.c: netbsd-7-nhusb
sys/dev/ic/sl811hs.c: netbsd-7-nhusb
sys/dev/ic/sl811hsvar.h: netbsd-7-nhusb
sys/dev/isa/slhci_isa.c: netbsd-7-nhusb
sys/dev/marvell/ehci_mv.c: netbsd-7-nhusb
sys/dev/pci/ehci_pci.c: netbsd-7-nhusb
sys/dev/pci/ohci_pci.c: netbsd-7-nhusb
sys/dev/pci/uhci_pci.c: netbsd-7-nhusb
sys/dev/pci/xhci_pci.c: netbsd-7-nhusb
sys/dev/pcmcia/slhci_pcmcia.c: netbsd-7-nhusb
sys/dev/usb/Makefile.usbdevs: netbsd-7-nhusb
sys/dev/usb/TODO: netbsd-7-nhusb
sys/dev/usb/TODO.usbmp: netbsd-7-nhusb
sys/dev/usb/aubtfwl.c: netbsd-7-nhusb
sys/dev/usb/auvitek.c: netbsd-7-nhusb
sys/dev/usb/auvitek_audio.c: netbsd-7-nhusb
sys/dev/usb/auvitek_dtv.c: netbsd-7-nhusb
sys/dev/usb/auvitek_i2c.c: netbsd-7-nhusb
sys/dev/usb/auvitek_video.c: netbsd-7-nhusb
sys/dev/usb/auvitekvar.h: netbsd-7-nhusb
sys/dev/usb/ehci.c: netbsd-7-nhusb
sys/dev/usb/ehcireg.h: netbsd-7-nhusb
sys/dev/usb/ehcivar.h: netbsd-7-nhusb
sys/dev/usb/emdtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_dtv.c: netbsd-7-nhusb
sys/dev/usb/emdtv_ir.c: netbsd-7-nhusb
sys/dev/usb/emdtvvar.h: netbsd-7-nhusb
sys/dev/usb/ezload.c: netbsd-7-nhusb
sys/dev/usb/ezload.h: netbsd-7-nhusb
sys/dev/usb/files.usb: netbsd-7-nhusb
sys/dev/usb/hid.c: netbsd-7-nhusb
sys/dev/usb/hid.h: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.c: netbsd-7-nhusb
sys/dev/usb/if_athn_usb.h: netbsd-7-nhusb
sys/dev/usb/if_atu.c: netbsd-7-nhusb
sys/dev/usb/if_atureg.h: netbsd-7-nhusb
sys/dev/usb/if_aue.c: netbsd-7-nhusb
sys/dev/usb/if_auereg.h: netbsd-7-nhusb
sys/dev/usb/if_axe.c: netbsd-7-nhusb
sys/dev/usb/if_axen.c: netbsd-7-nhusb
sys/dev/usb/if_axenreg.h: netbsd-7-nhusb
sys/dev/usb/if_axereg.h: netbsd-7-nhusb
sys/dev/usb/if_cdce.c: netbsd-7-nhusb
sys/dev/usb/if_cdcereg.h: netbsd-7-nhusb
sys/dev/usb/if_cue.c: netbsd-7-nhusb
sys/dev/usb/if_cuereg.h: netbsd-7-nhusb
sys/dev/usb/if_kue.c: netbsd-7-nhusb
sys/dev/usb/if_kuereg.h: netbsd-7-nhusb
sys/dev/usb/if_otus.c: netbsd-7-nhusb
sys/dev/usb/if_otusvar.h: netbsd-7-nhusb
sys/dev/usb/if_rum.c: netbsd-7-nhusb
sys/dev/usb/if_rumreg.h: netbsd-7-nhusb
sys/dev/usb/if_rumvar.h: netbsd-7-nhusb
sys/dev/usb/if_run.c: netbsd-7-nhusb
sys/dev/usb/if_runvar.h: netbsd-7-nhusb
sys/dev/usb/if_smsc.c: netbsd-7-nhusb
sys/dev/usb/if_smscreg.h: netbsd-7-nhusb
sys/dev/usb/if_smscvar.h: netbsd-7-nhusb
sys/dev/usb/if_udav.c: netbsd-7-nhusb
sys/dev/usb/if_udavreg.h: netbsd-7-nhusb
sys/dev/usb/if_upgt.c: netbsd-7-nhusb
sys/dev/usb/if_upgtvar.h: netbsd-7-nhusb
sys/dev/usb/if_upl.c: netbsd-7-nhusb
sys/dev/usb/if_ural.c: netbsd-7-nhusb
sys/dev/usb/if_uralreg.h: netbsd-7-nhusb
sys/dev/usb/if_uralvar.h: netbsd-7-nhusb
sys/dev/usb/if_url.c: netbsd-7-nhusb
sys/dev/usb/if_urlreg.h: netbsd-7-nhusb
sys/dev/usb/if_urndis.c: netbsd-7-nhusb
sys/dev/usb/if_urndisreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtw.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn.c: netbsd-7-nhusb
sys/dev/usb/if_urtwn_data.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnreg.h: netbsd-7-nhusb
sys/dev/usb/if_urtwnvar.h: netbsd-7-nhusb
sys/dev/usb/if_urtwreg.h: netbsd-7-nhusb
sys/dev/usb/if_zyd.c: netbsd-7-nhusb
sys/dev/usb/if_zydreg.h: netbsd-7-nhusb
sys/dev/usb/irmce.c: netbsd-7-nhusb
sys/dev/usb/moscom.c: netbsd-7-nhusb
sys/dev/usb/motg.c: netbsd-7-nhusb
sys/dev/usb/motgvar.h: netbsd-7-nhusb
sys/dev/usb/ohci.c: netbsd-7-nhusb
sys/dev/usb/ohcireg.h: netbsd-7-nhusb
sys/dev/usb/ohcivar.h: netbsd-7-nhusb
sys/dev/usb/pseye.c: netbsd-7-nhusb
sys/dev/usb/slurm.c: netbsd-7-nhusb
sys/dev/usb/stuirda.c: netbsd-7-nhusb
sys/dev/usb/u3g.c: netbsd-7-nhusb
sys/dev/usb/uark.c: netbsd-7-nhusb
sys/dev/usb/uatp.c: netbsd-7-nhusb
sys/dev/usb/uaudio.c: netbsd-7-nhusb
sys/dev/usb/uberry.c: netbsd-7-nhusb
sys/dev/usb/ubsa.c: netbsd-7-nhusb
sys/dev/usb/ubsa_common.c: netbsd-7-nhusb
sys/dev/usb/ubsavar.h: netbsd-7-nhusb
sys/dev/usb/ubt.c: netbsd-7-nhusb
sys/dev/usb/uchcom.c: netbsd-7-nhusb
sys/dev/usb/ucom.c: netbsd-7-nhusb
sys/dev/usb/ucomvar.h: netbsd-7-nhusb
sys/dev/usb/ucycom.c: netbsd-7-nhusb
sys/dev/usb/udl.c: netbsd-7-nhusb
sys/dev/usb/udl.h: netbsd-7-nhusb
sys/dev/usb/udsbr.c: netbsd-7-nhusb
sys/dev/usb/udsir.c: netbsd-7-nhusb
sys/dev/usb/uep.c: netbsd-7-nhusb
sys/dev/usb/uftdi.c: netbsd-7-nhusb
sys/dev/usb/uftdireg.h: netbsd-7-nhusb
sys/dev/usb/ugen.c: netbsd-7-nhusb
sys/dev/usb/ugensa.c: netbsd-7-nhusb
sys/dev/usb/uhci.c: netbsd-7-nhusb
sys/dev/usb/uhcireg.h: netbsd-7-nhusb
sys/dev/usb/uhcivar.h: netbsd-7-nhusb
sys/dev/usb/uhid.c: netbsd-7-nhusb
sys/dev/usb/uhidev.c: netbsd-7-nhusb
sys/dev/usb/uhidev.h: netbsd-7-nhusb
sys/dev/usb/uhmodem.c: netbsd-7-nhusb
sys/dev/usb/uhso.c: netbsd-7-nhusb
sys/dev/usb/uhub.c: netbsd-7-nhusb
sys/dev/usb/uipad.c: netbsd-7-nhusb
sys/dev/usb/uipaq.c: netbsd-7-nhusb
sys/dev/usb/uirda.c: netbsd-7-nhusb
sys/dev/usb/uirdavar.h: netbsd-7-nhusb
sys/dev/usb/ukbd.c: netbsd-7-nhusb
sys/dev/usb/ukbdmap.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.c: netbsd-7-nhusb
sys/dev/usb/ukyopon.h: netbsd-7-nhusb
sys/dev/usb/ulpt.c: netbsd-7-nhusb
sys/dev/usb/umass.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.c: netbsd-7-nhusb
sys/dev/usb/umass_isdata.h: netbsd-7-nhusb
sys/dev/usb/umass_quirks.c: netbsd-7-nhusb
sys/dev/usb/umass_quirks.h: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.c: netbsd-7-nhusb
sys/dev/usb/umass_scsipi.h: netbsd-7-nhusb
sys/dev/usb/umassvar.h: netbsd-7-nhusb
sys/dev/usb/umcs.c: netbsd-7-nhusb
sys/dev/usb/umct.c: netbsd-7-nhusb
sys/dev/usb/umidi.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.c: netbsd-7-nhusb
sys/dev/usb/umidi_quirks.h: netbsd-7-nhusb
sys/dev/usb/umodem.c: netbsd-7-nhusb
sys/dev/usb/umodem_common.c: netbsd-7-nhusb
sys/dev/usb/umodemvar.h: netbsd-7-nhusb
sys/dev/usb/ums.c: netbsd-7-nhusb
sys/dev/usb/uplcom.c: netbsd-7-nhusb
sys/dev/usb/urio.c: netbsd-7-nhusb
sys/dev/usb/urio.h: netbsd-7-nhusb
sys/dev/usb/usb.c: netbsd-7-nhusb
sys/dev/usb/usb.h: netbsd-7-nhusb
sys/dev/usb/usb_mem.c: netbsd-7-nhusb
sys/dev/usb/usb_mem.h: netbsd-7-nhusb
sys/dev/usb/usb_quirks.c: netbsd-7-nhusb
sys/dev/usb/usb_quirks.h: netbsd-7-nhusb
sys/dev/usb/usb_subr.c: netbsd-7-nhusb
sys/dev/usb/usbdevices.config: netbsd-7-nhusb
sys/dev/usb/usbdevs: netbsd-7-nhusb
sys/dev/usb/usbdevs.h: netbsd-7-nhusb
sys/dev/usb/usbdevs_data.h: netbsd-7-nhusb
sys/dev/usb/usbdi.c: netbsd-7-nhusb
sys/dev/usb/usbdi.h: netbsd-7-nhusb
sys/dev/usb/usbdi_util.c: netbsd-7-nhusb
sys/dev/usb/usbdi_util.h: netbsd-7-nhusb
sys/dev/usb/usbdivar.h: netbsd-7-nhusb
sys/dev/usb/usbhid.h: netbsd-7-nhusb
sys/dev/usb/usbhist.h: netbsd-7-nhusb
sys/dev/usb/usbroothub.c: netbsd-7-nhusb
sys/dev/usb/usbroothub.h: netbsd-7-nhusb
sys/dev/usb/usbroothub_subr.c: delete
sys/dev/usb/usbroothub_subr.h: delete
sys/dev/usb/uscanner.c: netbsd-7-nhusb
sys/dev/usb/uslsa.c: netbsd-7-nhusb
sys/dev/usb/usscanner.c: netbsd-7-nhusb
sys/dev/usb/ustir.c: netbsd-7-nhusb
sys/dev/usb/uthum.c: netbsd-7-nhusb
sys/dev/usb/utoppy.c: netbsd-7-nhusb
sys/dev/usb/uts.c: netbsd-7-nhusb
sys/dev/usb/uvideo.c: netbsd-7-nhusb
sys/dev/usb/uvisor.c: netbsd-7-nhusb
sys/dev/usb/uvscom.c: netbsd-7-nhusb
sys/dev/usb/uyap.c: netbsd-7-nhusb
sys/dev/usb/uyap_firmware.h: netbsd-7-nhusb
sys/dev/usb/uyurex.c: netbsd-7-nhusb
sys/dev/usb/x1input_rdesc.h: netbsd-7-nhusb
sys/dev/usb/xhci.c: netbsd-7-nhusb
sys/dev/usb/xhcireg.h: netbsd-7-nhusb
sys/dev/usb/xhcivar.h: netbsd-7-nhusb
sys/dev/usb/xinput_rdesc.h: netbsd-7-nhusb
sys/external/bsd/common/conf/files.linux: netbsd-7-nhusb
sys/external/bsd/common/include/linux/err.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/kernel.h: netbsd-7-nhusb
sys/external/bsd/common/include/linux/workqueue.h: netbsd-7-nhusb
sys/external/bsd/common/linux/linux_work.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/atombios_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/dist/drm/radeon/radeon_legacy_encoders.c: netbsd-7-nhusb
sys/external/bsd/drm2/drm/files.drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/i915drm/files.i915drmkms: netbsd-7-nhusb
sys/external/bsd/drm2/include/linux/err.h: delete
sys/external/bsd/drm2/include/linux/workqueue.h: delete
sys/external/bsd/drm2/linux/files.drmkms_linux: netbsd-7-nhusb
sys/external/bsd/drm2/linux/linux_work.c: delete
sys/external/bsd/dwc2/dwc2.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwc2var.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dwctwo2netbsd: netbsd-7-nhusb
sys/external/bsd/dwc2/conf/files.dwc2: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_core.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_coreintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcd.h: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdddma.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdintr.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hcdqueue.c: netbsd-7-nhusb
sys/external/bsd/dwc2/dist/dwc2_hw.h: netbsd-7-nhusb
sys/modules/drmkms_linux/Makefile: netbsd-7-nhusb
sys/modules/i915drmkms/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libugenhc/ugenhc.c: netbsd-7-nhusb
sys/rump/dev/lib/libusb/Makefile: netbsd-7-nhusb
sys/rump/dev/lib/libusb/USB.ioconf: netbsd-7-nhusb
sys/rump/dev/lib/libusb/usb_at_ugenhc.c: delete
sys/rump/dev/lib/libusb/opt/opt_usb.h: delete
sys/rump/dev/lib/libusb/opt/opt_usbverbose.h: delete
sys/sys/mbuf.h: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.8: netbsd-7-nhusb
usr.sbin/usbdevs/usbdevs.c: netbsd-7-nhusb
Merge netbsd-7-nhusb:
- API / infrastructure changes to support memory management changes.
- Memory management improvements and bug fixes.
- HCDs should now be MP safe
- conversion to KERNHIST based debug
- FS/LS isoc support on ehci(4).
- conversion to kmem(9)
- Some USB 3 support - mostly from Takahiro HAYASHI (t-hash).
- interrupt transfers now get proper DMA operations
- general bug fixes
- kern/48308
- uhub status notification improvements
- umass(4) probe fix (applied to HEAD already)
- ohci(4) short transfer fix
- Change the SOFTINT level from NET to SERIAL for the USB softint handler.
This gives the callback a chance of running when another softint handler
at SOFTINT_NET has blocked holding a lock, e.g. softnet_lock and most of
the network stack.
- kern/49065 - ifconfig tun0 ... sequence locks up system / lockup:
softnet_lock held across usb xfr
- kern/50491 - unkillable wait in usbd_transfer while using usmsc0
on raspberry pi 2
- kern/51395 - USB Ethernet makes xhci hang
- Various improvements to slhci(4)
- Various improvements to dwc2(4)
 1.3.20.1 03-Dec-2017  jdolecek update from HEAD
 1.3.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.2.1 26-Mar-2010  uebayasi file usb_at_ugenhc.c was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.4 16-Nov-2015  pooka branches: 1.4.16;
Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.3 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 22-Aug-2014  pooka branches: 1.1.2;
Add a rump kernel component for the vioif virtio network interface.
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.16.2 03-Dec-2017  jdolecek update from HEAD
 1.4.16.1 16-Nov-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.2 10-May-2017  sevan branches: 1.2.8;
Match the ioconf name in sys/modules.
Resolves rumprun build process.
Put together with the help & direction of riastradh & paulg.
 1.1 22-Aug-2014  pooka branches: 1.1.2; 1.1.10;
Add a rump kernel component for the vioif virtio network interface.
 1.1.10.1 11-May-2017  pgoyette Sync with HEAD
 1.1.2.1 28-Aug-2017  skrll Sync with HEAD
 1.2.8.2 03-Dec-2017  jdolecek update from HEAD
 1.2.8.1 10-May-2017  jdolecek file VIRTIO_IF_VIOIF.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 22-Aug-2014  pooka branches: 1.1.2;
Add a rump kernel component for the vioif virtio network interface.
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 22-Aug-2014  pooka branches: 1.1.2;
Add a rump kernel component for the vioif virtio network interface.
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4 26-Jan-2016  pooka branches: 1.4.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 22-Aug-2014  pooka branches: 1.1.2;
Add a rump kernel component for ld@virtio.
 1.1.2.2 19-Mar-2016  skrll Sync with HEAD
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.16.2 03-Dec-2017  jdolecek update from HEAD
 1.4.16.1 26-Jan-2016  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.2 10-May-2017  sevan branches: 1.2.8;
Match the ioconf name in sys/modules.
Resolves rumprun build process.
Put together with the help & direction of riastradh & paulg.
 1.1 22-Aug-2014  pooka branches: 1.1.2; 1.1.10;
Add a rump kernel component for ld@virtio.
 1.1.10.1 11-May-2017  pgoyette Sync with HEAD
 1.1.2.1 28-Aug-2017  skrll Sync with HEAD
 1.2.8.2 03-Dec-2017  jdolecek update from HEAD
 1.2.8.1 10-May-2017  jdolecek file VIRTIO_LD.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.5 31-Mar-2022  pgoyette For device modules that provide both auto-config and /dev/xxx
interfaces, make sure that initialization and destruction
follow the proper sequence. This is triggered by the recent
changes to the devsw stuff; per riastradh@ the required call
sequence is:

devsw_attach()
config_init_component() or config_cf*_attach()
...
config_fini_component() or config_cf*_detach()
devsw_detach()

While here, add a few missing calls to some of the detach
routines.

Testing of these changes has been limited to:
1. compile without build break
2. no related test failures from atf
3. modload/modunload work as well as
before.

No functional device testing done, since I don't have any
of these devices. Let me know of any damage I might cause
here!

XXX Some of the modules affected by this commit are already
XXX broken; see kern/56772. This commit does not break
any additional modules (as far as I know).
 1.4 10-May-2017  sevan branches: 1.4.8;
Match the ioconf name in sys/modules.
Resolves rumprun build process.
Put together with the help & direction of riastradh & paulg.
 1.3 26-Jan-2016  pooka branches: 1.3.8;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 16-May-2015  pooka Autogenerate /dev/ldNx nodes based on which units attached instead of
hardcoding some arbitrary value for N.
 1.1 22-Aug-2014  pooka branches: 1.1.2;
Add a rump kernel component for ld@virtio.
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 19-Mar-2016  skrll Sync with HEAD
 1.1.2.1 06-Jun-2015  skrll Sync with HEAD
 1.3.8.1 11-May-2017  pgoyette Sync with HEAD
 1.4.8.2 03-Dec-2017  jdolecek update from HEAD
 1.4.8.1 10-May-2017  jdolecek file ld_at_virtio.c was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 22-Aug-2014  pooka branches: 1.1.2;
Add a rump kernel component for ld@virtio.
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.4 16-Nov-2015  pooka branches: 1.4.16;
Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.3 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 06-Nov-2014  pooka branches: 1.1.2;
Add rump kernel component for viornd

tested: qemu -device virtio-rng-pci
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.16.2 03-Dec-2017  jdolecek update from HEAD
 1.4.16.1 16-Nov-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.1 06-Nov-2014  pooka branches: 1.1.18;
Add rump kernel component for viornd

tested: qemu -device virtio-rng-pci
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 06-Nov-2014  jdolecek file VIRTIO_VIORND.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 06-Nov-2014  pooka branches: 1.1.2;
Add rump kernel component for viornd

tested: qemu -device virtio-rng-pci
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 06-Nov-2014  pooka branches: 1.1.2;
Add rump kernel component for viornd

tested: qemu -device virtio-rng-pci
 1.1.2.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3 16-Nov-2015  pooka branches: 1.3.2; 1.3.18;
Use IOCONF #define to determine component name.

Avoids having to manually retype info already in .ioconf.

Also, COMPONENT_SIMPLE -> RUMP_COMPONENT=simple. That way, we can add
other attributes where necessary. As "future directions", the "ioconf"
attribute for RUMP_COMPONENT can just be removed when a driver is
converted to modular and has a proper modcmd.
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 01-Nov-2015  pooka add virtio-scsi component
 1.3.18.2 03-Dec-2017  jdolecek update from HEAD
 1.3.18.1 16-Nov-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.3.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.2.1 16-Nov-2015  skrll file Makefile was added on branch nick-nhusb on 2015-12-27 12:10:12 +0000
 1.2 10-May-2017  sevan branches: 1.2.8;
Match the ioconf name in sys/modules.
Resolves rumprun build process.
Put together with the help & direction of riastradh & paulg.
 1.1 01-Nov-2015  pooka branches: 1.1.2; 1.1.10;
add virtio-scsi component
 1.1.10.1 11-May-2017  pgoyette Sync with HEAD
 1.1.2.3 28-Aug-2017  skrll Sync with HEAD
 1.1.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1 01-Nov-2015  skrll file VIRTIO_VIOSCSI.ioconf was added on branch nick-nhusb on 2015-12-27 12:10:12 +0000
 1.2.8.2 03-Dec-2017  jdolecek update from HEAD
 1.2.8.1 10-May-2017  jdolecek file VIRTIO_VIOSCSI.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.2 11-Nov-2015  pooka Make it easier to create rump kernel components, part 1.

Reduce copypasteware for the component constructors. If a constructor
calls only config_init_component(), handle it from a common source file
instead of copying the same(ish) file around to every component.
 1.1 01-Nov-2015  pooka add virtio-scsi component
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 20-Aug-2015  christos use ioconf files for pseudo-device attach prototypes
 1.1 17-Jul-2014  prlw1 branches: 1.1.2; 1.1.6; 1.1.8;
Add vnd support to rump
 1.1.8.3 19-Mar-2016  skrll Sync with HEAD
 1.1.8.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.8.1 22-Sep-2015  skrll Sync with HEAD
 1.1.6.3 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 17-Jul-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 17-Jul-2014  tls file Makefile was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
use ioconf files for pseudo-device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file VND.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:10 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file VND.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:14 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 17-Jul-2014  prlw1 branches: 1.1.2; 1.1.6; 1.1.8;
Add vnd support to rump
 1.1.8.1 06-Apr-2015  skrll Sync with HEAD
 1.1.6.3 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 17-Jul-2014  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 17-Jul-2014  tls file shlib_version was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.3 26-Jul-2016  pgoyette When calling devsw_attach() we need to use the expected/official driver
name (as listed in the devsw_conv[] table) to get the expected device
majors. Once rump initialization is finished (ie, it has created its
required device nodes), we need to detach the [bc]devsw so the module
initialization code doesn't get EEXIST.
 1.2 26-Jan-2016  pooka branches: 1.2.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 17-Jul-2014  prlw1 branches: 1.1.2; 1.1.6; 1.1.8;
Add vnd support to rump
 1.1.8.2 05-Oct-2016  skrll Sync with HEAD
 1.1.8.1 19-Mar-2016  skrll Sync with HEAD
 1.1.6.3 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 17-Jul-2014  tls file vnd_component.c was added on branch tls-maxphys on 2014-08-20 00:04:38 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 17-Jul-2014  tls file vnd_component.c was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.2.2.1 26-Jul-2016  pgoyette Sync with HEAD
 1.7 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.6 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.5 24-Aug-2015  pooka continue consolidating non-modular option files
 1.4 13-Mar-2014  pooka branches: 1.4.6;
rename component.c -> wscons_component.c
 1.3 08-Mar-2010  pooka branches: 1.3.2; 1.3.6; 1.3.14; 1.3.24; 1.3.28;
convert to ioconf & pseudo-root
 1.2 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.3.28.1 18-May-2014  rmind sync with head
 1.3.24.2 03-Dec-2017  jdolecek update from HEAD
 1.3.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.6.1 08-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.3.2.2 11-Mar-2010  yamt sync with head
 1.3.2.1 08-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.4.6.3 19-Mar-2016  skrll Sync with HEAD
 1.4.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.6.1 22-Sep-2015  skrll Sync with HEAD
 1.1 08-Mar-2010  pooka branches: 1.1.2; 1.1.6;
convert to ioconf & pseudo-root
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 08-Mar-2010  uebayasi file WSCONS.ioconf was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 08-Mar-2010  yamt file WSCONS.ioconf was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.6 13-Mar-2014  pooka rename component.c -> wscons_component.c
 1.5 26-Mar-2010  pooka branches: 1.5.2; 1.5.10; 1.5.20; 1.5.24;
Catch up with cosmetic changes to output from config(1)
 1.4 25-Mar-2010  pooka use config_init_component()
 1.3 08-Mar-2010  pooka branches: 1.3.2; 1.3.4;
convert to ioconf & pseudo-root
 1.2 01-Mar-2010  pooka Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.3.4.1 30-May-2010  rmind sync with head
 1.3.2.3 11-Aug-2010  yamt sync with head.
 1.3.2.2 11-Mar-2010  yamt sync with head
 1.3.2.1 08-Mar-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.5.24.1 18-May-2014  rmind sync with head
 1.5.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.5.2.1 26-Mar-2010  uebayasi file component.c was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.2 08-Mar-2010  pooka convert to ioconf & pseudo-root
 1.1 11-Feb-2010  pooka Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 11-Feb-2010  pooka branches: 1.1.2; 1.1.6; 1.1.24; 1.1.42;
Move a bunch of rump components from dev/wip to dev/lib now that
they've reached a certain maturity.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 11-Feb-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:25 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 11-Feb-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:34 +0000
 1.6 31-Mar-2022  pgoyette For device modules that provide both auto-config and /dev/xxx
interfaces, make sure that initialization and destruction
follow the proper sequence. This is triggered by the recent
changes to the devsw stuff; per riastradh@ the required call
sequence is:

devsw_attach()
config_init_component() or config_cf*_attach()
...
config_fini_component() or config_cf*_detach()
devsw_detach()

While here, add a few missing calls to some of the detach
routines.

Testing of these changes has been limited to:
1. compile without build break
2. no related test failures from atf
3. modload/modunload work as well as
before.

No functional device testing done, since I don't have any
of these devices. Let me know of any damage I might cause
here!

XXX Some of the modules affected by this commit are already
XXX broken; see kern/56772. This commit does not break
any additional modules (as far as I know).
 1.5 27-Jan-2019  rin Fix merge botches. I hope there's no more left...
 1.4 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.3 12-Dec-2018  alnsn Add missing RCSIDs.
 1.2 26-Jan-2016  pooka branches: 1.2.16; 1.2.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> wscons_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file wscons_component.c was added on branch tls-maxphys on 2014-08-20 00:04:39 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file wscons_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file wscons_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2.18.1 10-Jun-2019  christos Sync with HEAD
 1.2.16.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1 03-May-2022  uwe libwsemul_vt100: Rumpified wscons vt100 emulator (wsvt25).

This library provides wscons vt100 emulation (aka TERM=wsvt25). This
is internal module, not a device, so there's no RUMP_COMPONENT. The
public interface provided by this module is wsemul_vt100_ops and it
needs the user to provide (in rump namespace) wsdisplay_emulinput and
wsdisplay_emulbell, provided in the real kernel by wsdisplay.

This subdirectory is not hooked into the build.
 1.3 15-Oct-2008  pooka Don't descend into rumptest automatically. Otherwise a manual
"make install" in this directory does some funnies.
 1.2 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1 05-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.30; 1.1.34; 1.1.36; 1.1.38; 1.1.40; 1.1.42;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.42.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.42.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:02 +0000
 1.1.40.1 19-Oct-2008  haad Sync with HEAD.
 1.1.38.1 31-Jul-2008  simonb Sync with head.
 1.1.36.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.34.1 04-May-2009  yamt sync with head.
 1.1.30.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.30.1 28-Sep-2008  mjf Sync with HEAD.
 1.1.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.1.14.1 05-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:14 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 05-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:44:27 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 05-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:09 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 05-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:08 +0000
 1.27 05-Dec-2010  pooka Rename Makefile.rump${x} to Makefile.rump${x}comp for consistency.
 1.26 05-Dec-2010  pooka Fix RUMPFSLIBS etc. As collateral, rename nullfs/umapfs to match
the vfsname, i.e. to "null" and "umap".
 1.25 26-Jul-2010  pooka Descend into nfsserver, i.e. build & install the kernel nfs server bits.
 1.24 14-Jun-2010  pooka ptyfs rump component
 1.23 31-Mar-2010  pooka support kernfs
 1.22 31-Mar-2010  pooka separate vfs-like components from actual drivers
(no functional change)
 1.21 30-Mar-2010  pooka support nullfs and umapfs
 1.20 29-Mar-2010  pooka Support unionfs (and layervfs, which is required for unionfs).
 1.19 29-Mar-2010  pooka Support fifofs in rump. Do not include it in rumpvfs directly,
since it involves some very non-fs'y components like sockets and
local domain networking. Also (for better or worse?), call it
rump*v*fs_fifofs instead of rumpfs_fifofs, since it does not really
provide a file system driver.

XXX: uses duplicate common symbols and functionality depends on
link order ... (but at least it works better than before this change)
 1.18 08-Mar-2010  pooka branches: 1.18.2;
attempt to know my a-b-c's
 1.17 08-Mar-2010  pooka support mfs
 1.16 04-Sep-2009  pooka branches: 1.16.2;
build & install librumpdev_netsmb and librumpfs_smbfs components
 1.15 03-Sep-2009  pooka install librumpfs_fdesc
 1.14 18-Jul-2009  reinoud Import read-only part of the NiLFS (v2) implementation for NetBSD. It has been
tested with a DEBUG+DIAGNOSTIC+LOCKDEBUG kernel. To summerise NiLFS, i'll
repeat my posting to tech-kern here:

NiLFS stands for New implementation of Logging File System; LFS done
right they claim :) It is at version 2 now and is being developed by NTT, the
Japanese telecom company and recently put into the linux source tree. See
http://www.nilfs.org. The on-disc format is not completely frozen and i expect
at least one minor revision to come in time.

The benefits of NiLFS are build-in fine-grained checkpointing, persistent
snapshots, multiple mounts and very large file and media support. Every
checkpoint can be transformed into a snapshot and v.v. It is said to perform
very well on flash media since it is not overwriting pieces apart from a
incidental update of the superblock, but that might change. It is accompanied
by a cleaner to clean up the segments and recover lost space.

My work is not a port of the linux code; its a new implementation. Porting the
code would be more work since its very linux oriented and never written to be
ported outside linux. The goal is to be fully interchangable. The code is non
intrusive to other parts of the kernel. It is also very light-weight.

The current state of the code is read-only access to both clean and dirty
NiLFS partitions. On mounting a dirty partition it rolls forward the log to
the last checkpoint. Full read-write support is however planned!

Just as the linux code, mount_nilfs allows for the `head' to be mounted
read/write and allows multiple read-only snapshots/checkpoint mounts next to
it.

By allowing the RW mount at a different snapshot for read-write it should be
possible eventually to revert back to a previous state; i.e. try to upgrade a
system and being able to revert to the exact state prior to the upgrade.

Compared to other FS's its pretty light-weight, suitable for embedded use and
on flash media. The read-only code is currently 17kb object code on
NetBSD/i386. I doubt the read-write code will surpass the 50 or 60. Compared
this to FFS being 156kb, UDF being 84 kb and NFS being 130kb. Run-time memory
usage is most likely not very different from other uses though maybe a bit
higher than FFS.
 1.13 02-May-2009  pooka Merge librumpfs_ufs into librumpfs_ffs. This reflects what happened
with the ffs kernel module and follows the trend of retiring ufs.
It also allows to get rid of a special case kludge in runtime module
loading, since ufs was not really a module. librumpfs_ufs is now
obsoleted and ffs consumers should be linked solely against
librumpfs_ffs.
 1.12 16-Oct-2008  pooka branches: 1.12.8;
* descend into rump/net
* descend into fs/lib/libnfs
 1.11 04-Sep-2008  pooka Add rump support for sysvbfs.
 1.10 05-Aug-2008  pooka Maintain consistency of naming between the rumpfs library name and
the MOUNT_FOOFS name. Don't bother polluting the obsolete lists
with the original names since they were in only for a few days.
 1.9 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.8 02-Jan-2008  pooka branches: 1.8.6; 1.8.10; 1.8.12; 1.8.14; 1.8.16;
Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.7 14-Aug-2007  pooka branches: 1.7.2; 1.7.4; 1.7.6; 1.7.8; 1.7.14; 1.7.16; 1.7.22;
* split userspace file system access into two separate libraries:
+ libp2k: the interface between libpuffs and vfs/vop
+ libukfs: generic user kernel file system library, usable
independent of libp2k and/or puffs
* use file system name (MOUNT_XYZ) instead of vfsops pointer to
mount file system
 1.6 14-Aug-2007  pooka udf support
 1.5 09-Aug-2007  pooka Enable lfs in r/o mode, i.e. does not start lfs_clean-nerd and do
any real trickery. Unfortunately this was the easy part; r/w
support is going to make ascending naked, blind, illiterate, without
food and as an atheist look trivial.
 1.4 08-Aug-2007  pooka Add hfs. Untested, as I couldn't find a hfs+ image for testing,
so one would be appreciated. At least it works enough to tell me
this:

hfs: Plain HFS volumes not currently supported
 1.3 08-Aug-2007  pooka microfrost strikes back
 1.2 07-Aug-2007  pooka support ext2fs
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile.rumpfs was added on branch matt-mips64 on 2007-08-05 22:28:02 +0000
 1.7.22.1 02-Jan-2008  bouyer Sync with HEAD
 1.7.16.2 18-Feb-2008  mjf Sync with HEAD.
 1.7.16.1 19-Nov-2007  mjf Stubs for devfs. Committing this before I sync with HEAD.
 1.7.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.7.14.1 14-Aug-2007  joerg file Makefile.rumpfs was added on branch jmcneill-pm on 2007-11-02 12:43:15 +0000
 1.7.8.3 21-Jan-2008  yamt sync with head
 1.7.8.2 03-Sep-2007  yamt sync with head.
 1.7.8.1 14-Aug-2007  yamt file Makefile.rumpfs was added on branch yamt-lazymbuf on 2007-09-03 14:44:27 +0000
 1.7.6.1 09-Jan-2008  matt sync with HEAD
 1.7.4.2 20-Aug-2007  ad Sync with HEAD.
 1.7.4.1 14-Aug-2007  ad file Makefile.rumpfs was added on branch vmlocking on 2007-08-20 22:07:09 +0000
 1.7.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.7.2.1 14-Aug-2007  skrll file Makefile.rumpfs was added on branch nick-csl-alignment on 2007-08-15 13:50:08 +0000
 1.8.16.1 19-Oct-2008  haad Sync with HEAD.
 1.8.14.1 31-Jul-2008  simonb Sync with head.
 1.8.12.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.8.10.5 11-Aug-2010  yamt sync with head.
 1.8.10.4 11-Mar-2010  yamt sync with head
 1.8.10.3 16-Sep-2009  yamt sync with head
 1.8.10.2 19-Aug-2009  yamt sync with head.
 1.8.10.1 04-May-2009  yamt sync with head.
 1.8.6.2 17-Jan-2009  mjf Sync with HEAD.
 1.8.6.1 28-Sep-2008  mjf Sync with HEAD.
 1.12.8.2 23-Jul-2009  jym Sync with HEAD.
 1.12.8.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.16.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.16.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.18.2.3 05-Mar-2011  rmind sync with head
 1.18.2.2 03-Jul-2010  rmind sync with head
 1.18.2.1 30-May-2010  rmind sync with head
 1.10 06-Jun-2022  nia branches: 1.10.10;
build system: Revert all the recent additions of MK[...] knobs that
allow conditionally disabling the building of certain user space
programs in the 'base' set.

There is not enough consensus that this is the right way and a few
people had strong objections, see source-changes-d@.
 1.9 27-May-2022  nia ... and more MKLFS here
 1.8 15-May-2020  christos PR/55102: Kamil Rytarowski: Duplicate fifo_vnodeop_entries,
fifo_vnodeop_opv_desc symbols.

Many filesystems ffs, lfs, ulfs, chfs, ext2fs etc. use fifofs
internally for their fifo vnops. NFS does too, but it also needs
networking anyway. Unfortunately fifofs brings in a lot of the
networking code so that the rumpkernel is not well partition. In
addition the fifo code is rarely used.

The existing hack depended on duplicating the above symbols and
adding minimal functionality for the majority of the the tests
(except the ffs and the puffs one). In these two cases both symbols
were loaded and the symbol sizes clashed which broke the sanitizers.
While this can be fixed with weak symbols and other kinds of
indirection, it is more straight forward to select between the
minimal and the full fifofs implementation by introducing a new
shared library librumpvfs_nofifofs.
 1.7 04-Apr-2020  jdolecek remove SMBFS and nsmb(4) - kernel part

it's unmaintained and supports only obsolete SMB1
 1.6 15-Nov-2015  pooka branches: 1.6.18;
Always descend into component directories for rumpdescribe.
 1.5 10-Apr-2014  pooka branches: 1.5.4;
add aio driver as rump kernel component
 1.4 24-Jul-2011  uch branches: 1.4.2; 1.4.12; 1.4.16; 1.4.26;
v7fs rump support
 1.3 05-Mar-2011  joerg branches: 1.3.2;
Fix spelling of MKZFS
 1.2 18-Jan-2011  haad branches: 1.2.2;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.1 05-Dec-2010  pooka branches: 1.1.2;
Rename Makefile.rump${x} to Makefile.rump${x}comp for consistency.
 1.1.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.2.1 05-Mar-2011  bouyer Sync with HEAD
 1.3.2.2 05-Mar-2011  rmind sync with head
 1.3.2.1 05-Mar-2011  rmind file Makefile.rumpfscomp was added on branch rmind-uvmplock on 2011-03-05 20:56:10 +0000
 1.4.26.1 10-Aug-2014  tls Rebase.
 1.4.16.1 18-May-2014  rmind sync with head
 1.4.12.2 03-Dec-2017  jdolecek update from HEAD
 1.4.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.4.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.6.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.10.10.1 29-Jun-2024  perseant Implementation of exFAT filesystem, with compilation conditional on MKEXFATFS
make variable.
 1.2 05-Dec-2010  pooka Rename Makefile.rump${x} to Makefile.rump${x}comp for consistency.
 1.1 05-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.42; 1.1.58;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.58.1 05-Mar-2011  rmind sync with head
 1.1.42.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.42.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:04 +0000
 1.1.14.2 02-Nov-2007  joerg Remove the rest of the unintentional diff in sys/rump.
 1.1.14.1 05-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 13:02:44 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 05-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:00 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 05-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:17 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 05-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:19 +0000
 1.14 12-Dec-2009  pooka Use linker script to make __start/stop_link_set_modules be present
in libs built with binutils >=2.19. This is a less error-prone
method than the previous where components had to be tagged in the
Makefile as modules (and if they weren't, things broke. and vice
versa).
 1.13 13-Sep-2009  pooka binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
for orphaned sections to using PROVIDE. What this means is that
unless a rump component internally references that symbol, it will
not be included in the component shared library, and hence cannot
be referenced when the component is loaded. Add a workaround which
works both with 2.16 and 2.19: force a reference to the __start
symbol internally and hence retain it in the resulting library.
 1.12 15-Oct-2008  pooka Revert weird revivesa merge botch. (Hi Bill!)
 1.11 15-Oct-2008  wrstuden Merge wrstuden-revivesa into HEAD.
 1.10 04-Aug-2008  pooka libs don't need NOMAN
 1.9 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.8 20-Jul-2008  he The build options for the library parts are mostly located in this
file. So, in order to better support UPDATE builds, add a dependency
on this file for object files in subdirectories using this file.
 1.7 18-Jul-2008  pooka enable DIAGNOSTIC
 1.6 05-Jun-2008  ad branches: 1.6.2; 1.6.4;
Make it build again.
 1.5 03-May-2008  lukem branches: 1.5.2;
Rename MKPRIVATELIB to LIBISPRIVATE, to make it clearer that this is
a variable that is used by in-tree Makefiles to control behaviour.
(MKsomevar variables are generally intended to be controlled by the end-user)
 1.4 26-Oct-2007  pooka branches: 1.4.2; 1.4.18; 1.4.20; 1.4.22;
define _RUMPKERNEL
 1.3 07-Aug-2007  pooka branches: 1.3.2; 1.3.4; 1.3.6; 1.3.8; 1.3.12;
Compile kernel stuff with DIAGNOSTIC.
 1.2 07-Aug-2007  pooka -I${NETBSDSRCDIR}/common/include
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile.inc was added on branch matt-mips64 on 2007-08-05 22:28:05 +0000
 1.3.12.1 13-Nov-2007  bouyer Sync with HEAD
 1.3.8.3 27-Oct-2007  yamt sync with head.
 1.3.8.2 03-Sep-2007  yamt sync with head.
 1.3.8.1 07-Aug-2007  yamt file Makefile.inc was added on branch yamt-lazymbuf on 2007-09-03 14:45:01 +0000
 1.3.6.1 06-Nov-2007  matt sync with HEAD
 1.3.4.2 20-Aug-2007  ad Sync with HEAD.
 1.3.4.1 07-Aug-2007  ad file Makefile.inc was added on branch vmlocking on 2007-08-20 22:07:17 +0000
 1.3.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.3.2.1 07-Aug-2007  skrll file Makefile.inc was added on branch nick-csl-alignment on 2007-08-15 13:50:20 +0000
 1.4.22.4 11-Mar-2010  yamt sync with head
 1.4.22.3 16-Sep-2009  yamt sync with head
 1.4.22.2 04-May-2009  yamt sync with head.
 1.4.22.1 16-May-2008  yamt sync with head.
 1.4.20.2 17-Jun-2008  yamt sync with head.
 1.4.20.1 18-May-2008  yamt sync with head.
 1.4.18.3 28-Sep-2008  mjf Sync with HEAD.
 1.4.18.2 29-Jun-2008  mjf Sync with HEAD.
 1.4.18.1 02-Jun-2008  mjf Sync with HEAD.
 1.4.2.2 26-Oct-2007  pooka define _RUMPKERNEL
 1.4.2.1 26-Oct-2007  pooka file Makefile.inc was added on branch jmcneill-pm on 2007-10-26 10:44:28 +0000
 1.5.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.6.4.1 19-Oct-2008  haad Sync with HEAD.
 1.6.2.2 31-Jul-2008  simonb Sync with head.
 1.6.2.1 21-Jul-2008  simonb Sync with head.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 10-Apr-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10; 1.1.12;
add aio driver as rump kernel component
 1.1.12.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 10-Apr-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:39 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 10-Apr-2014  tls file Makefile was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 10-Apr-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 10-Apr-2014  rmind file Makefile was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 10-Apr-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10; 1.1.12;
add aio driver as rump kernel component
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 10-Apr-2014  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:39 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 10-Apr-2014  tls file shlib_version was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 10-Apr-2014  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 10-Apr-2014  rmind file shlib_version was added on branch rmind-smpnet on 2014-05-18 17:46:16 +0000
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 16-Feb-2010  pooka branches: 1.2.20; 1.2.38;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 05-Aug-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.22;
Maintain consistency of naming between the rumpfs library name and
the MOUNT_FOOFS name. Don't bother polluting the obsolete lists
with the original names since they were in only for a few days.
 1.1.22.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.18.3 11-Mar-2010  yamt sync with head
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 05-Aug-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:26 +0000
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 05-Aug-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:00 +0000
 1.1.4.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.4.1 05-Aug-2008  mjf file Makefile was added on branch mjf-devfs2 on 2008-09-28 10:41:01 +0000
 1.1.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.2.1 05-Aug-2008  wrstuden file Makefile was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.2.38.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.20.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 05-Aug-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.46; 1.1.66;
Maintain consistency of naming between the rumpfs library name and
the MOUNT_FOOFS name. Don't bother polluting the obsolete lists
with the original names since they were in only for a few days.
 1.1.66.1 06-Apr-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 05-Aug-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:26 +0000
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 05-Aug-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:00 +0000
 1.1.4.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.4.1 05-Aug-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:01 +0000
 1.1.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.2.1 05-Aug-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.5 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.4 07-Aug-2014  hannken branches: 1.4.4;
Change efs from hashlist to vcache.
 1.3 29-Jul-2008  pooka branches: 1.3.38; 1.3.54;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.2 07-Aug-2007  pooka branches: 1.2.2; 1.2.4; 1.2.8; 1.2.14; 1.2.30; 1.2.34; 1.2.36; 1.2.38; 1.2.40;
more bsd.own.mk inclusion
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:05 +0000
 1.2.40.1 19-Oct-2008  haad Sync with HEAD.
 1.2.38.1 31-Jul-2008  simonb Sync with head.
 1.2.36.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.2.34.1 04-May-2009  yamt sync with head.
 1.2.30.1 28-Sep-2008  mjf Sync with HEAD.
 1.2.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.2.14.1 07-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:34 +0000
 1.2.8.2 03-Sep-2007  yamt sync with head.
 1.2.8.1 07-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:03 +0000
 1.2.4.2 20-Aug-2007  ad Sync with HEAD.
 1.2.4.1 07-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:18 +0000
 1.2.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.2.2.1 07-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:21 +0000
 1.3.54.1 10-Aug-2014  tls Rebase.
 1.3.38.2 03-Dec-2017  jdolecek update from HEAD
 1.3.38.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.4.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:26 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:00 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:01 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.8 12-Aug-2016  martin Add new file to fix the build.
 1.7 24-Jun-2016  christos Add new files
 1.6 03-Jun-2016  joerg Install new header and fix rump to include the corresponding source as
well.
 1.5 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.4 09-May-2012  riastradh branches: 1.4.2; 1.4.16;
Adapt ffs, lfs, and ext2fs to use genfs_rename.

ok dholland, rmind
 1.3 16-Feb-2010  pooka branches: 1.3.10; 1.3.14;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.2 29-Jul-2008  pooka branches: 1.2.14;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1 07-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.30; 1.1.34; 1.1.36; 1.1.38; 1.1.40;
support ext2fs
 1.1.40.1 19-Oct-2008  haad Sync with HEAD.
 1.1.38.1 31-Jul-2008  simonb Sync with head.
 1.1.36.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.34.2 11-Mar-2010  yamt sync with head
 1.1.34.1 04-May-2009  yamt sync with head.
 1.1.30.1 28-Sep-2008  mjf Sync with HEAD.
 1.1.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.1.14.1 07-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:34 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 07-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:04 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 07-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:18 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 07-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:21 +0000
 1.2.14.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.14.1 02-Jun-2012  mrg sync to latest -current.
 1.3.10.1 23-May-2012  yamt sync with head.
 1.4.16.3 05-Oct-2016  skrll Sync with HEAD
 1.4.16.2 09-Jul-2016  skrll Sync with HEAD
 1.4.16.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.2.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:26 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:00 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 31-Jul-2009  pooka branches: 1.1.2; 1.1.24; 1.1.42;
add fdesc fs rump lib
(don't descend in here by default, I don't want to deal with the
setlist pain for now)
 1.1.42.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.2.2 19-Aug-2009  yamt sync with head.
 1.1.2.1 31-Jul-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-08-19 18:48:27 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 31-Jul-2009  pooka branches: 1.1.2; 1.1.24; 1.1.42;
add fdesc fs rump lib
(don't descend in here by default, I don't want to deal with the
setlist pain for now)
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.2.2 19-Aug-2009  yamt sync with head.
 1.1.2.1 31-Jul-2009  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-08-19 18:48:27 +0000
 1.23 03-Jun-2023  lukem bsd.own.mk: rename GCC_NO_* to CC_WNO_*

Rename compiler-warning-disable variables from
GCC_NO_warning
to
CC_WNO_warning
where warning is the full warning name as used by the compiler.

GCC_NO_IMPLICIT_FALLTHRU is CC_WNO_IMPLICIT_FALLTHROUGH

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.22 03-Jun-2023  lukem bsd.own.mk: rename to CC_WNO_ADDRESS_OF_PACKED_MEMBER

Provide a single variable
CC_WNO_ADDRESS_OF_PACKED_MEMBER
with options for both clang and gcc, to replace
CLANG_NO_ADDR_OF_PACKED_MEMBER
CC_NO_ADDR_OF_PACKED_MEMBER
GCC_NO_ADDR_OF_PACKED_MEMBER

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.21 06-Sep-2020  mrg add support for new GCC 9 warnings that may be too much to fix
right now. new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree. mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it. (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.) clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
 1.20 16-May-2020  christos Add ACL support for FFS. From FreeBSD.
 1.19 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.18 18-Apr-2020  christos Extended attribute support for ffsv2, from FreeBSD.
 1.17 12-Apr-2020  christos remove removed file
 1.16 19-Oct-2015  pooka branches: 1.16.18; 1.16.28;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.15 08-May-2014  hannken branches: 1.15.4;
Add a global vnode cache:

- vcache_get() retrieves a referenced and initialised vnode / fs node pair.
- vcache_remove() removes a vnode / fs node pair from the cache.

On cache miss vcache_get() calls new vfs operation vfs_loadvnode() to
initialise a vnode / fs node pair. This call is guaranteed exclusive,
no other thread will try to load this vnode / fs node pair.

Convert ufs/ext2fs, ufs/ffs and ufs/mfs to use this interface.

Remove now unused ufs/ufs_ihash

Discussed on tech-kern.

Welcome to 6.99.41
 1.14 09-May-2012  riastradh branches: 1.14.2; 1.14.4; 1.14.12;
Adapt ffs, lfs, and ext2fs to use genfs_rename.

ok dholland, rmind
 1.13 06-Mar-2011  bouyer branches: 1.13.4; 1.13.8;
merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.12 20-May-2010  pooka branches: 1.12.2; 1.12.4;
include extattr support
 1.11 02-Mar-2010  pooka branches: 1.11.2;
While I like redundant computing, specifying each option just once
is generally enough.
 1.10 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.9 02-May-2009  pooka branches: 1.9.2;
Merge librumpfs_ufs into librumpfs_ffs. This reflects what happened
with the ffs kernel module and follows the trend of retiring ufs.
It also allows to get rid of a special case kludge in runtime module
loading, since ufs was not really a module. librumpfs_ufs is now
obsoleted and ffs consumers should be linked solely against
librumpfs_ffs.
 1.8 06-Apr-2009  pooka compile in snapshot code
 1.7 22-Feb-2009  ad PR kern/26878 FFSv2 + softdep = livelock (no free ram)
PR kern/16942 panic with softdep and quotas
PR kern/19565 panic: softdep_write_inodeblock: indirect pointer #1 mismatch
PR kern/26274 softdep panic: allocdirect_merge: ...
PR kern/26374 Long delay before non-root users can write to softdep partitions
PR kern/28621 1.6.x "vp != NULL" panic in ffs_softdep.c:4653 while unmounting a softdep (+quota) filesystem
PR kern/29513 FFS+Softdep panic with unfsck-able file-corruption
PR kern/31544 The ffs softdep code appears to fail to write dirty bits to disk
PR kern/31981 stopping scsi disk can cause panic (softdep)
PR kern/32116 kernel panic in softdep (assertion failure)
PR kern/32532 softdep_trackbufs deadlock
PR kern/37191 softdep: locking against myself
PR kern/40474 Kernel panic after remounting raid root with softdep

Retire softdep, pass 2. As discussed and later formally announced on the
mailing lists.
 1.6 05-Aug-2008  simonb branches: 1.6.2; 1.6.8;
Enable "options APPLE_UFS". OK pooka@.
 1.5 31-Jul-2008  simonb Merge the simonb-wapbl branch. From the original branch commit:

Add Wasabi System's WAPBL (Write Ahead Physical Block Logging)
journaling code. Originally written by Darrin B. Jewell while
at Wasabi and updated to -current by Antti Kantee, Andy Doran,
Greg Oster and Simon Burge.

OK'd by core@, releng@.
 1.4 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.3 24-Sep-2007  pooka branches: 1.3.4; 1.3.20; 1.3.24; 1.3.26; 1.3.28; 1.3.30;
-DFFS_EI
 1.2 07-Aug-2007  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.10;
more bsd.own.mk inclusion
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:05 +0000
 1.2.10.1 06-Oct-2007  yamt sync with head.
 1.2.8.3 27-Oct-2007  yamt sync with head.
 1.2.8.2 03-Sep-2007  yamt sync with head.
 1.2.8.1 07-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:05 +0000
 1.2.6.1 06-Nov-2007  matt sync with HEAD
 1.2.4.3 09-Oct-2007  ad Sync with head.
 1.2.4.2 20-Aug-2007  ad Sync with HEAD.
 1.2.4.1 07-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:19 +0000
 1.2.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.2.2.1 07-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:22 +0000
 1.3.30.1 19-Oct-2008  haad Sync with HEAD.
 1.3.28.2 31-Jul-2008  simonb Sync with head.
 1.3.28.1 10-Jun-2008  simonb Initial commit of Wasabi System's WAPBL (Write Ahead Physical Block
Logging) journaling code. Originally written by Darrin B. Jewell
while at Wasabi and updated to -current by Antti Kantee, Andy Doran,
Greg Oster and Simon Burge.

Still a number of issues - look in doc/BRANCHES for "simonb-wapbl"
for more info.
 1.3.26.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.3.24.3 11-Aug-2010  yamt sync with head.
 1.3.24.2 11-Mar-2010  yamt sync with head
 1.3.24.1 04-May-2009  yamt sync with head.
 1.3.20.1 28-Sep-2008  mjf Sync with HEAD.
 1.3.4.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.3.4.1 24-Sep-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:35 +0000
 1.6.8.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.6.2.2 28-Apr-2009  skrll Sync with HEAD.
 1.6.2.1 03-Mar-2009  skrll Sync with HEAD.
 1.9.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.9.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.11.2.2 21-Apr-2011  rmind sync with head
 1.11.2.1 30-May-2010  rmind sync with head
 1.12.4.3 18-Feb-2011  bouyer quota2_subr.c is not used outside of ufs_quota2.c in kernel, so make it
compiled conditionally on QUOTA2 again
 1.12.4.2 15-Feb-2011  bouyer Implement COMPAT_50 quotactl(2)
 1.12.4.1 20-Jan-2011  bouyer Snapshot of work in progress on a modernised disk quota system:
- new quotactl syscall (versionned for backward compat), which takes
as parameter a path to a mount point, and a prop_dictionary
(in plistref format) describing commands and arguments.
For each command, status and data are returned as a prop_dictionary.
quota commands features will be added to take advantage of this,
exporting quota data or getting quota commands as plists.

- new on disk-format storage (all 64bit wide), integrated to metadata for
ffs (and playing nicely with wapbl).
Quotas are enabled on a ffs filesystem via superblock flags.
tunefs(8) can enable or disable quotas.
On a quota-enabled filesystem, fsck_ffs(8) will track per-uid/gid
block and inode usages, and will check and update quotas in Pass 6.
quota usage and limits are stored in unliked files (one for users,
one for groups)l fsck_ffs(8) will create the files if needed, or
free them if needed. This means that after enabling or disabling
quotas on a filesystem; a fsck_ffs(8) run is required.
quotacheck(8) is not needed any more, on a unclean shutdown
fsck or journal replay will take care of fixing quotas.
newfs(8) can create a ready-to-mount quota-enabled filesystem
(superblock flags are set and quota inodes are created).
Other new features or semantic changes:
- default quota datas, applied to users or groups which don't already
have a quota entry
- per-user/group grace time (instead of a filesystem global one)
- 0 really means "nothing allowed at all", not "no limit".
If you want "no limit", set the limit to UQUAD_MAX (tools will
understand "unlimited" and "-")

A quota file is structured as follow:
it starts with a header, containing a few per-filesystem values,
and the default quota limits.
Quota entries are linked together as a simple list, each entry has a
pointer (as an offset withing the file) to the next.
The header has a pointer to a list of free quota entries, and
a hash table of in-use entries. The size of the hash table depends
on the filesystem block size (header+hash table should fit in the
first block). The file is not sparse and is a multiple of
filesystem block size (when the free quota entry list is empty a new
filesystem block is allocated). quota entries to not cross
filesystem block boundaries.

In memory, the kernel keeps a cache of recently used quota entries
as a reference to the block number, and offset withing the block.
The quota entry itself is keept in the buf cache.

fsck_ffs(8), tunefs(8) and newfs(8) supports are completed (with
related atf tests :)
The kernel can update disk usage and report it via quotactl(2).

Todo: enforce quotas limits (limits are not checked by kernel yet)
update repquota, edquota and rpc.rquotad to the new world
implement compat_50_quotactl ioctl.
update quotactl(2) man page

fsck_ffs required fixes so that allocating new blocks or inodes will
properly update the superblock and cg sumaries. This was not an issue up
to now because superblock and cg sumaries check happened last, but now
allocations or frees can happen in pass 6.
 1.12.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.13.8.1 02-Jun-2012  mrg sync to latest -current.
 1.13.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.4.1 23-May-2012  yamt sync with head.
 1.14.12.1 10-Aug-2014  tls Rebase.
 1.14.4.1 18-May-2014  rmind sync with head
 1.14.2.2 03-Dec-2017  jdolecek update from HEAD
 1.14.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.15.4.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.16.28.1 20-Apr-2020  bouyer Sync with HEAD
 1.16.18.1 21-Apr-2020  martin Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:26 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 29-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
Support fifofs in rump. Do not include it in rumpvfs directly,
since it involves some very non-fs'y components like sockets and
local domain networking. Also (for better or worse?), call it
rump*v*fs_fifofs instead of rumpfs_fifofs, since it does not really
provide a file system driver.

XXX: uses duplicate common symbols and functionality depends on
link order ... (but at least it works better than before this change)
 1.1.42.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 29-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:03 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 29-Mar-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-05-30 05:18:05 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 29-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:27 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
Support fifofs in rump. Do not include it in rumpvfs directly,
since it involves some very non-fs'y components like sockets and
local domain networking. Also (for better or worse?), call it
rump*v*fs_fifofs instead of rumpfs_fifofs, since it does not really
provide a file system driver.

XXX: uses duplicate common symbols and functionality depends on
link order ... (but at least it works better than before this change)
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 29-Mar-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:03 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 29-Mar-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-05-30 05:18:05 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 29-Mar-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:27 +0000
 1.5 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.4 10-Aug-2014  hannken branches: 1.4.4;
Change hfs from hashlist to vcache.
- use (cnid, fork) as key.
- use pool for hfs nodes.
 1.3 16-Feb-2010  pooka branches: 1.3.20;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.2 29-Jul-2008  pooka branches: 1.2.14;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1 08-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.30; 1.1.34; 1.1.36; 1.1.38; 1.1.40;
Add hfs. Untested, as I couldn't find a hfs+ image for testing,
so one would be appreciated. At least it works enough to tell me
this:

hfs: Plain HFS volumes not currently supported
 1.1.40.1 19-Oct-2008  haad Sync with HEAD.
 1.1.38.1 31-Jul-2008  simonb Sync with head.
 1.1.36.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.34.2 11-Mar-2010  yamt sync with head
 1.1.34.1 04-May-2009  yamt sync with head.
 1.1.30.1 28-Sep-2008  mjf Sync with HEAD.
 1.1.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.1.14.1 08-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:36 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 08-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:06 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 08-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:19 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 08-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:23 +0000
 1.2.14.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.20.2 03-Dec-2017  jdolecek update from HEAD
 1.3.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.4.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:26 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 20-Jul-2014  hannken branches: 1.2.4;
Change kernfs from hashlist to vcache.
 1.1 31-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.38;
support kernfs
 1.1.38.1 10-Aug-2014  tls Rebase.
 1.1.24.2 03-Dec-2017  jdolecek update from HEAD
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 31-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:03 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 31-Mar-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-05-30 05:18:05 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 31-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:27 +0000
 1.2.4.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 31-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
support kernfs
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 31-Mar-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:03 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 31-Mar-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-05-30 05:18:05 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 31-Mar-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:27 +0000
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 26-May-2011  joerg branches: 1.2.14; 1.2.32;
Default to -Wno-sign-compare -Wno-pointer-sign for clang.
Push -Wno-array-bounds down to the cases that depend on it.
Selectively disable warnings for 3rd party software or non-trivial
issues to be reviewed later to get clang -Werror to build most of the
tree.
 1.1 29-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8;
Support unionfs (and layervfs, which is required for unionfs).
 1.1.8.1 06-Jun-2011  jruoho Sync with HEAD.
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 29-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:04 +0000
 1.1.4.3 31-May-2011  rmind sync with head
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 29-Mar-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-05-30 05:18:05 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 29-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:28 +0000
 1.2.32.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.14.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
Support unionfs (and layervfs, which is required for unionfs).
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 29-Mar-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:04 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 29-Mar-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-05-30 05:18:05 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 29-Mar-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:28 +0000
 1.18 07-Oct-2023  rin Drop -O[01] hacks for vax; no longer necessary for patched GCC 10

PR port-vax/57646: Import major vax toolchain fix by Kalvis Duckmanton

XXXRO: GCC 12 may require hacks for a while, but it turned out that
GCC 12 should be treated differently from older versions; a lot of new
files need -O[01] flags, while some may no longer require it.

I will take a look later.

Note that these hacks are not required if Kalvis's patches for GCC 12
are applied.

Keep doc/HACKS entries for a while (will be sync with update for GCC 12).

diff --git a/crypto/external/bsd/openssh/lib/Makefile b/crypto/external/bsd/openssh/lib/Makefile
index 96a93f5e396..4e38be1b642 100644
--- a/crypto/external/bsd/openssh/lib/Makefile
+++ b/crypto/external/bsd/openssh/lib/Makefile
@@ -117,12 +117,6 @@ COPTS.${f}.c+= -Wno-pointer-sign
# XXX
COPTS.channels.c+= -fno-strict-aliasing

-# XXX
-.if ${MACHINE} == "vax"
-COPTS.poly1305.c+= -O0
-COPTS.umac.c+= -O0
-.endif
-
COPTS.hostfile.c+= ${CC_WNO_FORMAT_TRUNCATION}
COPTS.sshkey.c+= ${CC_WNO_FORMAT_TRUNCATION}
COPTS.cipher.c+= -Wno-error=deprecated-declarations
diff --git a/distrib/utils/x_ping/Makefile b/distrib/utils/x_ping/Makefile
index f1c452a0d60..8ee77580a3f 100644
--- a/distrib/utils/x_ping/Makefile
+++ b/distrib/utils/x_ping/Makefile
@@ -12,10 +12,6 @@ CPPFLAGS+= -I${SRCDIR} -DCRUNCHOPS
DPADD= ${LIBM}
LDADD= -lm

-.if ${MACHINE_ARCH} == "vax"
-COPTS.ping.c=-O0
-.endif
-
.include <bsd.prog.mk>

.PATH: ${SRCDIR}
diff --git a/external/apache2/argon2/lib/libargon2/Makefile.inc b/external/apache2/argon2/lib/libargon2/Makefile.inc
index d3f4470c6c7..6a1dd146d7d 100644
--- a/external/apache2/argon2/lib/libargon2/Makefile.inc
+++ b/external/apache2/argon2/lib/libargon2/Makefile.inc
@@ -16,7 +16,3 @@ CFLAGS+= -pthread
LDADD+=-lpthread
DPADD+=${LIBPTHREAD}
.endif
-
-.if ${MACHINE} == "vax"
-COPTS.blake2b.c+= -O0
-.endif
diff --git a/external/bsd/jemalloc/lib/Makefile.inc b/external/bsd/jemalloc/lib/Makefile.inc
index 2f524358f46..d5da774f293 100644
--- a/external/bsd/jemalloc/lib/Makefile.inc
+++ b/external/bsd/jemalloc/lib/Makefile.inc
@@ -53,12 +53,6 @@ COPTS.ctl.c+=-Wno-error=stack-protector
COPTS.stats.c+=-Wno-error=stack-protector
COPTS.tcache.c+=-Wno-error=stack-protector

-.if ${MACHINE_ARCH} == "vax"
-# in merge_overlapping_regs, at regrename.c
-COPTS.arena.c+=-O0
-COPTS.extent.c+=-O0
-.endif
-
SRCS+=${JEMALLOC_SRCS}

jemalloc.d jemalloc.pico jemalloc.o jemalloc.ln jemalloc.po jemalloc.go: \
diff --git a/external/bsd/mdocml/lib/libmandoc/Makefile b/external/bsd/mdocml/lib/libmandoc/Makefile
index 40d7e29ae88..dfd3077a2c7 100644
--- a/external/bsd/mdocml/lib/libmandoc/Makefile
+++ b/external/bsd/mdocml/lib/libmandoc/Makefile
@@ -39,11 +39,6 @@ tbl_opts.c

MAN= mandoc.3

-# XXX
-.if ${MACHINE} == "vax"
-COPTS.mdoc_macro.c+=-O0
-.endif
-
COPTS.man_validate.c+=-Wno-error=array-bounds

.include <bsd.lib.mk>
diff --git a/external/gpl3/binutils.old/lib/libbfd/Makefile b/external/gpl3/binutils.old/lib/libbfd/Makefile
index 03477232b55..74a354532fa 100644
--- a/external/gpl3/binutils.old/lib/libbfd/Makefile
+++ b/external/gpl3/binutils.old/lib/libbfd/Makefile
@@ -41,10 +41,6 @@ CPPFLAGS+= -I${.CURDIR}/arch/${BFD_MACHINE_ARCH} -I${DIST}/include -I. \
-DDEBUGDIR=\"${DEBUGDIR}\" -DLIBDIR=\"${LIBDIR}\" \
-DBINDIR=\"${BINDIR}\"

-.if (${BFD_MACHINE_ARCH} == "vax")
-CPPFLAGS.elf.c += -O0
-.endif
-
COPTS.pei-x86_64.c+= -Wno-stack-protector
COPTS.elfxx-mips.c+= -Wno-stack-protector
COPTS.elf.c+= ${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} >= 10:? -Wno-overflow :}
diff --git a/external/gpl3/binutils/lib/libbfd/Makefile b/external/gpl3/binutils/lib/libbfd/Makefile
index 00cb2b20081..a3f0c25fd35 100644
--- a/external/gpl3/binutils/lib/libbfd/Makefile
+++ b/external/gpl3/binutils/lib/libbfd/Makefile
@@ -41,10 +41,6 @@ CPPFLAGS+= -I${.CURDIR}/arch/${BFD_MACHINE_ARCH} -I${DIST}/include -I. \
-DDEBUGDIR=\"${DEBUGDIR}\" -DLIBDIR=\"${LIBDIR}\" \
-DBINDIR=\"${BINDIR}\"

-.if (${BFD_MACHINE_ARCH} == "vax")
-CPPFLAGS.elf.c += -O0
-.endif
-
COPTS.pei-x86_64.c+= -Wno-stack-protector
COPTS.elfxx-mips.c+= -Wno-stack-protector
COPTS.elf.c+= ${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} >= 10:? -Wno-overflow :}
diff --git a/external/gpl3/gcc.old/lib/Makefile.sanitizer b/external/gpl3/gcc.old/lib/Makefile.sanitizer
index efd36ae4bee..5173a5109a0 100644
--- a/external/gpl3/gcc.old/lib/Makefile.sanitizer
+++ b/external/gpl3/gcc.old/lib/Makefile.sanitizer
@@ -88,22 +88,3 @@ COPTS+=-fno-builtin -fno-exceptions -fno-rtti -funwind-tables

# Can't profile without it`
#-fomit-frame-pointer
-
-.if ${MACHINE_ARCH} == "vax"
-COPTS.sanitizer_allocator.cc += -O1
-COPTS.sanitizer_common.cc += -O1
-COPTS.sanitizer_common_libcdep.cc += -O1
-COPTS.sanitizer_coverage_libcdep.cc += -O1
-COPTS.sanitizer_coverage_mapping_libcdep.cc += -O1
-COPTS.sanitizer_deadlock_detector1.cc += -O1
-COPTS.sanitizer_mac.cc += -O1
-COPTS.sanitizer_netbsd.cc += -O1
-COPTS.sanitizer_posix.cc += -O1
-COPTS.sanitizer_printf.cc += -O1
-COPTS.sanitizer_procmaps_common.cc += -O1
-COPTS.sanitizer_stackdepot.cc += -O1
-COPTS.sanitizer_symbolizer_libcdep.cc += -O1
-COPTS.sanitizer_symbolizer_report.cc += -O1
-COPTS.ubsan_diag.cc += -O1
-COPTS.ubsan_init.cc += -O1
-.endif
diff --git a/external/gpl3/gcc.old/lib/libasan/Makefile b/external/gpl3/gcc.old/lib/libasan/Makefile
index 1e6f9608abe..3da7bbf2f58 100644
--- a/external/gpl3/gcc.old/lib/libasan/Makefile
+++ b/external/gpl3/gcc.old/lib/libasan/Makefile
@@ -49,14 +49,6 @@ LIBDPLIBS+= m ${NETBSDSRCDIR}/lib/libm
LIBDPLIBS+= pthread ${NETBSDSRCDIR}/lib/libpthread
CPPFLAGS+=-DCAN_SANITIZE_UB=0

-.if ${MACHINE_ARCH} == "vax"
-COPTS.asan_allocator.cc += -O1
-COPTS.asan_report.cc += -O1
-COPTS.sanitizer_file.cc += -O1
-COPTS.ubsan_diag.cc += -O1
-COPTS.ubsan_init.cc += -O1
-.endif
-
.if ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb"
COPTS.asan_interceptors.cc += -O1
.endif
diff --git a/external/gpl3/gcc.old/lib/liblsan/Makefile b/external/gpl3/gcc.old/lib/liblsan/Makefile
index 4578544a9a8..ddb7981077c 100644
--- a/external/gpl3/gcc.old/lib/liblsan/Makefile
+++ b/external/gpl3/gcc.old/lib/liblsan/Makefile
@@ -16,11 +16,6 @@ LSAN_SRCS+= \
lsan_linux.cc \
lsan_thread.cc

-.if ${MACHINE_ARCH} == "vax"
-COPTS.lsan_allocator.cc += -O1
-COPTS.sanitizer_file.cc += -O1
-.endif
-
LIB= lsan
SRCS+= ${LSAN_SRCS}
LIBDPLIBS+= m ${NETBSDSRCDIR}/lib/libm
diff --git a/external/gpl3/gcc.old/lib/libubsan/Makefile b/external/gpl3/gcc.old/lib/libubsan/Makefile
index 2e2faca7b1c..9de82550d14 100644
--- a/external/gpl3/gcc.old/lib/libubsan/Makefile
+++ b/external/gpl3/gcc.old/lib/libubsan/Makefile
@@ -26,10 +26,6 @@ UBSAN_SRCS= \
COPTS.${_s}.cc+=-frtti
.endfor

-.if ${MACHINE_ARCH} == "vax"
-COPTS.sanitizer_file.cc += -O1
-.endif
-
LIB= ubsan
SRCS+= ${UBSAN_SRCS}
LIBDPLIBS+= m ${NETBSDSRCDIR}/lib/libm
diff --git a/external/gpl3/gcc.old/usr.bin/cc1/Makefile b/external/gpl3/gcc.old/usr.bin/cc1/Makefile
index c55e292ee8e..ff12a5be524 100644
--- a/external/gpl3/gcc.old/usr.bin/cc1/Makefile
+++ b/external/gpl3/gcc.old/usr.bin/cc1/Makefile
@@ -46,17 +46,6 @@ CPPFLAGS.default-c.c+= -I${BACKENDOBJ}
BUILDSYMLINKS+= ${GNUHOSTDIST}/gcc/config/sh/sh-c.cc sh-c.c
.endif

-.if ${MACHINE_CPU} == "vax"
-COPTS.c-decl.c+=-O0
-COPTS.c-typeck.c+=-O0
-COPTS.c-array-notation.c+=-O0
-COPTS.c-common.c+=-O0
-COPTS.c-ada-spec.c+=-O0
-COPTS.cilk.c+=-O0
-COPTS.c-ubsan.c+=-O0
-COPTS.cc1-checksum.c+=-O0
-.endif
-
.if ${MACHINE_ARCH} == "mipseb" || ${MACHINE_ARCH} == "mipsel"
COPTS.c-common.c+=-O3
.endif
diff --git a/external/gpl3/gcc.old/usr.bin/cc1obj/Makefile b/external/gpl3/gcc.old/usr.bin/cc1obj/Makefile
index 3123ee0d60b..aab82ad3448 100644
--- a/external/gpl3/gcc.old/usr.bin/cc1obj/Makefile
+++ b/external/gpl3/gcc.old/usr.bin/cc1obj/Makefile
@@ -44,16 +44,8 @@ COPTS.objc-act.c+= -Wno-stack-protector
COPTS.objc-gnu-runtime-abi-01.c+= -Wno-stack-protector
COPTS.objc-next-runtime-abi-01.c+= -Wno-stack-protector

-.if ${MACHINE_ARCH} == "vax"
-COPTS.c-decl.c+=-O0
-COPTS.c-typeck.c+=-O0
-COPTS.c-array-notation.c+=-O0
-COPTS.c-common.c+=-O0
-COPTS.c-ada-spec.c+=-O0
-COPTS.cilk.c+=-O0
-COPTS.c-ubsan.c+=-O0
-COPTS.cc1obj-checksum.c+=-O0
-.endif
+COPTS.c-cppbuiltin.c+= ${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} == 8:? -Wno-error=format-overflow :}
+COPTS.c-typeck.c+= ${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} == 8:? -Wno-error=format-overflow :}

.if ${MACHINE_ARCH} == "mipseb" || ${MACHINE_ARCH} == "mipsel"
COPTS.c-common.c+=-O3
diff --git a/external/gpl3/gcc.old/usr.bin/cc1objplus/Makefile b/external/gpl3/gcc.old/usr.bin/cc1objplus/Makefile
index b9c108251c5..e04e8fc7f53 100644
--- a/external/gpl3/gcc.old/usr.bin/cc1objplus/Makefile
+++ b/external/gpl3/gcc.old/usr.bin/cc1objplus/Makefile
@@ -69,18 +69,6 @@ COPTS.objc-act.c+= -Wno-stack-protector
COPTS.objc-gnu-runtime-abi-01.c+= -Wno-stack-protector
COPTS.objc-next-runtime-abi-01.c+= -Wno-stack-protector

-.if ${MACHINE_ARCH} == "vax"
-COPTS.c-decl.c+=-O0
-COPTS.c-typeck.c+=-O0
-COPTS.c-array-notation.c+=-O0
-COPTS.c-common.c+=-O0
-COPTS.c-ada-spec.c+=-O0
-COPTS.cilk.c+=-O0
-COPTS.c-ubsan.c+=-O0
-COPTS.cc1obj-checksum.c+=-O0
-COPTS.decl.c+=-O0
-.endif
-
.if ${MACHINE_ARCH} == "mipseb" || ${MACHINE_ARCH} == "mipsel"
COPTS.c-common.c+=-O3
.endif
diff --git a/external/gpl3/gcc.old/usr.bin/cc1plus/Makefile b/external/gpl3/gcc.old/usr.bin/cc1plus/Makefile
index 7936efd3a5e..7c54559e21a 100644
--- a/external/gpl3/gcc.old/usr.bin/cc1plus/Makefile
+++ b/external/gpl3/gcc.old/usr.bin/cc1plus/Makefile
@@ -31,23 +31,6 @@ CHECKSUM_OBJS= ${LIBBACKTRACEOBJ}/libbacktrace.a \

CFLAGS+= -Wno-error=stack-protector

-.if ${MACHINE_ARCH} == "vax"
-COPTS.call.c+=-O0
-COPTS.decl.c+=-O0
-COPTS.typeck2.c+=-O0
-COPTS.class.c+=-O0
-COPTS.typeck.c+=-O0
-COPTS.init.c+=-O0
-COPTS.semantics.c+=-O0
-COPTS.mangle.c+=-O0
-COPTS.constexpr.c+=-O0
-COPTS.c-common.c+=-O0
-COPTS.c-ada-spec.c+=-O0
-COPTS.cilk.c+=-O0
-COPTS.c-ubsan.c+=-O0
-COPTS.cc1plus-checksum.c+=-O0
-.endif
-
.if ${MACHINE_ARCH} == "mipseb" || ${MACHINE_ARCH} == "mipsel"
COPTS.c-common.c+=-O3
.endif
diff --git a/external/gpl3/gcc.old/usr.bin/gcc/Makefile b/external/gpl3/gcc.old/usr.bin/gcc/Makefile
index 7a66d77ffc7..a5a4b1c3adf 100644
--- a/external/gpl3/gcc.old/usr.bin/gcc/Makefile
+++ b/external/gpl3/gcc.old/usr.bin/gcc/Makefile
@@ -25,9 +25,6 @@ ${SRCS}: ${GCCARCH}/defs.mk
.include <bsd.info.mk>

COPTS.gcc.c= -Wno-stack-protector
-.if ${MACHINE_ARCH} == "vax"
-COPTS.dse.c= -O1
-.endif

.PATH: ${DIST}/gcc ${DIST}/gcc/doc ${DIST}/gcc/c

diff --git a/external/gpl3/gcc.old/usr.bin/libdecnumber/Makefile b/external/gpl3/gcc.old/usr.bin/libdecnumber/Makefile
index 751d1513eec..33aeb1c9898 100644
--- a/external/gpl3/gcc.old/usr.bin/libdecnumber/Makefile
+++ b/external/gpl3/gcc.old/usr.bin/libdecnumber/Makefile
@@ -14,10 +14,6 @@ SRCS= decNumber.c decContext.c decimal32.c decimal64.c decimal128.c
CPPFLAGS+= -I${.CURDIR}/arch/${GCC_MACHINE_ARCH} -I${DIST}/libdecnumber
CPPFLAGS+= -I${DIST}/libgcc

-.if ${MACHINE_ARCH} == "vax"
-COPTS.decNumber.c=-O0
-.endif
-
.include <bsd.lib.mk>

# Force using C++ for this
diff --git a/external/gpl3/gcc.old/usr.bin/lto-dump/Makefile b/external/gpl3/gcc.old/usr.bin/lto-dump/Makefile
index 90f44a9fcf6..fd251464fb7 100644
--- a/external/gpl3/gcc.old/usr.bin/lto-dump/Makefile
+++ b/external/gpl3/gcc.old/usr.bin/lto-dump/Makefile
@@ -24,11 +24,6 @@ COPTS.lto-common.c+= -Wno-stack-protector
.include "../Makefile.backtrace"
.include "../Makefile.libdecnumber"

-.if ${MACHINE_ARCH} == "vax"
-COPTS.lto-lang.c+=-O0
-COPTS.lto-symtab.c+=-O0
-.endif
-
LDADD+= ${LIBIBERTY} ${LIBMPC} ${LIBMPFR} ${LIBGMP} -lintl -lz -lm
DPADD+= ${LIBIBERTY} ${LIBMPC} ${LIBMPFR} ${LIBGMP} ${LIBINTL} ${LIBZ} ${LIBM}

diff --git a/external/gpl3/gcc.old/usr.bin/lto1/Makefile b/external/gpl3/gcc.old/usr.bin/lto1/Makefile
index 4c49161a64c..340d3c6124f 100644
--- a/external/gpl3/gcc.old/usr.bin/lto1/Makefile
+++ b/external/gpl3/gcc.old/usr.bin/lto1/Makefile
@@ -21,11 +21,6 @@ COPTS.lto-common.c+= -Wno-stack-protector
.include "../Makefile.libcpp"
.include "../Makefile.libdecnumber"

-.if ${MACHINE_ARCH} == "vax"
-COPTS.lto-lang.c+=-O0
-COPTS.lto-symtab.c+=-O0
-.endif
-
LDADD+= ${LIBIBERTYOBJ}/libiberty.a
DPADD+= ${LIBIBERTYOBJ}/libiberty.a
LDADD+= ${LIBIBERTY} ${LIBMPC} ${LIBMPFR} ${LIBGMP} -lintl -lz -lm
diff --git a/external/gpl3/gdb.old/lib/libdecnumber/Makefile b/external/gpl3/gdb.old/lib/libdecnumber/Makefile
index bcd4ae5b222..ce28811526b 100644
--- a/external/gpl3/gdb.old/lib/libdecnumber/Makefile
+++ b/external/gpl3/gdb.old/lib/libdecnumber/Makefile
@@ -18,10 +18,6 @@ CPPFLAGS+= -I${.CURDIR}/arch/${GDB_MACHINE_ARCH} \

SRCS= ${G_OBJS:.o=.c} ${G_SOURCES}

-.if ${MACHINE_ARCH} == "vax"
-COPTS.decNumber.c=-O0
-.endif
-
.PATH: ${DIST}/libdecnumber ${DIST}/libdecnumber/dpd

.include <bsd.lib.mk>
diff --git a/external/gpl3/gdb/lib/libdecnumber/Makefile b/external/gpl3/gdb/lib/libdecnumber/Makefile
index c95d36e3dfa..e3169865304 100644
--- a/external/gpl3/gdb/lib/libdecnumber/Makefile
+++ b/external/gpl3/gdb/lib/libdecnumber/Makefile
@@ -18,10 +18,6 @@ CPPFLAGS+= -I${.CURDIR}/arch/${GDB_MACHINE_ARCH} \

SRCS= ${G_OBJS:.o=.c} ${G_SOURCES}

-.if ${MACHINE_ARCH} == "vax"
-COPTS.decNumber.c=-O0
-.endif
-
.PATH: ${DIST}/libdecnumber ${DIST}/libdecnumber/dpd ${DIST}/libdecnumber/bid

.include <bsd.lib.mk>
diff --git a/external/gpl3/gdb/lib/libgdb/Makefile b/external/gpl3/gdb/lib/libgdb/Makefile
index b87a515d13a..c118c363975 100644
--- a/external/gpl3/gdb/lib/libgdb/Makefile
+++ b/external/gpl3/gdb/lib/libgdb/Makefile
@@ -66,12 +66,6 @@ CFLAGS:= ${CXXFLAGS} -std=gnu++17 -Wno-error=stack-protector

ada-exp.c: ada-lex.c

-.if ${MACHINE} == "vax"
-. if ${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} >= 8
-COPTS.read.c+= -O0
-. endif
-.endif
-
# These are generated by implicit rules and are not easy to generate
CLEANDIRFILES+= \
ada-exp.c ada-lex.c \
diff --git a/external/mit/xorg/lib/gallium.old/Makefile b/external/mit/xorg/lib/gallium.old/Makefile
index 55b2fe3d1c1..bfa40c8974f 100644
--- a/external/mit/xorg/lib/gallium.old/Makefile
+++ b/external/mit/xorg/lib/gallium.old/Makefile
@@ -1211,10 +1211,6 @@ SYMLINKS+= gallium_dri.so.${SHLIB_MAJOR}.debug ${DRIDEBUGDIR}/${_d}_dri.so.${SHL
COPTS+= ${${ACTIVE_CC} == "clang":? -Wa,-Av8plus :}
.endif

-.if ${MACHINE_ARCH} == "vax"
-COPTS.nir.c += -O1
-.endif
-
# XXXGCC12
.if ${MACHINE_ARCH} == "m68k"
COPTS.st_glsl_to_tgsi.cpp += -O1
diff --git a/external/mit/xorg/lib/gallium/Makefile b/external/mit/xorg/lib/gallium/Makefile
index 6778a8c11c8..9f1422080fe 100644
--- a/external/mit/xorg/lib/gallium/Makefile
+++ b/external/mit/xorg/lib/gallium/Makefile
@@ -1428,10 +1428,6 @@ SYMLINKS+= gallium_dri.so.${SHLIB_MAJOR}.debug ${DRIDEBUGDIR}/${_d}_dri.so.${SHL
COPTS+= ${${ACTIVE_CC} == "clang":? -Wa,-Av8plus :}
.endif

-.if ${MACHINE_ARCH} == "vax"
-COPTS.nir.c += -O1
-.endif
-
COPTS.u_atomic.c+= ${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} >= 10:? -Wno-builtin-declaration-mismatch :}

.include <bsd.lib.mk>
diff --git a/external/mit/xorg/lib/libX11/Makefile.libx11 b/external/mit/xorg/lib/libX11/Makefile.libx11
index e103d9ace12..0e55c2a4732 100644
--- a/external/mit/xorg/lib/libX11/Makefile.libx11
+++ b/external/mit/xorg/lib/libX11/Makefile.libx11
@@ -471,11 +471,6 @@ COPTS.OpenDis.c+= -Wno-error # XXX xf86bigfstr.h
COPTS.XlibInt.c+= -Wno-error # XXX xcmiscstr.h
COPTS.XKBBind.c+= -Wno-deprecated-declarations # uses XKeycodeToKeysym

-# XXX
-.if ${MACHINE} == "vax"
-COPTS.lcWrap.c+= -O0
-.endif
-
CWARNFLAGS.clang+= -Wno-string-plus-int

.include "${NETBSDSRCDIR}/external/mit/xorg/tools/makekeys/Makefile.makekeys"
diff --git a/games/gomoku/Makefile b/games/gomoku/Makefile
index e86a63aaea7..678537066ed 100644
--- a/games/gomoku/Makefile
+++ b/games/gomoku/Makefile
@@ -9,10 +9,6 @@ LDADD= -lcurses -lterminfo
HIDEGAME=hidegame
CPPFLAGS+= ${DEBUG:D-DDEBUG}

-.if ${MACHINE} == "vax"
-COPTS.pickmove.c += -O0
-.endif
-
#WARNS= 6 # would produce warnings about small integer types
LINTFLAGS+= -w # treat warnings as errors
LINTFLAGS+= -T # strict bool mode
diff --git a/games/phantasia/Makefile b/games/phantasia/Makefile
index e9c53f23ae5..b919dac17c6 100644
--- a/games/phantasia/Makefile
+++ b/games/phantasia/Makefile
@@ -52,7 +52,3 @@ map: map.c
./map | plot > /dev/tty

.include <bsd.prog.mk>
-
-.if defined(HAVE_GCC) && ${MACHINE_ARCH} == "vax"
-COPTS.misc.c+= -O0
-.endif
diff --git a/lib/i18n_module/UTF7/Makefile b/lib/i18n_module/UTF7/Makefile
index 712c1515d42..7136f7f0cc3 100644
--- a/lib/i18n_module/UTF7/Makefile
+++ b/lib/i18n_module/UTF7/Makefile
@@ -3,6 +3,3 @@
SRCPRE=citrus_
.include <bsd.lib.mk>

-.if ${MACHINE_ARCH} == "vax" && defined(HAVE_GCC)
-COPTS.citrus_utf7.c+= -O0
-.endif
diff --git a/lib/libbz2/Makefile b/lib/libbz2/Makefile
index b2aea1e04b0..e60a2862d48 100644
--- a/lib/libbz2/Makefile
+++ b/lib/libbz2/Makefile
@@ -15,11 +15,6 @@ SRCS= blocksort.c huffman.c crctable.c randtable.c compress.c \
INCS= bzlib.h
INCSDIR= /usr/include

-# XXX huffman.c gets mis-compiled with 2.95.3
-.if ${MACHINE_ARCH} == "vax"
-COPTS+= -O0
-.endif
-
COPTS+= ${CC_WNO_IMPLICIT_FALLTHROUGH}

# XXX blocksort.c gets mis-compiled with 4.1
diff --git a/lib/libc/gdtoa/Makefile.inc b/lib/libc/gdtoa/Makefile.inc
index 132686fc33d..609da919803 100644
--- a/lib/libc/gdtoa/Makefile.inc
+++ b/lib/libc/gdtoa/Makefile.inc
@@ -44,10 +44,3 @@ SRCS+= dmisc.c \
.if ${MACHINE_ARCH} != "vax"
SRCS+= strtord.c
.endif
-
-# XXX revisit with newer GCC.
-# Ensure numbers like 0xffff319f5fa95963 print correctly
-# ("999999999999999.98", not garbage like "?A>C>@>C:BA;A><.:<")
-.if ${MACHINE_ARCH} == "vax" && defined(HAVE_GCC)
-COPTS.misc.c+= -O0
-.endif
diff --git a/lib/libcrypt/Makefile b/lib/libcrypt/Makefile
index cb3f89d6d09..e9c8be820da 100644
--- a/lib/libcrypt/Makefile
+++ b/lib/libcrypt/Makefile
@@ -30,9 +30,6 @@ SRCS+= crypt-argon2.c
SRCS+= ${src}
COPTS.${src}+= -fvisibility=hidden
. endfor
-. if ${MACHINE} == "vax"
-COPTS.blake2b.c+= -O0
-. endif
.endif

WARNS?= 5
diff --git a/libexec/ld.elf_so/Makefile b/libexec/ld.elf_so/Makefile
index f5baae1e883..24f7e1121e5 100644
--- a/libexec/ld.elf_so/Makefile
+++ b/libexec/ld.elf_so/Makefile
@@ -141,10 +141,6 @@ CPPFLAGS+= -DRTLD_DEFAULT_LIBRARY_PATH=\"${SHLIBDIR}:${LIBDIR}\"
COPTS.rtld.c+= -Wno-stack-protector
COPTS.symbol.c+=-Wno-stack-protector

-.if ${MACHINE_CPU} == "vax"
-COPTS.rtld.c+= -O0
-.endif
-
LDADD+= -Wl,--version-script=${.CURDIR}/symbols.map
LDADD+= -L${CLIBOBJ} -L${DESTDIR}${LIBDIR}
.if ${MKPICLIB} != "no"
diff --git a/sbin/fsck_ffs/Makefile.common b/sbin/fsck_ffs/Makefile.common
index 765638b2801..824e3bf2628 100644
--- a/sbin/fsck_ffs/Makefile.common
+++ b/sbin/fsck_ffs/Makefile.common
@@ -36,7 +36,3 @@ COPTS.ffs_appleufs.c+= -Wno-pointer-sign
.if ${MACHINE_ARCH} == "m68000"
COPTS.pass1.c+= -fno-tree-fre -fno-tree-lrs
.endif
-.if ${MACHINE_ARCH} == "vax"
-COPTS.pass1.c+= -O0
-COPTS.inode.c+= -O0
-.endif
diff --git a/sbin/fsdb/Makefile b/sbin/fsdb/Makefile
index c039f73a1eb..3b0331e5880 100644
--- a/sbin/fsdb/Makefile
+++ b/sbin/fsdb/Makefile
@@ -39,12 +39,6 @@ COPTS.${f}.c+= -Wno-pointer-sign
COPTS.pass1.c+= -fno-tree-fre -fno-tree-lrs
.endif

-.if ${MACHINE_ARCH} == "vax"
-COPTS.pass1.c+= -O0
-COPTS.inode.c+= -O0
-COPTS.fsdb.c+= -O0
-.endif
-
CWARNFLAGS.gcc+= ${CC_WNO_ADDRESS_OF_PACKED_MEMBER}

.include <bsd.prog.mk>
diff --git a/sbin/newfs_ext2fs/Makefile b/sbin/newfs_ext2fs/Makefile
index 40a44b9a038..ecfdbff4d3a 100644
--- a/sbin/newfs_ext2fs/Makefile
+++ b/sbin/newfs_ext2fs/Makefile
@@ -20,8 +20,4 @@ DPADD+=${LIBPROP}

.PATH: ${NETBSDSRCDIR}/sys/ufs/ext2fs ${FSCK}

-.if ${MACHINE_ARCH} == "vax"
-COPTS.mke2fs.c=-O0
-.endif
-
.include <bsd.prog.mk>
diff --git a/sbin/ping/Makefile b/sbin/ping/Makefile
index 4f33501ea7a..1f7f56e3ea5 100644
--- a/sbin/ping/Makefile
+++ b/sbin/ping/Makefile
@@ -12,8 +12,4 @@ CPPFLAGS+= -DIPSEC
LDADD+= -lipsec
DPADD+= ${LIBIPSEC}

-.if ${MACHINE_ARCH} == "vax"
-COPTS.ping.c=-O0
-.endif
-
.include <bsd.prog.mk>
diff --git a/sys/arch/vax/conf/Makefile.vax b/sys/arch/vax/conf/Makefile.vax
index cf095d54a86..c483eaa644a 100644
--- a/sys/arch/vax/conf/Makefile.vax
+++ b/sys/arch/vax/conf/Makefile.vax
@@ -34,7 +34,6 @@ GENASSYM_CONF= ${VAX}/vax/genassym.cf
CPPFLAGS+= -D_VAX_INLINE_
AFLAGS+= -x assembler-with-cpp -fno-pic
CFLAGS+= -fno-pic
-COPTS.wsmux.c+= ${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} >= 9:? -O1 :}


##
diff --git a/sys/lib/libsa/Makefile b/sys/lib/libsa/Makefile
index 718c97ce857..4ef3840c753 100644
--- a/sys/lib/libsa/Makefile
+++ b/sys/lib/libsa/Makefile
@@ -96,7 +96,3 @@ SRCS+= ufs.c
lib${LIB}.o:: ${OBJS:O} __buildstdlib

CPPFLAGS+= -Wno-pointer-sign
-
-.if defined(HAVE_GCC) && ${MACHINE_ARCH} == "vax"
-COPTS.bootp.c+= -O0
-.endif
diff --git a/sys/lib/libz/Makefile b/sys/lib/libz/Makefile
index 6945c0da6c6..61fb7d4f652 100644
--- a/sys/lib/libz/Makefile
+++ b/sys/lib/libz/Makefile
@@ -25,7 +25,3 @@ CLEANFILES+= lib${LIB}.o
.include <bsd.lib.mk>

lib${LIB}.o:: ${OBJS:O} __buildstdlib
-
-.if defined(HAVE_GCC) && ${MACHINE_ARCH} == "vax"
-COPTS.inftrees.c+= -O0
-.endif
diff --git a/sys/modules/lfs/Makefile b/sys/modules/lfs/Makefile
index 962538821a5..ea8f187e160 100644
--- a/sys/modules/lfs/Makefile
+++ b/sys/modules/lfs/Makefile
@@ -18,9 +18,4 @@ SRCS+= ulfs_bmap.c ulfs_dirhash.c ulfs_inode.c ulfs_lookup.c \

WARNS= 3

-.if ${MACHINE} == "vax"
-# GCC 6.5 and 7.4 cannot compile this with -DDIAGNOSTIC and -O2/-O1
-COPTS.lfs_inode.c+= -O0
-.endif
-
.include <bsd.kmodule.mk>
diff --git a/sys/rump/fs/lib/liblfs/Makefile b/sys/rump/fs/lib/liblfs/Makefile
index abade3767d9..68b74c62502 100644
--- a/sys/rump/fs/lib/liblfs/Makefile
+++ b/sys/rump/fs/lib/liblfs/Makefile
@@ -17,9 +17,6 @@ SRCS+= ulfs_bmap.c ulfs_dirhash.c ulfs_extattr.c \


CFLAGS+= -DLFS_KERNEL_RFW
-.if ${MACHINE_ARCH} == "vax"
-COPTS.lfs_inode.c+=-O0
-.endif

.include <bsd.lib.mk>
.include <bsd.klinks.mk>
diff --git a/usr.sbin/mtrace/Makefile b/usr.sbin/mtrace/Makefile
index aef09db6198..9c125c15265 100644
--- a/usr.sbin/mtrace/Makefile
+++ b/usr.sbin/mtrace/Makefile
@@ -12,10 +12,6 @@ PROG= mtrace
SRCS= igmp.c inet.c kern.c mtrace.c
MAN= mtrace.8

-.if ${MACHINE_ARCH} == "vax"
-COPTS.mtrace.c=-O0
-.endif
-
BINMODE=4555
BINOWN= root

diff --git a/external/gpl3/gcc.old/usr.bin/backend/Makefile b/external/gpl3/gcc.old/usr.bin/backend/Makefile
index d69a26fe619..99e881c783d 100644
--- a/external/gpl3/gcc.old/usr.bin/backend/Makefile
+++ b/external/gpl3/gcc.old/usr.bin/backend/Makefile
@@ -533,68 +533,9 @@ COPTS.insn-recog.c+=-Wno-error

.if ${GCC_MACHINE_ARCH} == "vax"
CPPFLAGS+=-I${.CURDIR}/../../lib/libgcc/libgcov/arch/${GCC_MACHINE_ARCH}
-COPTS.builtins.c+=-O0
-COPTS.calls.c+=-O0
-COPTS.convert.c+=-O0
-COPTS.data-streamer-out.c+=-O0
-COPTS.dse.c+=-O0 # XXX port-vax/51967
-COPTS.dwarf2out.c+=-O0
-COPTS.expmed.c+=-O0
-COPTS.expr.c+=-O0 -Wno-error=tautological-compare
-COPTS.fixed-value.c+=-O0
-COPTS.fold-const.c+=-O0
-COPTS.generic-match.c+=-O0
-COPTS.gimple-fold.c+=-O0
-COPTS.gimple-match.c+=-O0
-COPTS.gimple-ssa-strength-reduction.c+=-O0
-COPTS.gimple-ssa-warn-restrict.c+=-O0
-COPTS.gimple.c+=-O0
-COPTS.internal-fn.c+=-O0
-COPTS.lto-streamer-out.c+=-O0
-COPTS.omp-low.c+=-O0
-COPTS.predict.c+=-O0
-COPTS.range-op.cc+=-O0
-COPTS.recog.c+=-O0
-COPTS.sanopt.c+=-O0
-COPTS.stmt.c+=-O0
-COPTS.stor-layout.c+=-O0
-COPTS.targhooks.c+=-O0
-COPTS.tree-affine.c+=-O0
-COPTS.tree-cfg.c+=-O0
-COPTS.tree-data-ref.c+=-O0
-COPTS.tree-eh.c+=-O0
-COPTS.tree-if-conv.c+=-O0
-COPTS.tree-object-size.c+=-O0
-COPTS.tree-parloops.c+=-O0
-COPTS.tree-predcom.c+=-O0
-COPTS.tree-pretty-print.c+=-O0
-COPTS.tree-ssa-alias.c+=-O0
-COPTS.tree-ssa-ccp.c+=-O0
-COPTS.tree-ssa-forwprop.c+=-O0
-COPTS.tree-ssa-loop-ivopts.c+=-O0
-COPTS.tree-ssa-loop-manip.c+=-O0
-COPTS.tree-ssa-loop-niter.c+=-O0
-COPTS.tree-ssa-math-opts.c+=-O0
-COPTS.tree-ssa-phiopt.c+= -O0
-COPTS.tree-ssa-pre.c+=-O0
-COPTS.tree-ssa-reassoc.c+=-O0
-COPTS.tree-ssa-strlen.c+=-O0
-COPTS.tree-ssa-uninit.c+=-O0
-COPTS.tree-ssa.c+=-O0
-COPTS.tree-switch-conversion.c+=-O0
-COPTS.tree-vect-data-refs.c+=-O0
-COPTS.tree-vect-loop-manip.c+=-O0
-COPTS.tree-vect-loop.c+=-O0
-COPTS.tree-vect-patterns.c+=-O0
-COPTS.tree-vect-stmts.c+=-O0
-COPTS.tree-vrp.c+=-O0
-COPTS.tree.c+=-O0
-COPTS.ubsan.c+=-O0
-COPTS.varasm.c+=-O0
-COPTS.vr-values.c+=-O0
-COPTS.web.c+=-O0
-COPTS.wide-int-range.cc+=-O0
-COPTS.wide-int.cc+=-O0
+
+COPTS.expmed.c+=-Wno-error=tautological-compare
+COPTS.expr.c+=-Wno-error=tautological-compare
.else
COPTS.tree.c= ${${ACTIVE_CC} == "clang" :? -O0 :}
.endif
 1.17 07-Sep-2020  mrg branches: 1.17.20;
remove GCC_NO_ADDR_OF_PACKED_MEMBER for several subdir builds
that are now handled by lfs_accessors.h internally.
 1.16 06-Sep-2020  mrg add support for new GCC 9 warnings that may be too much to fix
right now. new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree. mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it. (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.) clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
 1.15 21-Mar-2020  riastradh Suppress spurious address-of-packed error in rump lfs too.
 1.14 23-Mar-2016  christos branches: 1.14.18; 1.14.22;
elide vax compiler bug.
 1.13 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.12 31-May-2015  hannken Change lfs from hash table to vcache.

- Change lfs_valloc() to return an inode number and version instead of
a vnode and move lfs_ialloc() and lfs_vcreate() to new lfs_init_vnode().

- Add lfs_valloc_fixed() to allocate a known inode, used by kernel
roll forward.

- Remove lfs_*ref(), these functions cannot coexist with vcache and
their commented behaviour is far away from their implementation.

- Add the cleaner lwp and blockinfo to struct ulfsmount so lfs_loadvnode()
may use hints from the cleaner.

- Remove vnode locks from ulfs_lookup() like we did with ufs_lookup().
 1.11 16-May-2014  dholland branches: 1.11.4;
Move lfs_getpages and lfs_putpages to their own file.
 1.10 18-Mar-2014  riastradh branches: 1.10.2;
Merge riastradh-drm2 to HEAD.
 1.9 20-Jul-2013  dholland why does rump have to have its own private build system?
 1.8 08-Jun-2013  dholland branches: 1.8.2; 1.8.4;
right, why does rump have to have its own copy of all the build information?
 1.7 06-Jun-2013  dholland Cleanups and hacks to make lfs userland stuff build:
- lfs_cksum.c doesn't actually need ulfs_inode.h any more.
- neither does lfs_itimes.c.
- add hacks to fsck_lfs to make it compile.
- add hacks to newfs_lfs to make it compile.
- fix warning in ulfs_quota.c when quotas are fully disabled
(as I guess is happening with the rumpity version)

XXX: This commit adds -I${NETBSDSRCDIR}/sys to the Makefiles for
XXX: fsck_lfs, newfs_lfs, and lfs_cleanerd. This needs to be cleaned
XXX: up ASAP; but I consider this less problematic in the short term
XXX: than spewing ulfs_*.h into /usr/include.
 1.6 16-Feb-2010  pooka branches: 1.6.10; 1.6.20;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.5 29-Jul-2008  pooka branches: 1.5.14;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.4 13-Dec-2007  pooka branches: 1.4.6; 1.4.10; 1.4.12; 1.4.14; 1.4.16;
LFS_KERNEL_RFW
 1.3 12-Dec-2007  elad Don't compile lfs_rfw.c, suggested by cube@.
 1.2 07-Aug-2007  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.14; 1.2.18; 1.2.20; 1.2.22;
more bsd.own.mk inclusion
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:05 +0000
 1.2.22.1 13-Dec-2007  bouyer Sync with HEAD
 1.2.20.1 13-Dec-2007  yamt sync with head.
 1.2.18.1 26-Dec-2007  ad Sync with head.
 1.2.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.2.14.1 07-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:37 +0000
 1.2.8.3 21-Jan-2008  yamt sync with head
 1.2.8.2 03-Sep-2007  yamt sync with head.
 1.2.8.1 07-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:07 +0000
 1.2.6.1 09-Jan-2008  matt sync with HEAD
 1.2.4.2 20-Aug-2007  ad Sync with HEAD.
 1.2.4.1 07-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:19 +0000
 1.2.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.2.2.1 07-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:23 +0000
 1.4.16.1 19-Oct-2008  haad Sync with HEAD.
 1.4.14.1 31-Jul-2008  simonb Sync with head.
 1.4.12.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.4.10.2 11-Mar-2010  yamt sync with head
 1.4.10.1 04-May-2009  yamt sync with head.
 1.4.6.1 28-Sep-2008  mjf Sync with HEAD.
 1.5.14.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.6.20.3 03-Dec-2017  jdolecek update from HEAD
 1.6.20.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.20.1 23-Jun-2013  tls resync from head
 1.6.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.4.1 23-Jul-2013  riastradh sync with HEAD
 1.8.2.2 18-May-2014  rmind sync with head
 1.8.2.1 28-Aug-2013  rmind sync with head
 1.10.2.1 10-Aug-2014  tls Rebase.
 1.11.4.3 22-Apr-2016  skrll Sync with HEAD
 1.11.4.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.11.4.1 06-Jun-2015  skrll Sync with HEAD
 1.14.22.1 17-Aug-2020  martin Pull up following revision(s) (requested by riastradh in ticket #1050):

sys/ufs/lfs/lfs_subr.c: revision 1.101
sys/ufs/lfs/lfs_subr.c: revision 1.102
sys/ufs/lfs/lfs_inode.c: revision 1.158
sys/ufs/lfs/lfs_inode.h: revision 1.25
sys/ufs/lfs/lfs_balloc.c: revision 1.95
sys/ufs/lfs/lfs_pages.c: revision 1.21
sys/ufs/lfs/lfs_vnops.c: revision 1.330
sys/ufs/lfs/lfs_alloc.c: revision 1.140 (patch)
sys/ufs/lfs/lfs_alloc.c: revision 1.141 (patch)
lib/libp2k/p2k.c: revision 1.72
sys/ufs/lfs/lfs.h: revision 1.205
sys/ufs/lfs/lfs.h: revision 1.206
sys/ufs/lfs/lfs_segment.c: revision 1.284
sys/ufs/lfs/lfs.h: revision 1.207
sys/ufs/lfs/lfs_segment.c: revision 1.285
sys/ufs/lfs/lfs_debug.c: revision 1.55
sys/ufs/lfs/lfs_rename.c: revision 1.23
usr.sbin/dumplfs/dumplfs.c: revision 1.65
sys/ufs/lfs/lfs_vfsops.c: revision 1.371
sys/arch/i386/stand/efiboot/bootx64/Makefile: revision 1.3
sys/ufs/lfs/lfs_vfsops.c: revision 1.372
sys/ufs/lfs/lfs_vfsops.c: revision 1.373
sbin/fsck_lfs/pass1.c: revision 1.46
sys/ufs/lfs/lfs_vnops.c: revision 1.326
sys/ufs/lfs/lfs_vnops.c: revision 1.327
sys/ufs/lfs/lfs_vfsops.c: revision 1.375 (patch)
sys/ufs/lfs/lfs_vnops.c: revision 1.328
sys/ufs/lfs/lfs_subr.c: revision 1.98
sys/ufs/lfs/lfs_extern.h: revision 1.116
sys/ufs/lfs/lfs_vnops.c: revision 1.329
sys/ufs/lfs/lfs_subr.c: revision 1.99
sys/ufs/lfs/lfs_extern.h: revision 1.117
sys/ufs/lfs/lfs_accessors.h: revision 1.49
sys/ufs/lfs/lfs_extern.h: revision 1.118
sys/rump/fs/lib/liblfs/Makefile: revision 1.15
sys/ufs/lfs/lfs_bio.c: revision 1.146 (patch)
sys/ufs/lfs/lfs_bio.c: revision 1.147
sys/ufs/lfs/lfs_subr.c: revision 1.100

Fix kassert in lfs by initializing vp first.

Use a marker node to iterate lfs_dchainhd / i_lfs_dchain.

I believe elements can be removed while the lock is dropped,
including the next node we're hanging on to.

Just use VOP_BWRITE for lfs_bwrite_log.
Hope this doesn't cause trouble with vfs_suspend.

Teach lfs to transition ro<->rw.

Prevent new dirops while we issue lfs_flush_dirops.

lfs_flush_dirops assumes (by KASSERT((ip->i_state & IN_ADIROP) == 0))
that vnodes on the dchain will not become involved in active dirops
even while holding no other locks (lfs_lock, v_interlock), so we must
set lfs_writer here. All other callers already set lfs_writer.

We set fs->lfs_writer++ without explicitly doing lfs_writer_enter
because
(a) we already waited for the dirops to drain, and
(b) we hold lfs_lock and cannot drop it before setting lfs_writer.

Assert lfs_writer where I think we can now prove it.

Serialize access to the splay tree with lfs_lock.

Change some cheap KDASSERT into KASSERT.

Take a reference and fix assertions in lfs_flush_dirops.
Fixes panic:
KASSERT((ip->i_state & IN_ADIROP) == 0) at lfs_vnops.c:1670
lfs_flush_dirops
lfs_check
lfs_setattr
VOP_SETATTR
change_mode
sys_fchmod
syscall

This assertion -- and the assertion that vp->v_uflag has VU_DIROP set
-- is valid only until we release lfs_lock, because we may race with
lfs_unmark_dirop which will remove the nodes and change the flags.

Further, vp itself is valid only as long as it is referenced, which it
is as long as it's on the dchain, but lfs_unmark_dirop drops the
dchain's reference.

Don't lfs_writer_enter while holding v_interlock.

There's no need to lfs_writer_enter at all here, as far as I can see.
lfs_flush_fs will do it for us.

Break deadlock in PR kern/52301.

The lock order is lfs_writer -> lfs_seglock. The problem in 52301 is
that lfs_segwrite violates this lock order by sometimes doing
lfs_seglock -> lfs_writer, either (a) when doing a checkpoint or (b),
opportunistically, when there are no dirops pending. Both cases can
deadlock, because dirops sometimes take the seglock (lfs_truncate,
lfs_valloc, lfs_vfree):
(a) There may be dirops pending, and they may be waiting for the
seglock, so we can't wait for them to complete while holding the
seglock.
(b) The test for fs->lfs_dirops == 0 happens unlocked, and the state
may change by the time lfs_writer_enter acquires lfs_lock.

To resolve this in each case:
(a) Do lfs_writer_enter before lfs_seglock, since we will need it
unconditionally anyway. The worst performance impact of this should
be that some dirops get delayed a little bit.
(b) Create a new lfs_writer_tryenter to use at this point so that the
test for fs->lfs_dirops == 0 and the acquisition of lfs_writer happen
atomically under lfs_lock.

Initialize/destroy lfs_allclean_wakeup in modcmd, not lfs_mountfs.

Fixes reloading lfs.kmod.

In lfs_update, hold lfs_writer around lfs_vflush.

Otherwise, we might do
lfs_vflush
-> lfs_seglock
-> lfs_segwait(SEGM_CKP)
-> lfs_writer_enter
which is the reverse of the lfs_writer -> lfs_seglock ordering.

Call lfs_orphan in lfs_rename while we're still in the dirop.
lfs_writer_enter can't fail; keep it simple and don't pretend it can.

Assert that mtsleep can't fail either -- it doesn't catch signals and
there's no timeout.

Teach LFS_ORPHAN_NEXTFREE about lfs64.

Dust off the orphan detection code and try to make it work.

Fix !DIAGNOSTIC compile

Fix userland references to LFS_ORPHAN_NEXTFREE.

Forgot to grep for these or do a full distribution build, oops!

Fix missing <sys/evcnt.h> by removing the evcnts instead.

Just wanted to confirm that a race might happen, and indeed it did.
These serve little diagnostic value otherwise.

OR into bp->b_cflags; don't overwrite.

CTASSERT lfs on-disk structure sizes.

Avoid misaligned access to lfs64 on-disk records in memory.
lfs64 directory entries are only 32-bit aligned in order to conserve
space in directory blocks, and we had a hack to stuff a 64-bit inode
in them. This replaces the hack by __aligned(4) __packed, and goes
further:

1. It's not clear that all the other lfs64 data structures are 64-bit
aligned on disk to begin with. We can go through these later and
upgrade them from
struct foo64 {
...
} __aligned(4) __packed;
union foo {
struct foo64 f64;
...
};
to
struct foo64 {
...
};
union foo {
struct foo64 f64 __aligned(8);
...
} __aligned(4) __packed;
if we really want to take advantage of 64-bit memory accesses.
However, the __aligned(4) __packed must remain on the union
because:
2. We access even the lfs32 data structures via a union that has
lfs64 members, and it turns out that compilers will assume access
through a union with 64-bit aligned members implies the whole
union has 64-bit alignment, even if we're only accessing a 32-bit
aligned member.

Fix clang build after packed lfs64 accessor change.

Suppress spurious address-of-packed error in rump lfs too.
 1.14.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.17.20.1 08-Oct-2023  martin Pull up following revision(s) (requested by rin in ticket #394):

external/gpl3/binutils/dist/gas/config/tc-vax.h: revision 1.10
tools/gcc/Makefile: revision 1.109
external/gpl3/binutils/dist/gas/config/tc-vax.c: revision 1.16
external/gpl3/binutils/dist/gas/config/tc-vax.c: revision 1.17
external/gpl3/binutils/dist/gas/config/tc-vax.c: revision 1.18
external/gpl3/gcc.old/dist/gcc/recog.c: revision 1.12
external/gpl3/gcc.old/dist/gcc/function.c: revision 1.16
external/gpl3/gcc.old/dist/gcc/dse.c: revision 1.14 - 1.16
external/gpl3/gcc.old/dist/gcc/config/vax/vax.c: revision 1.13
external/gpl3/gcc.old/dist/gcc/config/vax/vax.c: revision 1.14
external/gpl3/gcc.old/dist/gcc/config/vax/vax.c: revision 1.15
external/gpl3/gcc.old/dist/gcc/doc/tm.texi.in: revision 1.10
external/gpl3/gcc.old/dist/gcc/config/vax/vax.c: revision 1.16
external/gpl3/gcc.old/dist/gcc/config/vax/vax.c: revision 1.17
external/gpl3/gcc.old/dist/gcc/config/vax/vax.c: revision 1.18
external/gpl3/gcc.old/dist/gcc/config/vax/vax.c: revision 1.19
external/gpl3/gcc.old/dist/gcc/config/vax/vax.md: revision 1.12
external/gpl3/gcc.old/dist/gcc/config/vax/vax.md: revision 1.13
external/gpl3/gcc.old/usr.bin/backend/Makefile: revision 1.20
external/gpl3/gcc.old/dist/gcc/targhooks.c: revision 1.12
external/gpl3/gcc.old/dist/gcc/config/vax/vax.md: revision 1.14
external/gpl3/gcc.old/dist/gcc/config/vax/vax.md: revision 1.15
external/gpl3/gcc.old/dist/gcc/config/vax/builtins.md: revision 1.12
external/gpl3/gcc.old/dist/gcc/config/vax/vax.md: revision 1.16
external/gpl3/gcc.old/dist/gcc/config/vax/builtins.md: revision 1.13
external/gpl3/gcc.old/dist/gcc/doc/tm.texi: revision 1.12
external/gpl3/gcc.old/dist/gcc/config/vax/vax.md: revision 1.17
external/gpl3/gcc.old/dist/gcc/config/vax/vax.md: revision 1.18
external/gpl3/gcc.old/dist/gcc/config/vax/elf.h: revision 1.12
external/gpl3/gcc.old/dist/gcc/config/vax/elf.h: revision 1.13
external/gpl3/gcc.old/dist/gcc/targhooks.h: revision 1.12
external/gpl3/gcc.old/dist/gcc/target.def: revision 1.10
external/gpl3/gcc.old/dist/gcc/rtlanal.c: revision 1.14
external/gpl3/gcc.old/dist/gcc/reload.c: revision 1.12
external/gpl3/gcc.old/usr.bin/gcc/Makefile: revision 1.11
external/gpl3/gcc.old/usr.bin/lto-dump/Makefile: revision 1.3
external/gpl3/gcc.old/lib/Makefile.sanitizer: revision 1.7
external/gpl3/binutils.old/lib/libbfd/Makefile: revision 1.10
distrib/utils/x_ping/Makefile: revision 1.9
games/phantasia/Makefile: revision 1.38
external/apache2/argon2/lib/libargon2/Makefile.inc: revision 1.2
external/gpl3/gcc.old/lib/libubsan/Makefile: revision 1.8
external/bsd/mdocml/lib/libmandoc/Makefile: revision 1.13
sbin/ping/Makefile: revision 1.18
sbin/newfs_ext2fs/Makefile: revision 1.7
sys/lib/libz/Makefile: revision 1.24
sys/lib/libsa/Makefile: revision 1.97
external/gpl3/gcc.old/usr.bin/cc1objplus/Makefile: revision 1.3
external/gpl3/gdb/lib/libgdb/Makefile: revision 1.36
sys/modules/lfs/Makefile: revision 1.11
external/mit/xorg/lib/gallium/Makefile: revision 1.51
external/gpl3/gdb.old/lib/libdecnumber/Makefile: revision 1.10
external/mit/xorg/lib/libX11/Makefile.libx11: revision 1.26
libexec/ld.elf_so/Makefile: revision 1.148
external/bsd/jemalloc/lib/Makefile.inc: revision 1.16
external/gpl3/gcc.old/usr.bin/libdecnumber/Makefile: revision 1.14
crypto/external/bsd/openssh/lib/Makefile: revision 1.38
external/gpl3/gcc.old/usr.bin/backend/Makefile: revision 1.21
external/gpl3/gcc.old/usr.bin/cc1/Makefile: revision 1.12
external/gpl3/gcc.old/lib/libasan/Makefile: revision 1.11
external/gpl3/gcc.old/usr.bin/cc1plus/Makefile: revision 1.13
lib/libcrypt/Makefile: revision 1.36
external/gpl3/gdb/lib/libdecnumber/Makefile: revision 1.5
lib/libc/gdtoa/Makefile.inc: revision 1.13
games/gomoku/Makefile: revision 1.13
sbin/fsdb/Makefile: revision 1.43
external/gpl3/gcc.old/usr.bin/lto1/Makefile: revision 1.9
external/mit/xorg/lib/gallium.old/Makefile: revision 1.8
lib/libbz2/Makefile: revision 1.22
external/gpl3/gcc.old/usr.bin/cc1obj/Makefile: revision 1.12
usr.sbin/mtrace/Makefile: revision 1.14
external/gpl3/gcc.old/usr.bin/cc1obj/Makefile: revision 1.13
sys/arch/vax/conf/Makefile.vax: revision 1.86
sys/rump/fs/lib/liblfs/Makefile: revision 1.18
sbin/fsck_ffs/Makefile.common: revision 1.3
external/gpl3/binutils/lib/libbfd/Makefile: revision 1.27
lib/i18n_module/UTF7/Makefile: revision 1.5
external/gpl3/gcc.old/lib/liblsan/Makefile: revision 1.7
doc/CHANGES (apply patch)
(all external/gpl3/gcc.old/ changes applied to external/gpl3/gcc/)

PR 57646: Import major vax toolchain fix.
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:26 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 08-Mar-2010  pooka branches: 1.1.2; 1.1.6; 1.1.24; 1.1.42;
support mfs
 1.1.42.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 08-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:28 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 08-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:36 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 08-Mar-2010  pooka branches: 1.1.2; 1.1.6; 1.1.24; 1.1.42;
support mfs
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.6.1 08-Mar-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:28 +0000
 1.1.2.2 11-Mar-2010  yamt sync with head
 1.1.2.1 08-Mar-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:36 +0000
 1.7 03-Jun-2023  lukem bsd.own.mk: rename to CC_WNO_ADDRESS_OF_PACKED_MEMBER

Provide a single variable
CC_WNO_ADDRESS_OF_PACKED_MEMBER
with options for both clang and gcc, to replace
CLANG_NO_ADDR_OF_PACKED_MEMBER
CC_NO_ADDR_OF_PACKED_MEMBER
GCC_NO_ADDR_OF_PACKED_MEMBER

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.6 23-Oct-2021  hannken Move msdosfs_rename() and doscheckpath() to new file msdosfs_rename.c.

No functional change.
 1.5 06-Sep-2020  mrg add support for new GCC 9 warnings that may be too much to fix
right now. new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree. mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it. (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.) clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
 1.4 06-Feb-2016  mlelstv Split case folding table into separate source file and add full
copyright and permission notice from http://www.unicode.org/copyright.html
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 16-Feb-2010  pooka branches: 1.2.20; 1.2.38;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 05-Aug-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.22;
Maintain consistency of naming between the rumpfs library name and
the MOUNT_FOOFS name. Don't bother polluting the obsolete lists
with the original names since they were in only for a few days.
 1.1.22.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.18.3 11-Mar-2010  yamt sync with head
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 05-Aug-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:26 +0000
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 05-Aug-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.4.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.4.1 05-Aug-2008  mjf file Makefile was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.2.1 05-Aug-2008  wrstuden file Makefile was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.2.38.2 19-Mar-2016  skrll Sync with HEAD
 1.2.38.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.20.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 05-Aug-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.46; 1.1.66;
Maintain consistency of naming between the rumpfs library name and
the MOUNT_FOOFS name. Don't bother polluting the obsolete lists
with the original names since they were in only for a few days.
 1.1.66.1 06-Apr-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 05-Aug-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 05-Aug-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.4.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.4.1 05-Aug-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.2.1 05-Aug-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.13 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.12 24-Aug-2015  pooka don't -I imaginary opt directories
 1.11 02-Mar-2010  pooka branches: 1.11.20; 1.11.38;
Reflect removal of fs_nfs.h and -DNFS
 1.10 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.9 29-Dec-2008  pooka branches: 1.9.4;
* make features match those of the nfs module just to have them in-sync
* remove stubs.c since all are now provided by rumpnet
 1.8 19-Nov-2008  ad Make the emulations, exec formats, coredump, NFS, and the NFS server
into modules. By and large this commit:

- shuffles header files and ifdefs
- splits code out where necessary to be modular
- adds module glue for each of the components
- adds/replaces hooks for things that can be installed at runtime
 1.7 16-Oct-2008  christos branches: 1.7.2;
revert stack protector change.
 1.6 16-Oct-2008  pooka Ignore stack-protector, since with nfs_bio.c it gets its life force
drained out. Yes, this is a quick kludge, should rather fix
nfs_bio.c to be less silly.
 1.5 15-Oct-2008  pooka nfs_boot calls some networking stack routines directly. Since rump
will not invoke nfs_boot in the foreseeable future, provide those
routines as stubs in case sockin is used instead of the real
networking stack.
 1.4 06-Oct-2008  pooka Make libnfs compile.
 1.3 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.2 07-Aug-2007  pooka branches: 1.2.2; 1.2.4; 1.2.8; 1.2.14; 1.2.30; 1.2.34; 1.2.36; 1.2.38; 1.2.40;
more bsd.own.mk inclusion
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:06 +0000
 1.2.40.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.2.40.1 19-Oct-2008  haad Sync with HEAD.
 1.2.38.1 31-Jul-2008  simonb Sync with head.
 1.2.36.2 10-Oct-2008  skrll Sync with HEAD.
 1.2.36.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.2.34.2 11-Mar-2010  yamt sync with head
 1.2.34.1 04-May-2009  yamt sync with head.
 1.2.30.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.30.1 28-Sep-2008  mjf Sync with HEAD.
 1.2.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.2.14.1 07-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:39 +0000
 1.2.8.2 03-Sep-2007  yamt sync with head.
 1.2.8.1 07-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:08 +0000
 1.2.4.2 20-Aug-2007  ad Sync with HEAD.
 1.2.4.1 07-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:20 +0000
 1.2.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.2.2.1 07-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:25 +0000
 1.7.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.9.4.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.11.38.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.11.38.1 22-Sep-2015  skrll Sync with HEAD
 1.11.20.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Mar-2010  pooka Reflect removal of fs_nfs.h and -DNFS
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.12; 1.1.18; 1.1.22;
Make libnfs compile.
 1.1.22.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.18.3 11-Mar-2010  yamt sync with head
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 06-Oct-2008  yamt file fs_nfs.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.12.1 06-Oct-2008  mjf file fs_nfs.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file fs_nfs.h was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file fs_nfs.h was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2 01-Jan-2009  pooka Purge multiple kernel opt files.
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Make libnfs compile.
 1.1.6.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file opt_compat_netbsd.h was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file opt_compat_netbsd.h was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2 01-Jan-2009  pooka Purge multiple kernel opt files.
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Make libnfs compile.
 1.1.6.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file opt_ddb.h was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file opt_ddb.h was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2 21-Aug-2015  pooka kill now-unnecessary empty opt files (_KERNEL_OPT'ed probably eons ago)
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.12; 1.1.18; 1.1.46; 1.1.66;
Make libnfs compile.
 1.1.66.1 22-Sep-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 06-Oct-2008  yamt file opt_nfs.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.12.1 06-Oct-2008  mjf file opt_nfs.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file opt_nfs.h was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file opt_nfs.h was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2 21-Aug-2015  pooka kill now-unnecessary empty opt files (_KERNEL_OPT'ed probably eons ago)
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.12; 1.1.18; 1.1.46; 1.1.66;
Make libnfs compile.
 1.1.66.1 22-Sep-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 06-Oct-2008  yamt file opt_nfs_boot.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.12.1 06-Oct-2008  mjf file opt_nfs_boot.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file opt_nfs_boot.h was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file opt_nfs_boot.h was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2 21-Aug-2015  pooka kill now-unnecessary empty opt files (_KERNEL_OPT'ed probably eons ago)
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.12; 1.1.18; 1.1.46; 1.1.66;
Make libnfs compile.
 1.1.66.1 22-Sep-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 06-Oct-2008  yamt file opt_nfsserver.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.12.1 06-Oct-2008  mjf file opt_nfsserver.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file opt_nfsserver.h was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file opt_nfsserver.h was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2 21-Aug-2015  pooka kill now-unnecessary empty opt files (_KERNEL_OPT'ed probably eons ago)
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.12; 1.1.18; 1.1.46; 1.1.66;
Make libnfs compile.
 1.1.66.1 22-Sep-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 06-Oct-2008  yamt file opt_tftproot.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.12.1 06-Oct-2008  mjf file opt_tftproot.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file opt_tftproot.h was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file opt_tftproot.h was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2 21-Aug-2015  pooka kill now-unnecessary empty opt files (_KERNEL_OPT'ed probably eons ago)
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.12; 1.1.18; 1.1.46; 1.1.66;
Make libnfs compile.
 1.1.66.1 22-Sep-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 06-Oct-2008  yamt file opt_uvmhist.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.12.1 06-Oct-2008  mjf file opt_uvmhist.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file opt_uvmhist.h was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file opt_uvmhist.h was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.3 29-Dec-2008  pooka * make features match those of the nfs module just to have them in-sync
* remove stubs.c since all are now provided by rumpnet
 1.2 18-Dec-2008  pooka __KERNEL_RCSID
 1.1 15-Oct-2008  pooka branches: 1.1.2; 1.1.4;
nfs_boot calls some networking stack routines directly. Since rump
will not invoke nfs_boot in the foreseeable future, provide those
routines as stubs in case sockin is used instead of the real
networking stack.
 1.1.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.2.2 19-Oct-2008  haad Sync with HEAD.
 1.1.2.1 15-Oct-2008  haad file stubs.c was added on branch haad-dm on 2008-10-19 22:18:05 +0000
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 02-Mar-2010  pooka branches: 1.3.20; 1.3.38;
Reflect removal of fs_nfs.h and -DNFS
 1.2 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 27-Nov-2008  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add nfs server rump library.
(not descended into on purpose)
 1.1.12.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.10.3 11-Mar-2010  yamt sync with head
 1.1.10.2 04-May-2009  yamt sync with head.
 1.1.10.1 27-Nov-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.6.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.6.1 27-Nov-2008  skrll file Makefile was added on branch nick-hppapmap on 2009-01-19 13:20:21 +0000
 1.1.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.4.1 27-Nov-2008  mjf file Makefile was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.3.38.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.20.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 27-Nov-2008  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.32; 1.1.50;
Add nfs server rump library.
(not descended into on purpose)
 1.1.50.1 06-Apr-2015  skrll Sync with HEAD
 1.1.32.1 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 04-May-2009  yamt sync with head.
 1.1.10.1 27-Nov-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.6.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.6.1 27-Nov-2008  skrll file shlib_version was added on branch nick-hppapmap on 2009-01-19 13:20:21 +0000
 1.1.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.4.1 27-Nov-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 26-May-2011  joerg branches: 1.3.14; 1.3.32;
Default to -Wno-sign-compare -Wno-pointer-sign for clang.
Push -Wno-array-bounds down to the cases that depend on it.
Selectively disable warnings for 3rd party software or non-trivial
issues to be reviewed later to get clang -Werror to build most of the
tree.
 1.2 16-Feb-2010  pooka branches: 1.2.2; 1.2.4;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 18-Jul-2009  reinoud branches: 1.1.2; 1.1.4; 1.1.6;
Import read-only part of the NiLFS (v2) implementation for NetBSD. It has been
tested with a DEBUG+DIAGNOSTIC+LOCKDEBUG kernel. To summerise NiLFS, i'll
repeat my posting to tech-kern here:

NiLFS stands for New implementation of Logging File System; LFS done
right they claim :) It is at version 2 now and is being developed by NTT, the
Japanese telecom company and recently put into the linux source tree. See
http://www.nilfs.org. The on-disc format is not completely frozen and i expect
at least one minor revision to come in time.

The benefits of NiLFS are build-in fine-grained checkpointing, persistent
snapshots, multiple mounts and very large file and media support. Every
checkpoint can be transformed into a snapshot and v.v. It is said to perform
very well on flash media since it is not overwriting pieces apart from a
incidental update of the superblock, but that might change. It is accompanied
by a cleaner to clean up the segments and recover lost space.

My work is not a port of the linux code; its a new implementation. Porting the
code would be more work since its very linux oriented and never written to be
ported outside linux. The goal is to be fully interchangable. The code is non
intrusive to other parts of the kernel. It is also very light-weight.

The current state of the code is read-only access to both clean and dirty
NiLFS partitions. On mounting a dirty partition it rolls forward the log to
the last checkpoint. Full read-write support is however planned!

Just as the linux code, mount_nilfs allows for the `head' to be mounted
read/write and allows multiple read-only snapshots/checkpoint mounts next to
it.

By allowing the RW mount at a different snapshot for read-write it should be
possible eventually to revert back to a previous state; i.e. try to upgrade a
system and being able to revert to the exact state prior to the upgrade.

Compared to other FS's its pretty light-weight, suitable for embedded use and
on flash media. The read-only code is currently 17kb object code on
NetBSD/i386. I doubt the read-write code will surpass the 50 or 60. Compared
this to FFS being 156kb, UDF being 84 kb and NFS being 130kb. Run-time memory
usage is most likely not very different from other uses though maybe a bit
higher than FFS.
 1.1.6.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.4.3 11-Mar-2010  yamt sync with head
 1.1.4.2 19-Aug-2009  yamt sync with head.
 1.1.4.1 18-Jul-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-08-19 18:48:27 +0000
 1.1.2.2 23-Jul-2009  jym Sync with HEAD.
 1.1.2.1 18-Jul-2009  jym file Makefile was added on branch jym-xensuspend on 2009-07-23 23:32:53 +0000
 1.2.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.2.1 31-May-2011  rmind sync with head
 1.3.32.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.14.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 18-Jul-2009  reinoud branches: 1.1.2; 1.1.4; 1.1.26; 1.1.44;
Import read-only part of the NiLFS (v2) implementation for NetBSD. It has been
tested with a DEBUG+DIAGNOSTIC+LOCKDEBUG kernel. To summerise NiLFS, i'll
repeat my posting to tech-kern here:

NiLFS stands for New implementation of Logging File System; LFS done
right they claim :) It is at version 2 now and is being developed by NTT, the
Japanese telecom company and recently put into the linux source tree. See
http://www.nilfs.org. The on-disc format is not completely frozen and i expect
at least one minor revision to come in time.

The benefits of NiLFS are build-in fine-grained checkpointing, persistent
snapshots, multiple mounts and very large file and media support. Every
checkpoint can be transformed into a snapshot and v.v. It is said to perform
very well on flash media since it is not overwriting pieces apart from a
incidental update of the superblock, but that might change. It is accompanied
by a cleaner to clean up the segments and recover lost space.

My work is not a port of the linux code; its a new implementation. Porting the
code would be more work since its very linux oriented and never written to be
ported outside linux. The goal is to be fully interchangable. The code is non
intrusive to other parts of the kernel. It is also very light-weight.

The current state of the code is read-only access to both clean and dirty
NiLFS partitions. On mounting a dirty partition it rolls forward the log to
the last checkpoint. Full read-write support is however planned!

Just as the linux code, mount_nilfs allows for the `head' to be mounted
read/write and allows multiple read-only snapshots/checkpoint mounts next to
it.

By allowing the RW mount at a different snapshot for read-write it should be
possible eventually to revert back to a previous state; i.e. try to upgrade a
system and being able to revert to the exact state prior to the upgrade.

Compared to other FS's its pretty light-weight, suitable for embedded use and
on flash media. The read-only code is currently 17kb object code on
NetBSD/i386. I doubt the read-write code will surpass the 50 or 60. Compared
this to FFS being 156kb, UDF being 84 kb and NFS being 130kb. Run-time memory
usage is most likely not very different from other uses though maybe a bit
higher than FFS.
 1.1.44.1 06-Apr-2015  skrll Sync with HEAD
 1.1.26.1 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 19-Aug-2009  yamt sync with head.
 1.1.4.1 18-Jul-2009  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-08-19 18:48:27 +0000
 1.1.2.2 23-Jul-2009  jym Sync with HEAD.
 1.1.2.1 18-Jul-2009  jym file shlib_version was added on branch jym-xensuspend on 2009-07-23 23:32:53 +0000
 1.1 16-May-2020  christos PR/55102: Kamil Rytarowski: Duplicate fifo_vnodeop_entries,
fifo_vnodeop_opv_desc symbols.

Missed adding those in previous
 1.1 16-May-2020  christos PR/55102: Kamil Rytarowski: Duplicate fifo_vnodeop_entries,
fifo_vnodeop_opv_desc symbols.

Missed adding those in previous
 1.7 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.6 16-Feb-2010  pooka branches: 1.6.20; 1.6.38;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.5 16-Feb-2010  pooka remove -D__NetBSD__ (it's done globally now)
 1.4 29-Jul-2008  pooka branches: 1.4.14;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.3 19-Aug-2007  pooka branches: 1.3.2; 1.3.6; 1.3.12; 1.3.28; 1.3.32; 1.3.34; 1.3.36; 1.3.38;
always define __NetBSD__
 1.2 07-Aug-2007  pooka branches: 1.2.2;
more bsd.own.mk inclusion
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:06 +0000
 1.2.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.2.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.2.2.1 07-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:25 +0000
 1.3.38.1 19-Oct-2008  haad Sync with HEAD.
 1.3.36.1 31-Jul-2008  simonb Sync with head.
 1.3.34.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.3.32.2 11-Mar-2010  yamt sync with head
 1.3.32.1 04-May-2009  yamt sync with head.
 1.3.28.1 28-Sep-2008  mjf Sync with HEAD.
 1.3.12.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.3.12.1 19-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:39 +0000
 1.3.6.2 03-Sep-2007  yamt sync with head.
 1.3.6.1 19-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:09 +0000
 1.3.2.3 12-Oct-2007  ad Fix merge errors.
 1.3.2.2 20-Aug-2007  ad Sync with HEAD.
 1.3.2.1 19-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:20 +0000
 1.4.14.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.6.38.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.6.20.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:27 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 26-May-2011  joerg branches: 1.2.14; 1.2.32;
Default to -Wno-sign-compare -Wno-pointer-sign for clang.
Push -Wno-array-bounds down to the cases that depend on it.
Selectively disable warnings for 3rd party software or non-trivial
issues to be reviewed later to get clang -Werror to build most of the
tree.
 1.1 05-Dec-2010  pooka branches: 1.1.2; 1.1.6;
Fix RUMPFSLIBS etc. As collateral, rename nullfs/umapfs to match
the vfsname, i.e. to "null" and "umap".
 1.1.6.3 31-May-2011  rmind sync with head
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 05-Dec-2010  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:10 +0000
 1.1.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.32.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.14.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 05-Dec-2010  pooka branches: 1.1.6; 1.1.20; 1.1.38;
Fix RUMPFSLIBS etc. As collateral, rename nullfs/umapfs to match
the vfsname, i.e. to "null" and "umap".
 1.1.38.1 06-Apr-2015  skrll Sync with HEAD
 1.1.20.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 05-Dec-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:10 +0000
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 14-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
ptyfs rump component
 1.1.42.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 14-Jun-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-08-17 06:47:56 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 14-Jun-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:04 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 14-Jun-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-07-03 01:20:01 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 14-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
ptyfs rump component
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 14-Jun-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-08-17 06:47:56 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 14-Jun-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:04 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 14-Jun-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-07-03 01:20:01 +0000
 1.10 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.9 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.8 13-Mar-2014  pooka branches: 1.8.6;
rename component.c -> syspuffs_component.c
 1.7 06-Jul-2010  pooka branches: 1.7.8; 1.7.18; 1.7.22;
remember to add the new file to the build
 1.6 30-Jun-2010  pooka Make putter its own component: rumpdev_putter. It was coupled in
with rumpfs_puffs for prehistoric reasons which are no longer valid
(namely, only fs components existed back then and there was no /dev
support in rump fs namespace).
 1.5 30-Jun-2010  pooka add component constructor to create /dev/puffs -> putter symlink
 1.4 14-Oct-2009  pooka branches: 1.4.2; 1.4.4;
Adjust rump sources for external/internal interfaces.
No functional change.
 1.3 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.2 02-Jan-2008  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.12; 1.2.16; 1.2.18; 1.2.20; 1.2.22;
fix build for OBJDIR case. noticed by plenty
 1.1 02-Jan-2008  pooka branches: 1.1.2;
Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.1.2.3 08-Jan-2008  bouyer Sync with HEAD
 1.1.2.2 02-Jan-2008  bouyer Sync with HEAD
 1.1.2.1 02-Jan-2008  bouyer file Makefile was added on branch bouyer-xeni386 on 2008-01-02 21:57:48 +0000
 1.2.22.1 19-Oct-2008  haad Sync with HEAD.
 1.2.20.1 31-Jul-2008  simonb Sync with head.
 1.2.18.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.2.16.3 11-Aug-2010  yamt sync with head.
 1.2.16.2 11-Mar-2010  yamt sync with head
 1.2.16.1 04-May-2009  yamt sync with head.
 1.2.12.1 28-Sep-2008  mjf Sync with HEAD.
 1.2.6.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.6.1 02-Jan-2008  mjf file Makefile was added on branch mjf-devfs on 2008-02-18 21:07:19 +0000
 1.2.4.2 21-Jan-2008  yamt sync with head
 1.2.4.1 02-Jan-2008  yamt file Makefile was added on branch yamt-lazymbuf on 2008-01-21 09:47:40 +0000
 1.2.2.2 09-Jan-2008  matt sync with HEAD
 1.2.2.1 02-Jan-2008  matt file Makefile was added on branch matt-armv6 on 2008-01-09 01:57:57 +0000
 1.4.4.2 05-Mar-2011  rmind sync with head
 1.4.4.1 03-Jul-2010  rmind sync with head
 1.4.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.7.22.1 18-May-2014  rmind sync with head
 1.7.18.2 03-Dec-2017  jdolecek update from HEAD
 1.7.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.6.2 19-Mar-2016  skrll Sync with HEAD
 1.8.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2 13-Mar-2014  pooka rename component.c -> syspuffs_component.c
 1.1 30-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24; 1.1.28;
add component constructor to create /dev/puffs -> putter symlink
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 30-Jun-2010  uebayasi file component.c was added on branch uebayasi-xip on 2010-08-17 06:47:57 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 30-Jun-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:04 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 30-Jun-2010  rmind file component.c was added on branch rmind-uvmplock on 2010-07-03 01:20:01 +0000
 1.16 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.15 10-May-2015  christos PR/975220: Check return of kthread_create
 1.14 10-May-2015  christos CID 274829: Check error from fd_getfile to avoid NULL deref immediately
after.
 1.13 30-Apr-2013  pooka branches: 1.13.12;
Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.12 29-Apr-2013  pooka Reduce hypercalls related to reading to essentially an amalgamation
of readv and preadv. ditto for writing. Hypercalls are so seldomly
used that it doesn't justify 3x the calls for syntactic sugar.
 1.11 14-Oct-2009  pooka branches: 1.11.12; 1.11.22;
"rumppriv" goes back to "rump" per internal interface naming change.
 1.10 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.9 08-Jan-2009  pooka Put syspuffs_glueinit in the rump kernel namespace.
 1.8 07-Oct-2008  pooka branches: 1.8.2;
check rump_init() return value
 1.7 05-Sep-2008  pooka fix broken break (oh the irony)
 1.6 02-Sep-2008  pooka Make syspuffs mount code supply mount_syspuffs_parseargs() like
the other mount binaries do. Now syspuffs can be used to run all
puffs file systems as utilities. This includes fuse file systems
and becomes interesting with the fs-utils project. We can now do
e.g. this:

ReFUSE ntfs-3g:
golem> echo hello | fsu_write/fsu_write ntfs-3g puffs ~/img/ntfs.img dafile
golem> fsu_cat/fsu_cat ntfs-3g puffs ~/img/ntfs.img dafile
hello
golem>

puffs sysctlfs:
golem> fsu_ls/fsu_ls mount_sysctlfs puffs sysctl -l ddb
total 0
-r-xr-xr-x 1 pooka users 1 Sep 2 22:11 commandonenter
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 fromconsole
-r-xr-xr-x 1 pooka users 3 Sep 2 22:11 lines
-r-xr-xr-x 1 pooka users 8 Sep 2 22:11 maxoff
-r-xr-xr-x 1 pooka users 3 Sep 2 22:11 maxwidth
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 onpanic
-r-xr-xr-x 1 pooka users 3 Sep 2 22:11 radix
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 tabstops
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 tee_msgbuf

Same works for psshfs etcetc.

In other words, this provides total integration for "normal"
in-kernel file systems and puffs/fuse file systems on the ukfs
library level.

Note: implementation is still "first stab" and the fs-utils usage
will no doubt change.
 1.5 15-Aug-2008  pooka Since putter wants complete frames, make sure we can hand them to it.
 1.4 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.3 21-Mar-2008  ad branches: 1.3.4; 1.3.6; 1.3.8; 1.3.10;
Catch up with descriptor handling changes. See kern_descrip.c revision
1.173 for details.
 1.2 27-Jan-2008  pooka branches: 1.2.2; 1.2.8;
Use vfs_subr.c from sys/kern. This brings differences in the vnode
life cycle between rump and a real kernel to a minimum.
 1.1 02-Jan-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.1.6.4 24-Mar-2008  yamt sync with head.
 1.1.6.3 04-Feb-2008  yamt sync with head.
 1.1.6.2 21-Jan-2008  yamt sync with head
 1.1.6.1 02-Jan-2008  yamt file puffs_rumpglue.c was added on branch yamt-lazymbuf on 2008-01-21 09:47:40 +0000
 1.1.4.3 23-Mar-2008  matt sync with HEAD
 1.1.4.2 09-Jan-2008  matt sync with HEAD
 1.1.4.1 02-Jan-2008  matt file puffs_rumpglue.c was added on branch matt-armv6 on 2008-01-09 01:57:57 +0000
 1.1.2.2 02-Jan-2008  bouyer Sync with HEAD
 1.1.2.1 02-Jan-2008  bouyer file puffs_rumpglue.c was added on branch bouyer-xeni386 on 2008-01-02 21:57:49 +0000
 1.2.8.3 17-Jan-2009  mjf Sync with HEAD.
 1.2.8.2 28-Sep-2008  mjf Sync with HEAD.
 1.2.8.1 03-Apr-2008  mjf Sync with HEAD.
 1.2.2.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.2.1 27-Jan-2008  mjf file puffs_rumpglue.c was added on branch mjf-devfs on 2008-02-18 21:07:19 +0000
 1.3.10.1 19-Oct-2008  haad Sync with HEAD.
 1.3.8.1 31-Jul-2008  simonb Sync with head.
 1.3.6.2 10-Oct-2008  skrll Sync with HEAD.
 1.3.6.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.3.4.2 11-Mar-2010  yamt sync with head
 1.3.4.1 04-May-2009  yamt sync with head.
 1.8.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.11.22.2 03-Dec-2017  jdolecek update from HEAD
 1.11.22.1 23-Jun-2013  tls resync from head
 1.11.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.12.2 19-Mar-2016  skrll Sync with HEAD
 1.13.12.1 06-Jun-2015  skrll Sync with HEAD
 1.1 02-Jan-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8;
Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.1.8.2 18-Feb-2008  mjf Sync with HEAD.
 1.1.8.1 02-Jan-2008  mjf file puffs_rumpglue.h was added on branch mjf-devfs on 2008-02-18 21:07:19 +0000
 1.1.6.2 21-Jan-2008  yamt sync with head
 1.1.6.1 02-Jan-2008  yamt file puffs_rumpglue.h was added on branch yamt-lazymbuf on 2008-01-21 09:47:40 +0000
 1.1.4.2 09-Jan-2008  matt sync with HEAD
 1.1.4.1 02-Jan-2008  matt file puffs_rumpglue.h was added on branch matt-armv6 on 2008-01-09 01:57:58 +0000
 1.1.2.2 02-Jan-2008  bouyer Sync with HEAD
 1.1.2.1 02-Jan-2008  bouyer file puffs_rumpglue.h was added on branch bouyer-xeni386 on 2008-01-02 21:57:49 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:28 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> syspuffs_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file syspuffs_component.c was added on branch tls-maxphys on 2014-08-20 00:04:39 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file syspuffs_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file syspuffs_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:17 +0000
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 04-Sep-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.46; 1.1.66;
Add rump support for sysvbfs.
 1.1.66.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 04-Sep-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:28 +0000
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 04-Sep-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.1.4.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.4.1 04-Sep-2008  mjf file Makefile was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.2.1 04-Sep-2008  wrstuden file Makefile was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 04-Sep-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.46; 1.1.66;
Add rump support for sysvbfs.
 1.1.66.1 06-Apr-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 04-Sep-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:28 +0000
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 04-Sep-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.1.4.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.4.1 04-Sep-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:02 +0000
 1.1.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.2.1 04-Sep-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.6 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.5 09-May-2012  riastradh branches: 1.5.2; 1.5.16;
Adapt tmpfs_rename to use genfs_rename.
 1.4 22-Jun-2010  rmind branches: 1.4.8; 1.4.12;
Replace tmpfs_pool custom allocator code with a simpler layer for memory
accounting. Use wired memory (which can be limited) for meta-data, and
kmem(9) for string allocations.

Close PR/31944. Fix PR/38361 while here. OK ad@.
 1.3 29-Jul-2008  pooka branches: 1.3.14; 1.3.16;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.2 07-Aug-2007  pooka branches: 1.2.2; 1.2.4; 1.2.8; 1.2.14; 1.2.30; 1.2.34; 1.2.36; 1.2.38; 1.2.40;
more bsd.own.mk inclusion
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:06 +0000
 1.2.40.1 19-Oct-2008  haad Sync with HEAD.
 1.2.38.1 31-Jul-2008  simonb Sync with head.
 1.2.36.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.2.34.2 11-Aug-2010  yamt sync with head.
 1.2.34.1 04-May-2009  yamt sync with head.
 1.2.30.1 28-Sep-2008  mjf Sync with HEAD.
 1.2.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.2.14.1 07-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:42 +0000
 1.2.8.2 03-Sep-2007  yamt sync with head.
 1.2.8.1 07-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:13 +0000
 1.2.4.2 20-Aug-2007  ad Sync with HEAD.
 1.2.4.1 07-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:21 +0000
 1.2.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.2.2.1 07-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:29 +0000
 1.3.16.1 03-Jul-2010  rmind sync with head
 1.3.14.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.4.12.1 02-Jun-2012  mrg sync to latest -current.
 1.4.8.1 23-May-2012  yamt sync with head.
 1.5.16.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.5.2.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:28 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:03 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.13 03-Jun-2023  lukem adapt to ${CC_WNO_ADDRESS_OF_PACKED_MEMBER}

Simplify CWARNFLAGS to use ${CC_WNO_ADDRESS_OF_PACKED_MEMBER}
which works for both clang and gcc, and remove compiler-specific
equivalents.
 1.12 03-Jun-2023  lukem bsd.own.mk: rename to CC_WNO_ADDRESS_OF_PACKED_MEMBER

Provide a single variable
CC_WNO_ADDRESS_OF_PACKED_MEMBER
with options for both clang and gcc, to replace
CLANG_NO_ADDR_OF_PACKED_MEMBER
CC_NO_ADDR_OF_PACKED_MEMBER
GCC_NO_ADDR_OF_PACKED_MEMBER

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.11 06-Sep-2020  mrg add support for new GCC 9 warnings that may be too much to fix
right now. new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree. mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it. (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.) clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
 1.10 11-Jan-2017  joerg Disable a couple of warnings until further investigation.
 1.9 19-Oct-2015  pooka branches: 1.9.2;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.8 10-Jul-2013  reinoud branches: 1.8.8;
Oops forgot the rump addition of udf_rename.c
 1.7 26-May-2011  joerg branches: 1.7.4; 1.7.14; 1.7.18;
Default to -Wno-sign-compare -Wno-pointer-sign for clang.
Push -Wno-array-bounds down to the cases that depend on it.
Selectively disable warnings for 3rd party software or non-trivial
issues to be reviewed later to get clang -Werror to build most of the
tree.
 1.6 16-Feb-2010  pooka branches: 1.6.2; 1.6.4;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.5 17-Nov-2008  pooka branches: 1.5.6;
Tune CFLAGS to a consistent default.
 1.4 28-Sep-2008  reinoud branches: 1.4.2;
Remove the not anymore used UDF_READWRITE flag.
 1.3 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.2 14-May-2008  reinoud branches: 1.2.2; 1.2.4;
Make rump compile UDF correctly. Note that it won't work though since rump
needs to be compiled with thread support.
 1.1 14-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.30; 1.1.32; 1.1.34; 1.1.36;
udf support
 1.1.36.3 10-Oct-2008  skrll Sync with HEAD.
 1.1.36.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.36.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.1.34.3 11-Mar-2010  yamt sync with head
 1.1.34.2 04-May-2009  yamt sync with head.
 1.1.34.1 16-May-2008  yamt sync with head.
 1.1.32.1 18-May-2008  yamt sync with head.
 1.1.30.4 17-Jan-2009  mjf Sync with HEAD.
 1.1.30.3 05-Oct-2008  mjf Sync with HEAD.
 1.1.30.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.30.1 02-Jun-2008  mjf Sync with HEAD.
 1.1.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.1.14.1 14-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:43 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 14-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:14 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 14-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:22 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 14-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:29 +0000
 1.2.4.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.2.4.1 19-Oct-2008  haad Sync with HEAD.
 1.2.2.1 31-Jul-2008  simonb Sync with head.
 1.4.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.5.6.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.6.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.6.2.1 31-May-2011  rmind sync with head
 1.7.18.1 28-Aug-2013  rmind sync with head
 1.7.14.2 03-Dec-2017  jdolecek update from HEAD
 1.7.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.8.2 05-Feb-2017  skrll Sync with HEAD
 1.8.8.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.9.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.20; 1.1.48; 1.1.68;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.1.68.1 06-Apr-2015  skrll Sync with HEAD
 1.1.48.1 03-Dec-2017  jdolecek update from HEAD
 1.1.20.2 04-May-2009  yamt sync with head.
 1.1.20.1 29-Jul-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:28 +0000
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 29-Jul-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 29-Jul-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-09-28 10:41:03 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 29-Jul-2008  wrstuden file shlib_version was added on branch wrstuden-revivesa on 2008-09-18 04:37:03 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 29-Jul-2008  simonb file shlib_version was added on branch simonb-wapbl on 2008-07-31 04:51:04 +0000
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 26-May-2011  joerg branches: 1.2.14; 1.2.32;
Default to -Wno-sign-compare -Wno-pointer-sign for clang.
Push -Wno-array-bounds down to the cases that depend on it.
Selectively disable warnings for 3rd party software or non-trivial
issues to be reviewed later to get clang -Werror to build most of the
tree.
 1.1 05-Dec-2010  pooka branches: 1.1.2; 1.1.6;
Fix RUMPFSLIBS etc. As collateral, rename nullfs/umapfs to match
the vfsname, i.e. to "null" and "umap".
 1.1.6.3 31-May-2011  rmind sync with head
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 05-Dec-2010  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:11 +0000
 1.1.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.32.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.14.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 05-Dec-2010  pooka branches: 1.1.6; 1.1.20; 1.1.38;
Fix RUMPFSLIBS etc. As collateral, rename nullfs/umapfs to match
the vfsname, i.e. to "null" and "umap".
 1.1.38.1 06-Apr-2015  skrll Sync with HEAD
 1.1.20.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 05-Dec-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:11 +0000
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 29-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
Support unionfs (and layervfs, which is required for unionfs).
 1.1.42.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 29-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:05 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 29-Mar-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-05-30 05:18:06 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 29-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:29 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 29-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
Support unionfs (and layervfs, which is required for unionfs).
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 29-Mar-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:05 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 29-Mar-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-05-30 05:18:06 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 29-Mar-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:29 +0000
 1.4 03-Jun-2023  lukem bsd.own.mk: rename to CC_WNO_ADDRESS_OF_PACKED_MEMBER

Provide a single variable
CC_WNO_ADDRESS_OF_PACKED_MEMBER
with options for both clang and gcc, to replace
CLANG_NO_ADDR_OF_PACKED_MEMBER
CC_NO_ADDR_OF_PACKED_MEMBER
GCC_NO_ADDR_OF_PACKED_MEMBER

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.3 06-Sep-2020  mrg add support for new GCC 9 warnings that may be too much to fix
right now. new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree. mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it. (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.) clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 24-Jul-2011  uch branches: 1.1.12; 1.1.30;
v7fs rump support
 1.1.30.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.12.1 03-Dec-2017  jdolecek update from HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 24-Jul-2011  uch branches: 1.1.12; 1.1.30;
v7fs rump support
 1.1.30.1 06-Apr-2015  skrll Sync with HEAD
 1.1.12.1 03-Dec-2017  jdolecek update from HEAD
 1.9 03-Jun-2023  lukem bsd.own.mk: rename to CC_WNO_ADDRESS_OF_PACKED_MEMBER

Provide a single variable
CC_WNO_ADDRESS_OF_PACKED_MEMBER
with options for both clang and gcc, to replace
CLANG_NO_ADDR_OF_PACKED_MEMBER
CC_NO_ADDR_OF_PACKED_MEMBER
GCC_NO_ADDR_OF_PACKED_MEMBER

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.8 15-Apr-2021  christos fix reversed comment
 1.7 06-Sep-2020  mrg branches: 1.7.4;
add support for new GCC 9 warnings that may be too much to fix
right now. new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree. mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it. (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.) clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
 1.6 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.5 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.4 13-Mar-2014  pooka branches: 1.4.6;
rename component.c -> zfs_component.c
 1.3 10-Mar-2011  pooka branches: 1.3.4; 1.3.6; 1.3.16; 1.3.20;
autocreate /dev/zfs. requested by riz
 1.2 21-Jan-2011  pooka branches: 1.2.2;
Since "physmem" is largely unused except for zfs wanting to know
if it has enough memory available, just pick a number which makes
zfs happy.

We *could* use a MIN() of available host mem and rump_memlimit,
though ...
 1.1 18-Jan-2011  haad branches: 1.1.2;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.1.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.2.2.3 21-Apr-2011  rmind sync with head
 1.2.2.2 05-Mar-2011  rmind sync with head
 1.2.2.1 21-Jan-2011  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:11 +0000
 1.3.20.1 18-May-2014  rmind sync with head
 1.3.16.2 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.2 06-Jun-2011  jruoho Sync with HEAD.
 1.3.4.1 10-Mar-2011  jruoho file Makefile was added on branch jruoho-x86intr on 2011-06-06 09:10:06 +0000
 1.4.6.2 19-Mar-2016  skrll Sync with HEAD
 1.4.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.7.4.1 17-Apr-2021  thorpej Sync with HEAD.
 1.7 13-Mar-2014  pooka rename component.c -> zfs_component.c
 1.6 10-Mar-2013  christos branches: 1.6.6;
Now that the auto-loading zfs bug has been fixed, the loading failed because
the devsw node was busied here. Since we load the devsw only for the purpose
of creating the device node in our virtual filesystem, detach it after we
are done so that the real module can reload it.
 1.5 10-Mar-2011  wiz branches: 1.5.2; 1.5.6; 1.5.8; 1.5.18;
When panicing, at least tell the _real_ reason.
 1.4 10-Mar-2011  pooka autocreate /dev/zfs. requested by riz
 1.3 21-Jan-2011  pooka no longer used
 1.2 21-Jan-2011  pooka don't perform tasks already done by zfs_modcmd
 1.1 18-Jan-2011  haad branches: 1.1.2;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.1.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.5.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.18.1 23-Jun-2013  tls resync from head
 1.5.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.6.2 06-Jun-2011  jruoho Sync with HEAD.
 1.5.6.1 10-Mar-2011  jruoho file component.c was added on branch jruoho-x86intr on 2011-06-06 09:10:06 +0000
 1.5.2.2 21-Apr-2011  rmind sync with head
 1.5.2.1 10-Mar-2011  rmind file component.c was added on branch rmind-uvmplock on 2011-04-21 01:42:16 +0000
 1.6.6.1 18-May-2014  rmind sync with head
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 18-Jan-2011  haad branches: 1.1.4; 1.1.8; 1.1.20; 1.1.38;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.1.38.1 06-Apr-2015  skrll Sync with HEAD
 1.1.20.1 03-Dec-2017  jdolecek update from HEAD
 1.1.8.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.8.1 18-Jan-2011  jruoho file shlib_version was added on branch jruoho-x86intr on 2011-06-06 09:10:06 +0000
 1.1.4.2 05-Mar-2011  rmind sync with head
 1.1.4.1 18-Jan-2011  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:11 +0000
 1.3 07-May-2019  hannken Cleanup modules "solaris" and "zfs":

- Defer spa_config_load() until root is mounted.
- Restore the config path to "/etc/zfs/zpool.cache".
- Module "zfs" is type MODULE_CLASS_VFS and no longer depends on "rootvnode".
- Module "solaris" no longer depends on "mp_online".
- Fix rump component registration to not detach "/dev/zfs" if
it didn't attach it.
 1.2 26-Jan-2016  pooka branches: 1.2.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> zfs_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file zfs_component.c was added on branch tls-maxphys on 2014-08-20 00:04:39 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file zfs_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:13 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file zfs_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:17 +0000
 1.2.18.1 10-Jun-2019  christos Sync with HEAD
 1.1 17-Nov-2008  pooka branches: 1.1.4; 1.1.6; 1.1.8; 1.1.12;
Descend into include/rump and install headers.
 1.1.12.2 04-May-2009  yamt sync with head.
 1.1.12.1 17-Nov-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:28 +0000
 1.1.8.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.8.1 17-Nov-2008  skrll file Makefile was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.1.6.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.6.1 17-Nov-2008  mjf file Makefile was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.1.4.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.4.1 17-Nov-2008  haad file Makefile was added on branch haad-dm on 2008-12-13 01:15:34 +0000
 1.2 14-Dec-2008  pooka If the arch uses __BSWAP_RENAME, provide non-namespaced kernel
symbols which just call the libc symbols. Allows to get rid of
rump machine/bswap.h.

XXX:
1) this is unlikely to work on non-NetBSD
==>
2) should look into including libkern in librump
 1.1 08-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.30; 1.1.34; 1.1.42;
Provide rumpmachine bswap.h, which makes bswapxx() call rumpuser
directly instead of relying on a symbol in rumpkern. I would like
to make it call the libc symbol directly, but I don't currently know
how to make it do that MI.

Makes hfs work (on i386), as it avoids endless recursion in bswap64().
Thanks to dillo for the image!
 1.1.42.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.34.1 04-May-2009  yamt sync with head.
 1.1.30.1 17-Jan-2009  mjf Sync with HEAD.
 1.1.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.1.14.1 08-Aug-2007  joerg file bswap.h was added on branch jmcneill-pm on 2007-11-02 12:43:47 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 08-Aug-2007  yamt file bswap.h was added on branch yamt-lazymbuf on 2007-09-03 14:45:20 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 08-Aug-2007  ad file bswap.h was added on branch vmlocking on 2007-08-20 22:07:24 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 08-Aug-2007  skrll file bswap.h was added on branch nick-csl-alignment on 2007-08-15 13:50:33 +0000
 1.3 15-Jul-2011  dyoung Use <sys/bus.h> not <machine/bus.h>.
 1.2 13-Feb-2010  pooka branches: 1.2.2; 1.2.6;
Add missing public members of bus_dmamap_t per interface specification
(nothing uses them here for now, so untested).
 1.1 09-Feb-2010  pooka Add a bus.h blanket header which forces definition of bus space /
bus dma interfaces as functions and therefore makes it possible to
use rump on archs which suffer from macro maladies, i.e. everything
except i386 and amd64.

(build-tested on sparc64 and vax, which are usually the two extremes
of weirdness in these cases)
 1.2.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.6.1 13-Feb-2010  uebayasi file bus.h was added on branch uebayasi-xip on 2010-04-30 14:44:29 +0000
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 13-Feb-2010  yamt file bus.h was added on branch yamt-nfs-mp on 2010-03-11 15:04:37 +0000
 1.24 04-Dec-2019  riastradh Fix rump definition of cpu_number().
 1.23 01-Dec-2019  ad Add ci_onproc.
 1.22 22-Apr-2015  pooka branches: 1.22.18;
Apparently not all ports define struct clockframe in cpu.h, so we cannot
provide our definition that way. Instead, generate the struct clockframe
passed to hardclock() in MD code.
 1.21 22-Apr-2015  pooka emulgate clockframe
 1.20 15-Mar-2014  pooka branches: 1.20.6;
Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.19 10-Mar-2014  pooka update comments
 1.18 22-Jan-2014  christos Kludges like to procreate. Add alpha cpu_frequency() kludge.
 1.17 30-Oct-2013  mrg mark rump's CPU_INFO_ITERATOR as being __unused.
 1.16 02-May-2013  pooka branches: 1.16.4;
Inform the rump kernel hypervisor of valid thread contexts so
that the implementation can allocate and release storage for them
in an optimal fashion, if necessary.
 1.15 21-Mar-2011  pooka branches: 1.15.4; 1.15.14;
Update copyright statements.

no functional change.
 1.14 04-Jan-2011  pooka branches: 1.14.2;
Add SMP support for all architectures.

tested on sparc64 by martin
 1.13 02-Dec-2010  pooka add ci_curlwp since we use it now
 1.12 15-Oct-2009  pooka branches: 1.12.4;
rump_get_curlwp() is dead
 1.11 15-Oct-2009  pooka fix previous to make sense
 1.10 15-Oct-2009  pooka adjust for new rump_cpu
 1.9 06-Jan-2009  pooka powerpc md stuff for libkern
 1.8 05-Jan-2009  pooka Assemble with _LOCORE.
 1.7 02-Jan-2009  pooka My clever hack was not enough. Disable DELAY via ifndef _RUMPKERN in
subr_prf until I manage to get all archs in line with a proper MI
signature.
 1.6 02-Jan-2009  pooka Sauce with some kludges:
* revert rev 1.68 of emul.c: delay() is hopelessly MD and needs
whipping (not the fun kind)
* #undef DELAY in cpu.h

This will hopefully fix build for all archs and give me time to
hop through our 46521 fine archs and edit the headers.
 1.5 11-Dec-2008  pooka Apparently some ports rely on cpu.h including machine/pcb.h.
 1.4 12-Oct-2008  pooka branches: 1.4.2;
Add some shameful kludges for the vax build. Eventually I'd like
to use the native kernel machine directory, so don't waste too much
effort fighting this now.
 1.3 31-Oct-2007  pooka branches: 1.3.16; 1.3.20; 1.3.26;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.2 26-Oct-2007  pooka branches: 1.2.2;
few stubs
 1.1 05-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.12; 1.1.14;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.14.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.14.1 05-Aug-2007  pooka file cpu.h was added on branch matt-mips64 on 2007-08-05 22:28:07 +0000
 1.1.12.1 13-Nov-2007  bouyer Sync with HEAD
 1.1.8.4 15-Nov-2007  yamt sync with head.
 1.1.8.3 27-Oct-2007  yamt sync with head.
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 05-Aug-2007  yamt file cpu.h was added on branch yamt-lazymbuf on 2007-09-03 14:45:21 +0000
 1.1.6.1 06-Nov-2007  matt sync with HEAD
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 05-Aug-2007  ad file cpu.h was added on branch vmlocking on 2007-08-20 22:07:24 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 05-Aug-2007  skrll file cpu.h was added on branch nick-csl-alignment on 2007-08-15 13:50:33 +0000
 1.2.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.2.2.1 26-Oct-2007  joerg file cpu.h was added on branch jmcneill-pm on 2007-10-31 23:14:14 +0000
 1.3.26.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.3.26.1 19-Oct-2008  haad Sync with HEAD.
 1.3.20.2 11-Mar-2010  yamt sync with head
 1.3.20.1 04-May-2009  yamt sync with head.
 1.3.16.1 17-Jan-2009  mjf Sync with HEAD.
 1.4.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.12.4.2 21-Apr-2011  rmind sync with head
 1.12.4.1 05-Mar-2011  rmind sync with head
 1.14.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.15.14.3 03-Dec-2017  jdolecek update from HEAD
 1.15.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.15.14.1 23-Jun-2013  tls resync from head
 1.15.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.16.4.1 18-May-2014  rmind sync with head
 1.20.6.1 06-Jun-2015  skrll Sync with HEAD
 1.22.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.3 11-Mar-2014  pooka branches: 1.3.6;
Reinstance cpu_counter.h so that we don't have to work around the
MD implications everywhere else.
 1.2 08-Dec-2008  pooka branches: 1.2.12; 1.2.18;
Remove rump cpu_counter.h in favour of the arch native one. I'm
sure there was a reason why I originally added this, but I can't
find what would break without it now. If something does pop up,
I'll fix it properly this time instead of adding silly headers.
 1.1 26-Oct-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.10; 1.1.24; 1.1.28; 1.1.34; 1.1.36;
It's non-trivial to say that "no, we don't have cpu counter on this
arch (rump)", so emulate it. But this is suboptimal. The crux of
the problem seems to be that types.h contains both information on
the machine architecture (which we want) as well as other defines
such as __HAVE_CPU_COUNTER (which we don't want).
 1.1.36.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.34.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.28.1 04-May-2009  yamt sync with head.
 1.1.24.1 17-Jan-2009  mjf Sync with HEAD.
 1.1.10.2 13-Nov-2007  bouyer Sync with HEAD
 1.1.10.1 26-Oct-2007  bouyer file cpu_counter.h was added on branch bouyer-xenamd64 on 2007-11-13 16:03:12 +0000
 1.1.8.2 06-Nov-2007  matt sync with HEAD
 1.1.8.1 26-Oct-2007  matt file cpu_counter.h was added on branch matt-armv6 on 2007-11-06 23:34:32 +0000
 1.1.4.2 28-Oct-2007  joerg Sync with HEAD.
 1.1.4.1 26-Oct-2007  joerg file cpu_counter.h was added on branch jmcneill-pm on 2007-10-28 20:11:15 +0000
 1.1.2.2 27-Oct-2007  yamt sync with head.
 1.1.2.1 26-Oct-2007  yamt file cpu_counter.h was added on branch yamt-lazymbuf on 2007-10-27 11:36:20 +0000
 1.2.18.1 18-May-2014  rmind sync with head
 1.2.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.6.1 11-Mar-2014  tls file cpu_counter.h was added on branch tls-maxphys on 2014-08-20 00:04:39 +0000
 1.23 17-Aug-2023  andvar fix typos in comments.
 1.22 19-Apr-2018  christos s/static inline/static __inline/g for consistency.
 1.21 11-Apr-2016  martin branches: 1.21.16;
Add a dummy splraiseipl()
 1.20 19-Jan-2014  martin branches: 1.20.6;
Make IPL_ values different.
This makes ni real difference for rump, but avoods
KASSERTs in common code when we try to assert
"ipl not higher as...".
Suggested by riastradh, OK: pooka.
 1.19 08-Jan-2013  skrll branches: 1.19.2;
Provide splsoftserial.

GRRR RUMP
 1.18 21-Mar-2011  pooka branches: 1.18.4; 1.18.10; 1.18.14; 1.18.16;
Update copyright statements.

no functional change.
 1.17 30-Aug-2010  pooka branches: 1.17.2;
Make IPLs not equal IPL_NONE to avoid some KASSERTs.
 1.16 06-Feb-2009  pooka branches: 1.16.4; 1.16.6;
Rip out the rwlock spl emulation code. It never did anything useful
except keep my feet warm by consuming an insane amount of cpu
cycles -- in rump our current "cpu" context is never interrupted
& we have MULTIPROCESSOR.

(itch i'm scratching: it made the networking stack 10-20% slower.
this is one of the places where fast code actually matters)
 1.15 24-Jan-2009  he Define IPL_SOFTSERIAL and provide a makeiplcookie() implementation,
so that kern/subr_pool.c can build again.

OK'ed by martin@
 1.14 05-Jan-2009  pooka Assemble with _LOCORE.
 1.13 02-Jan-2009  pooka printf needs IPL_HIGH
 1.12 26-Nov-2008  pooka Add a few symbols required by nfsd
 1.11 14-Oct-2008  pooka branches: 1.11.2;
+IPL_SOFTNET
 1.10 02-Sep-2008  pooka Add IPL_SOFTCLOCK, something required it (although I can't quite
recall what, this has been floating in my tree for a while)
 1.9 27-Jan-2008  pooka branches: 1.9.6; 1.9.10; 1.9.12; 1.9.16;
Use vfs_subr.c from sys/kern. This brings differences in the vnode
life cycle between rump and a real kernel to a minimum.
 1.8 02-Jan-2008  ad Merge vmlocking2 to head.
 1.7 03-Dec-2007  ad branches: 1.7.2; 1.7.6;
Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
 1.6 07-Nov-2007  pooka Emulate spls by using pthread rwlocks: splfoo() takes a read lock
and when doing processing in an interrupt (effectively when calling
biodone()), we take the write lock.
 1.5 07-Nov-2007  ad Define ipl_cookie_t, ipl_t.
 1.4 31-Oct-2007  pooka branches: 1.4.2; 1.4.4;
"Support" splhigh(), requested by reinoud. But the spl emulation
code needs to be actually written soon ...
 1.3 11-Sep-2007  briggs branches: 1.3.4;
Define splclock() so that this will at least compile on architectures
without _HAVE_TIMECOUNTER.
 1.2 14-Aug-2007  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8;
interrupt headers necessary for vfs_bio
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file intr.h was added on branch matt-mips64 on 2007-08-05 22:28:07 +0000
 1.2.8.7 04-Feb-2008  yamt sync with head.
 1.2.8.6 21-Jan-2008  yamt sync with head
 1.2.8.5 07-Dec-2007  yamt sync with head
 1.2.8.4 15-Nov-2007  yamt sync with head.
 1.2.8.3 27-Oct-2007  yamt sync with head.
 1.2.8.2 03-Sep-2007  yamt sync with head.
 1.2.8.1 14-Aug-2007  yamt file intr.h was added on branch yamt-lazymbuf on 2007-09-03 14:45:21 +0000
 1.2.6.4 23-Mar-2008  matt sync with HEAD
 1.2.6.3 09-Jan-2008  matt sync with HEAD
 1.2.6.2 08-Nov-2007  matt sync with -HEAD
 1.2.6.1 06-Nov-2007  matt sync with HEAD
 1.2.4.3 09-Oct-2007  ad Sync with head.
 1.2.4.2 20-Aug-2007  ad Sync with HEAD.
 1.2.4.1 14-Aug-2007  ad file intr.h was added on branch vmlocking on 2007-08-20 22:07:25 +0000
 1.2.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.2.2.1 14-Aug-2007  skrll file intr.h was added on branch nick-csl-alignment on 2007-08-15 13:50:34 +0000
 1.3.4.1 13-Nov-2007  bouyer Sync with HEAD
 1.4.4.3 18-Feb-2008  mjf Sync with HEAD.
 1.4.4.2 08-Dec-2007  mjf Sync with HEAD.
 1.4.4.1 19-Nov-2007  mjf Sync with HEAD.
 1.4.2.5 09-Dec-2007  jmcneill Sync with HEAD.
 1.4.2.4 11-Nov-2007  joerg Sync with HEAD.
 1.4.2.3 02-Nov-2007  joerg Remove the rest of the unintentional diff in sys/rump.
 1.4.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.4.2.1 31-Oct-2007  joerg file intr.h was added on branch jmcneill-pm on 2007-10-31 23:14:15 +0000
 1.7.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.7.2.1 28-Dec-2007  ad Make rump build.
 1.9.16.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.9.16.1 19-Oct-2008  haad Sync with HEAD.
 1.9.12.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.9.10.2 09-Oct-2010  yamt sync with head
 1.9.10.1 04-May-2009  yamt sync with head.
 1.9.6.2 17-Jan-2009  mjf Sync with HEAD.
 1.9.6.1 28-Sep-2008  mjf Sync with HEAD.
 1.11.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.11.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.16.6.2 21-Apr-2011  rmind sync with head
 1.16.6.1 05-Mar-2011  rmind sync with head
 1.16.4.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.17.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.18.16.1 08-Feb-2013  riz Pull up following revision(s) (requested by rmind in ticket #782):
sys/rump/include/machine/intr.h: revision 1.19
sys/kern/subr_pserialize.c: revision 1.6
sys/kern/kern_softint.c: revision 1.39
- softint_dispatch: perform pserialize(9) switchpoint when softintr processing
finishes (without blocking). Problem reported by hannken@, thanks!
- pserialize_read_enter: use splsoftserial(), not splsoftclock().
- pserialize_perform: add xcall(9) barrier as interrupts may be coalesced.
Provide splsoftserial.
GRRR RUMP
 1.18.14.3 03-Dec-2017  jdolecek update from HEAD
 1.18.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.18.14.1 25-Feb-2013  tls resync with head
 1.18.10.1 08-Feb-2013  riz Pull up following revision(s) (requested by rmind in ticket #782):
sys/rump/include/machine/intr.h: revision 1.19
sys/kern/subr_pserialize.c: revision 1.6
sys/kern/kern_softint.c: revision 1.39
- softint_dispatch: perform pserialize(9) switchpoint when softintr processing
finishes (without blocking). Problem reported by hannken@, thanks!
- pserialize_read_enter: use splsoftserial(), not splsoftclock().
- pserialize_perform: add xcall(9) barrier as interrupts may be coalesced.
Provide splsoftserial.
GRRR RUMP
 1.18.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.18.4.1 23-Jan-2013  yamt sync with head
 1.19.2.1 18-May-2014  rmind sync with head
 1.20.6.1 22-Apr-2016  skrll Sync with HEAD
 1.21.16.1 22-Apr-2018  pgoyette Sync with HEAD
 1.2 13-Dec-2008  pooka Get rid of local machine/{mutex,rwlock}.h files by treating the
object storage as a single pointer (all archs have at least one
uintptr_t in the objects).
 1.1 31-Oct-2007  pooka branches: 1.1.2; 1.1.6; 1.1.8; 1.1.10; 1.1.24; 1.1.28; 1.1.36;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.1.36.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.28.1 04-May-2009  yamt sync with head.
 1.1.24.1 17-Jan-2009  mjf Sync with HEAD.
 1.1.10.2 15-Nov-2007  yamt sync with head.
 1.1.10.1 31-Oct-2007  yamt file mutex.h was added on branch yamt-lazymbuf on 2007-11-15 11:45:25 +0000
 1.1.8.2 13-Nov-2007  bouyer Sync with HEAD
 1.1.8.1 31-Oct-2007  bouyer file mutex.h was added on branch bouyer-xenamd64 on 2007-11-13 16:03:13 +0000
 1.1.6.2 06-Nov-2007  matt sync with HEAD
 1.1.6.1 31-Oct-2007  matt file mutex.h was added on branch matt-armv6 on 2007-11-06 23:34:33 +0000
 1.1.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.1.2.1 31-Oct-2007  joerg file mutex.h was added on branch jmcneill-pm on 2007-10-31 23:14:15 +0000
 1.8 22-Aug-2022  mlelstv provide pmap_wired_count macro.
 1.7 17-Apr-2015  pooka Give the kernel/local pmaps actual storage.

That way friendly neighborhood macros won't go scribbling
in the wrong places.
 1.6 17-Jun-2010  pooka branches: 1.6.18; 1.6.36;
Fix snafu in previous -- if your test it flawed, it doesn't matter
how many times you pass.
 1.5 16-Jun-2010  pooka Reinstate the blanket pmap.h for archs which do not conform to the
kernel ABI (i.e. not i386 or amd64). Due to the "half function,
half macro, all noodles" nature of pmap.h, it's too entangling and
too brittle to keep up with an ifdeffy MI implementation.
 1.4 12-Dec-2008  pooka branches: 1.4.4; 1.4.6;
Add a few MD ifdefs into the rump pmap stubs to enable us to get
rid of the local pmap.h and unify the pmap ABI with the kernel.
(XXX: compiles but doesn't work on vax)

Thanks once again to Greg Oster for helping with testbuilds.
 1.3 09-Dec-2008  pooka Make pmap_kernel() a MI macro for struct pmap *kernel_pmap_ptr,
which is now the "API" provided by the pmap module. pmap_kernel()
remains as the syntactic sugar.

Bonus cosmetics round: move all the pmap_t pointer typedefs into
uvm_pmap.h.

Thanks to Greg Oster for providing cpu muscle for doing test builds.
 1.2 15-Oct-2008  pooka branches: 1.2.2;
Add support bits necessary for rumpnet functionality.
 1.1 05-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.30; 1.1.34; 1.1.40; 1.1.42;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.42.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.42.1 05-Aug-2007  pooka file pmap.h was added on branch matt-mips64 on 2007-08-05 22:28:08 +0000
 1.1.40.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.40.1 19-Oct-2008  haad Sync with HEAD.
 1.1.34.2 11-Aug-2010  yamt sync with head.
 1.1.34.1 04-May-2009  yamt sync with head.
 1.1.30.1 17-Jan-2009  mjf Sync with HEAD.
 1.1.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.1.14.1 05-Aug-2007  joerg file pmap.h was added on branch jmcneill-pm on 2007-11-02 12:43:48 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 05-Aug-2007  yamt file pmap.h was added on branch yamt-lazymbuf on 2007-09-03 14:45:22 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 05-Aug-2007  ad file pmap.h was added on branch vmlocking on 2007-08-20 22:07:25 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 05-Aug-2007  skrll file pmap.h was added on branch nick-csl-alignment on 2007-08-15 13:50:34 +0000
 1.2.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.4.6.1 03-Jul-2010  rmind sync with head
 1.4.4.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.6.36.1 06-Jun-2015  skrll Sync with HEAD
 1.6.18.1 03-Dec-2017  jdolecek update from HEAD
 1.3 13-Dec-2008  pooka Get rid of local machine/{mutex,rwlock}.h files by treating the
object storage as a single pointer (all archs have at least one
uintptr_t in the objects).
 1.2 31-Oct-2007  pooka branches: 1.2.4; 1.2.18; 1.2.22; 1.2.30;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.1 22-Sep-2007  pooka branches: 1.1.4; 1.1.6; 1.1.8; 1.1.10;
add rw_tryenter() and rw_lock_held(), inspired by Adam Hamsik
 1.1.10.3 15-Nov-2007  yamt sync with head.
 1.1.10.2 27-Oct-2007  yamt sync with head.
 1.1.10.1 22-Sep-2007  yamt file rwlock.h was added on branch yamt-lazymbuf on 2007-10-27 11:36:21 +0000
 1.1.8.1 13-Nov-2007  bouyer Sync with HEAD
 1.1.6.2 09-Oct-2007  ad Sync with head.
 1.1.6.1 22-Sep-2007  ad file rwlock.h was added on branch vmlocking on 2007-10-09 13:45:02 +0000
 1.1.4.3 31-Oct-2007  joerg Sync with HEAD.
 1.1.4.2 02-Oct-2007  joerg Sync with HEAD.
 1.1.4.1 22-Sep-2007  joerg file rwlock.h was added on branch jmcneill-pm on 2007-10-02 18:29:25 +0000
 1.2.30.1 19-Jan-2009  skrll Sync with HEAD.
 1.2.22.1 04-May-2009  yamt sync with head.
 1.2.18.1 17-Jan-2009  mjf Sync with HEAD.
 1.2.4.2 06-Nov-2007  matt sync with HEAD
 1.2.4.1 31-Oct-2007  matt file rwlock.h was added on branch matt-armv6 on 2007-11-06 23:34:33 +0000
 1.4 08-Dec-2008  pooka Instead of punishing all archs for a fake vmparam.h, punish only
evbppc for its insolence and pick a ppc cpu family at random in
Makefile.rump.
 1.3 16-Oct-2008  pooka branches: 1.3.2; 1.3.4;
Alpha requires 8k pages for mbuf size calculation to work (maybe
sparc64 too?). Make it so.
 1.2 09-Oct-2008  pooka Bump virtual page shift from 10 to 12. Otherwise the mbuf generating
macros fail to operate properly due to M_EXT_MAXPAGES being too
large and hence struct _m_ext being over MSIZE already by itself.
 1.1 28-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Give rump a faux vmparam.h to work around problematic ports (hooray
for evbppc). Obligatory inlined rant: it would be really nice if
we didn't have weird ports like that which sport totally incompatible
code for different kernels.
 1.1.6.3 17-Jan-2009  mjf Sync with HEAD.
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 28-Jul-2008  mjf file vmparam.h was added on branch mjf-devfs2 on 2008-09-28 10:41:03 +0000
 1.1.4.3 10-Oct-2008  skrll Sync with HEAD.
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 28-Jul-2008  wrstuden file vmparam.h was added on branch wrstuden-revivesa on 2008-09-18 04:37:04 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 28-Jul-2008  simonb file vmparam.h was added on branch simonb-wapbl on 2008-07-31 04:51:05 +0000
 1.3.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.3.2.3 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.3.2.2 19-Oct-2008  haad Sync with HEAD.
 1.3.2.1 16-Oct-2008  haad file vmparam.h was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
purge rump/net of component-specific opt directories
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file agr.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file agr.h was added on branch nick-nhusb on 2015-09-22 12:06:14 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
purge rump/net of component-specific opt directories
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file arcnet.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file arcnet.h was added on branch nick-nhusb on 2015-09-22 12:06:14 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
remove librump/rumpnet/opt, consolidate in rump/include/opt
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file arp.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file arp.h was added on branch nick-nhusb on 2015-09-22 12:06:14 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
opt files were nop't
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file atapibus.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file atapibus.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
purge rump/net of component-specific opt directories
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file bridge.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file bridge.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
purge rump/net of component-specific opt directories
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file carp.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file carp.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file config_file.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file config_file.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.2 01-Sep-2015  ozaki-r branches: 1.2.2; 1.2.18;
Define NETHER in rumpkernel

This fixes failures of ATF tests running on rump_server.
 1.1 24-Aug-2015  pooka purge rump/net of component-specific opt directories
 1.2.18.2 03-Dec-2017  jdolecek update from HEAD
 1.2.18.1 01-Sep-2015  jdolecek file ether.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.2.2.2 22-Sep-2015  skrll Sync with HEAD
 1.2.2.1 01-Sep-2015  skrll file ether.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.2 14-Aug-2018  maxv Retire EtherIP, we have L2TP instead.
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18; 1.1.20; 1.1.22;
purge rump/net of component-specific opt directories
 1.1.22.1 10-Jun-2019  christos Sync with HEAD
 1.1.20.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file etherip.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file etherip.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
purge rump/net of component-specific opt directories
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file faith.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file faith.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
purge rump/net of component-specific opt directories
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file fddi.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file fddi.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.2 08-Jan-2016  knakahara branches: 1.2.16;
conform rump behavior to NetBSD kernel (in paticular net.inet.ip.gifttl sysctl)
 1.1 24-Aug-2015  pooka branches: 1.1.2;
purge rump/net of component-specific opt directories
 1.1.2.3 19-Mar-2016  skrll Sync with HEAD
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file gif.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 08-Jan-2016  jdolecek file gif.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
purge rump/net of component-specific opt directories
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file gre.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file gre.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file ksyms.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file ksyms.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 16-Feb-2017  knakahara branches: 1.1.2; 1.1.6; 1.1.14; 1.1.18;
l2tp(4) support rump.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 16-Feb-2017  jdolecek file l2tp.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.14.2 28-Aug-2017  skrll Sync with HEAD
 1.1.14.1 16-Feb-2017  skrll file l2tp.h was added on branch nick-nhusb on 2017-08-28 17:53:14 +0000
 1.1.6.2 21-Apr-2017  bouyer Sync with HEAD
 1.1.6.1 16-Feb-2017  bouyer file l2tp.h was added on branch bouyer-socketcan on 2017-04-21 16:54:07 +0000
 1.1.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.1.2.1 16-Feb-2017  pgoyette file l2tp.h was added on branch pgoyette-localcount on 2017-03-20 06:57:52 +0000
 1.1 17-May-2021  yamaguchi branches: 1.1.2; 1.1.6;
Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable
 1.1.6.2 17-Jun-2021  thorpej Sync w/ HEAD.
 1.1.6.1 17-May-2021  thorpej file lagg.h was added on branch thorpej-i2c-spi-conf on 2021-06-17 04:46:35 +0000
 1.1.2.2 31-May-2021  cjep sync with head
 1.1.2.1 17-May-2021  cjep file lagg.h was added on branch cjep_staticlib_x on 2021-05-31 22:15:22 +0000
 1.8 31-Mar-2022  yamaguchi Added a kernel option to run LACP on a half duplex interface
 1.7 14-Jul-2021  ozaki-r Rump-ify ALTQ (librumpnet_altq.so)
 1.6 27-May-2017  bouyer branches: 1.6.8; 1.6.28;
merge the bouyer-socketcan branch to HEAD.

CAN stands for Controller Area Network, a broadcast network used
in automation and automotive fields. For example, the NMEA2000 standard
developped for marine devices uses a CAN network as the link layer.

This is an implementation of the linux socketcan API:
https://www.kernel.org/doc/Documentation/networking/can.txt
you can also see can(4).

This adds a new socket family (AF_CAN) and protocol (PF_CAN),
as well as the canconfig(8) utility, used to set timing parameter of
CAN hardware. Also inclued is a driver for the CAN controller
found in the allwinner A20 SoC (I tested it with an Olimex lime2 board,
connected with PIC18-based CAN devices).

There is also the canloop(4) pseudo-device, which allows to use
the socketcan API without CAN hardware.

At this time the CANFD part of the linux socketcan API is not implemented.
Error frames are not implemented either. But I could get the cansend and
canreceive utilities from the canutils package to build and run with minimal
changes. tcpudmp(8) can also be used to record frames, which can be
decoded with etherreal.
 1.5 15-Apr-2016  ozaki-r branches: 1.5.4;
Rump-ify if_pppoe

From s-yamaguchi@IIJ
 1.4 07-Jan-2016  pooka use WSEMUL_NO_DUMB and WSEMUL_VT100
 1.3 24-Aug-2015  pooka branches: 1.3.2;
Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h
 1.2 24-Aug-2015  pooka Remove a bunch of opt files.

It's a cute idea to have component-specific opt files, but also a
completely stupid one since there's no way of knowing how options
transcend component boundaries, and therefore if a set of options is
conflicting or not. So, just continue concentrating all of opt_foo.h in
opt_rumpkernel.h in accordance with the monolithic opt model.
 1.1 21-Aug-2015  pooka Move constant cpp macros from Makefile.rump into opt_rumpkernel.h
(makes cc invocation lines a bit shorter)
 1.3.2.5 28-Aug-2017  skrll Sync with HEAD
 1.3.2.4 22-Apr-2016  skrll Sync with HEAD
 1.3.2.3 19-Mar-2016  skrll Sync with HEAD
 1.3.2.2 22-Sep-2015  skrll Sync with HEAD
 1.3.2.1 24-Aug-2015  skrll file opt_rumpkernel.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.5.4.1 15-Jan-2017  bouyer Initial commit of a CAN socket layer, compatible with linux SoccketCAN
(but incomplete). Based on work from Robert Swindells.
 1.6.28.1 01-Aug-2021  thorpej Sync with HEAD.
 1.6.8.2 03-Dec-2017  jdolecek update from HEAD
 1.6.8.1 27-May-2017  jdolecek file opt_rumpkernel.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
remove librump/rumpnet/opt, consolidate in rump/include/opt
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file pfsync.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file pfsync.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.2 15-Apr-2016  ozaki-r branches: 1.2.16;
Rump-ify if_pppoe

From s-yamaguchi@IIJ
 1.1 24-Aug-2015  pooka branches: 1.1.2;
purge rump/net of component-specific opt directories
 1.1.2.3 22-Apr-2016  skrll Sync with HEAD
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file pppoe.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 15-Apr-2016  jdolecek file pppoe.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
opt files were nop't
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file scsibus.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file scsibus.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
continue consolidating non-modular option files
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file sysmon_envsys.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file sysmon_envsys.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
continue consolidating non-modular option files
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file sysmon_power.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file sysmon_power.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
continue consolidating non-modular option files
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file sysmon_wdog.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file sysmon_wdog.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
purge rump/net of component-specific opt directories
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file token.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file token.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
Remove individual opt_foo.h files, continue consolidating to opt_rumpkernel.h
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file veriexec.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file veriexec.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.2 26-Nov-2016  ozaki-r branches: 1.2.14;
Rumpify vlan(4)
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.4;
purge rump/net of component-specific opt directories
 1.1.4.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.1.2.3 05-Dec-2016  skrll Sync with HEAD
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file vlan.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.2.14.2 03-Dec-2017  jdolecek update from HEAD
 1.2.14.1 26-Nov-2016  jdolecek file vlan.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
opt files were nop't
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file wd.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file wd.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 20-Aug-2020  riastradh [ozaki-r] Add wg files
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
continue consolidating non-modular option files
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file wsdisplay.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file wsdisplay.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
continue consolidating non-modular option files
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file wskbd.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file wskbd.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
continue consolidating non-modular option files
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file wsmouse.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file wsmouse.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.1 24-Aug-2015  pooka branches: 1.1.2; 1.1.18;
continue consolidating non-modular option files
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 24-Aug-2015  jdolecek file wsmux.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 24-Aug-2015  skrll file wsmux.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.10 02-Feb-2016  pooka Add capability to attach external memory to files on rumpfs. This
feature is useful e.g. for tight-memory systems where you don't need
block storage, but still need to provide some data via files.
 1.9 31-Jan-2016  pooka Move "shotgun approach to rump syscalls" from rump.h to a separate header,
sort of as a hint that relying on those macros is not necessarily the
way you want to do things in 2016. Include things from rump.h for compat
for the time being, though.
 1.8 15-Sep-2015  pooka install <rump/rumperrno2host.h>
 1.7 25-Apr-2014  pooka branches: 1.7.4;
obsolete the installed <rump/scsitest.h> header and make it private
to tests/dev/scsipi
 1.6 18-Dec-2013  pooka branches: 1.6.2;
install rumperr.h
 1.5 08-Aug-2012  christos branches: 1.5.2; 1.5.4;
don't install includes if MKRUMP = no
 1.4 24-Aug-2010  pooka branches: 1.4.8;
whoopsie, need to commit this as part of scsitest
 1.3 19-Jul-2010  pooka add rump_syscalls_compat.h
 1.2 14-Oct-2009  pooka branches: 1.2.2; 1.2.4;
Adjust rump sources for external/internal interfaces.
No functional change.
 1.1 17-Nov-2008  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Descend into include/rump and install headers.
 1.1.10.5 09-Oct-2010  yamt sync with head
 1.1.10.4 11-Aug-2010  yamt sync with head.
 1.1.10.3 11-Mar-2010  yamt sync with head
 1.1.10.2 04-May-2009  yamt sync with head.
 1.1.10.1 17-Nov-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.1.6.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.6.1 17-Nov-2008  skrll file Makefile was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.1.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.4.1 17-Nov-2008  mjf file Makefile was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.2.4.1 05-Mar-2011  rmind sync with head
 1.2.2.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.2.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.4.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.8.1 30-Oct-2012  yamt sync with head
 1.5.4.1 18-May-2014  rmind sync with head
 1.5.2.2 03-Dec-2017  jdolecek update from HEAD
 1.5.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.2.1 10-Aug-2014  tls Rebase.
 1.7.4.2 19-Mar-2016  skrll Sync with HEAD
 1.7.4.1 22-Sep-2015  skrll Sync with HEAD
 1.31 21-Aug-2018  christos Unlike gnu sed our sed does not recognize inline labels (separated by
semi-colons) so split the lines, and make sure that command lists end
with a semi-colon.
 1.30 21-Aug-2018  msaitoh rumpdefs.h, rumperr.h and rumperrno2host.h are generated from makerumpdefs.sh.
Don't edit those files directly. Use __inline instead of inline in the
script file. OK'd by christos.
 1.29 02-Feb-2016  pooka branches: 1.29.16; 1.29.18;
snarf fcntl definitions
 1.28 15-Sep-2015  pooka Generate rump_errno2host(): translates rump kernel errnos to host errnos.

Essentially, it's a partial I-know-what-I'm-doing syscall compat.

Functionality requested by Robert Millan.
 1.27 10-Sep-2015  pooka Fix #define ERRNO EANOTHERRNO.

Was: #define RUMP_ERRNO EANOTHERRNO
Now: #define RUMP_ERRNO RUMP_EANOTHERRNO

pointed out by Sebastian Wicki on irc
 1.26 10-Sep-2015  pooka Ignore multiline IOC macros by default.
 1.25 18-Dec-2013  pooka branches: 1.25.6;
generate errno -> str routine (for portable programs)
 1.24 11-Dec-2013  pooka need to grab KTRFACv[n] too
 1.23 09-Dec-2013  pooka include ktrace constants
 1.22 13-Nov-2013  pooka do enums, grab enum modctl
 1.21 15-Aug-2013  pooka translate ino_t to a portability-friendlier type
 1.20 15-Aug-2013  pooka Explicitly avoid MAXNAMELEN. I'm not claiming it's pretty, but most
likely it's more bang for the buck than adding cpp support to the
sed script.
 1.19 15-Aug-2013  pooka grab struct dirent
 1.18 25-Jun-2013  stacktic branches: 1.18.2;
grab ioctl-related macros
 1.17 01-Jun-2013  stacktic Grab more network-related macros
 1.16 08-May-2013  pooka grab mount-related macros too
 1.15 08-May-2013  pooka Grab the sysvbfs args structure too, since the fs is useful for
simple testing. Incidentally, the structure is exactly the same as
for UFS...
 1.14 30-Apr-2013  pooka fix sed command
 1.13 13-Dec-2012  pooka Add the ability to define compat structs and include a few.
 1.12 21-Nov-2012  pooka ok, rump_sockaddr_in was a pretty desperate kludge in the first place,
much better solved by syscall compat. but, now it's really time to let
it go since solaris thinks it's nice to define s_addr around any way
it likes.
 1.11 18-Nov-2012  pooka Necessary _KERNEL wrap to previous.
 1.10 18-Nov-2012  pooka make work for non-c++ (???)
 1.9 18-Nov-2012  pooka While mucking in here, give the [local] client a chance to access all
rump kernel (i.e. NetBSD) errnos, not just EJUSTRETURN.
 1.8 18-Nov-2012  pooka Finally remove the "temporary" __VTYPE_DEFINED stuff I added >5 years ago.
 1.7 20-Jul-2012  pooka branches: 1.7.2;
add some network-related compat defs
 1.6 02-Jul-2010  hannken branches: 1.6.8;
LK_* flags moved to sys/vnode.h
 1.5 03-Nov-2009  pooka branches: 1.5.2; 1.5.4;
include AB_* macros from reboot.h
 1.4 09-Oct-2009  pooka namespace RB_ from reboot.h
 1.3 17-Nov-2008  pooka branches: 1.3.4; 1.3.6; 1.3.10;
adjust comments out of lock.h
 1.2 17-Nov-2008  pooka include those appetizing lockmanger flags
 1.1 17-Nov-2008  pooka Add script to statically generate rumpdefs.h instead of doing it buildtime.
 1.3.10.4 11-Aug-2010  yamt sync with head.
 1.3.10.3 11-Mar-2010  yamt sync with head
 1.3.10.2 04-May-2009  yamt sync with head.
 1.3.10.1 17-Nov-2008  yamt file makerumpdefs.sh was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.3.6.2 19-Jan-2009  skrll Sync with HEAD.
 1.3.6.1 17-Nov-2008  skrll file makerumpdefs.sh was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.3.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.3.4.1 17-Nov-2008  mjf file makerumpdefs.sh was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.5.4.1 03-Jul-2010  rmind sync with head
 1.5.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.6.8.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.8.3 23-Jan-2013  yamt sync with head
 1.6.8.2 16-Jan-2013  yamt sync with (a bit old) head
 1.6.8.1 30-Oct-2012  yamt sync with head
 1.7.2.5 03-Dec-2017  jdolecek update from HEAD
 1.7.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.2.3 23-Jun-2013  tls resync from head
 1.7.2.2 25-Feb-2013  tls resync with head
 1.7.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.18.2.2 18-May-2014  rmind sync with head
 1.18.2.1 28-Aug-2013  rmind sync with head
 1.25.6.2 19-Mar-2016  skrll Sync with HEAD
 1.25.6.1 22-Sep-2015  skrll Sync with HEAD
 1.29.18.1 10-Jun-2019  christos Sync with HEAD
 1.29.16.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.73 04-Nov-2020  christos PR/55781: Ruslan Nikolaev: rump_init() does differentiate when all CPUs are
initialized
 1.72 14-Jun-2020  kamil branches: 1.72.2;
Remove old compat include of rump_syscallshotgun.h

It was separated in 2016 and is no longer needed.
 1.71 14-Jun-2020  kamil Fix header compatibility with C++

This file is OS-agnostic and cannot include OS specific headers.

The fallback for NetBSD specific symbol __BEGIN_DECLS didn't work as it was
misspelled as _BEGIN_DECLS.
 1.70 11-May-2017  christos ... but define RUMP_REGISTER_T if not defined.
 1.69 11-May-2017  christos Use the same exposure rules for register_t as <machine/types.h> does.
Eventually we could remove -D_KERNTYPES from all the rump libraries...
 1.68 31-Jan-2016  pooka branches: 1.68.8;
Move "shotgun approach to rump syscalls" from rump.h to a separate header,
sort of as a hint that relying on those macros is not necessarily the
way you want to do things in 2016. Include things from rump.h for compat
for the time being, though.
 1.67 29-Jan-2016  christos PR/50631: Joerg Sonnenberger: Don't rename syscalls before you include
the relevant headers.
 1.66 25-Jan-2016  pooka prop_dictionary_t hasn't been needed here in, um, 5 years, so remove
the type madness.
 1.65 25-Jan-2016  pooka Don't include <rump/rumpvnode_if.h> from rump.h. It's not needed
unless you're doing something special, but requires register_t.
Adjust the few places which actually need rumpvnode_if.h.
 1.64 01-Nov-2015  pooka fix typo: fnctl -> fcntl

from Robert Millan <rmh@gnu.org> via rumpkernel-users
 1.63 13-Jun-2014  pooka branches: 1.63.4;
Add rump_boot_etfs_register(), which can be used to specify etfs
nodes that will be available immediately when mountroot is done
and file systems are available.

The intended use is for example for firmware images to be available when
config_mountroot() hooks run.
 1.62 02-Apr-2014  justin branches: 1.62.2;
Add Android support for rump kernel.

Reviewed by pooka@
 1.61 10-Mar-2014  pooka add a compat prototype for rump_getversion()
 1.60 10-Mar-2014  pooka rump_getversion() does not require a thread context, so make it a straight
call instead of being wrapped around rump_pub_getversion().
 1.59 10-Mar-2014  pooka Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.
 1.58 20-Feb-2014  pooka Remove the "host" signal model. I'm not sure it ever made any sense.
I'm also quite sure nobody ever really wanted to use it.

Change the "raise" sigmodel to include the rump kernel PID in the call
to rumpuser_kill(). The purpose is to provide some hint for non-POSIX
platforms which don't sport signals and multiplex many clients in a
single address space.

While this is technically an ABI change, see above. Also, since
rumpuser_kill() was not documented, I'll just claim I'm fixing a bug in
the implementation (and will be sure to document the interface correctly
very soon).
 1.57 16-Jul-2013  pooka Give reader-friendly aliases to rfork flags.
 1.56 27-Apr-2013  pooka branches: 1.56.4;
Get rid of the rump__init() macro. it was never useful and just makes
debugging less obvious.
 1.55 21-Nov-2012  pooka export register_t to rump kernel users on solaris
 1.54 20-Jul-2012  pooka branches: 1.54.2;
Revert rev 1.51. Turns out the defines are still useful when you really
want a local client.
 1.53 21-Mar-2011  pooka branches: 1.53.4;
Update copyright statements.

no functional change.
 1.52 09-Mar-2011  pooka Duh, the nfsd hacks in tests still used RUMP_SYS_NETWORKING. It
appears that using nxr to search for users wasn't a very good idea.
Put networking back and make the test of the defines give out
#errors.

me be fixink this
 1.51 08-Mar-2011  pooka g/c old-style syscall selection method
 1.50 02-Jan-2011  pooka branches: 1.50.2;
There is a use case where preserving the parent's fd table is
relevant, so to accommodate that change rump_lwproc_newproc() to
rump_lwproc_rfork(). The new interface has the rfork() fd table
semantics. The equivalent of rump_lwproc_newproc() is
rump_lwproc_rfork(RUMP_RFCFDG).
 1.49 30-Nov-2010  pooka Require server to be explicitly initialized with rump_init_server(url).
Also, add rump_daemonize_begin() / rump_daemonize_end() to help
with the "can't daemon() after pthread_create()" problem. Applications
could accomplish the same, but since it's such a common operation,
provide a little help.
 1.48 30-Nov-2010  dholland RUMPCN_FORCEFREE is no longer needed.
 1.47 15-Nov-2010  pooka Add a new signal model RUMP_SIGMODEL_RECORD which records all
signals which are posted to a process.
 1.46 27-Oct-2010  pooka Start rework of system call proxying over socket ("sysproxy").
This incarnation is written in the user namespace as opposed to
the previous one which was done in kernel namespace. Also, rump
does all the handshaking now instead of excepting an application
to come up with the user namespace socket.

There's still a lot to do, including making code "a bit" more
robust, actually running different clients in a different process
inside the kernel and splitting the client side library from librump.
I'm committing this now so that I don't lose it, plus it generally
works as long as you don't use it in unexcepted ways: i've tested
ifconfig(8), route(8), envstat(8) and sysctl(8).
 1.45 06-Sep-2010  pooka add a few more system calls
 1.44 11-May-2010  pooka _RUMPKERNEL -> _KERNEL
 1.43 01-May-2010  pooka forward-declare struct uio (required by rumpvnode_if.h)
 1.42 01-May-2010  pooka Add rump_printevcnts() which dumps values from all event counters.
(NOTE! it is run unscheduled for various experimentation etcetc. reasons)
 1.41 26-Apr-2010  pooka Add directory support to etfs: host directories and their contents
will be mapped to rumpfs based on the given key. The directory
can be mapped either for a single level or recursively down the
entire subtree.
 1.40 24-Apr-2010  dholland Remove trailing comma in enum, per PR kern/43200.

(trailing commas in enums are allowed in C99, but not C89, and possibly
not in C++, so let's be nice to older and deviant compilers)
 1.39 21-Apr-2010  pooka Move all signal-related from emul.c to signals.c. Additionally,
define a few alternate signal models for the rump kernel, including
ones where signals are ignored or sent to host processes.
 1.38 14-Apr-2010  pooka Use "struct kauth_cred *" instead of kauth_cred_t in all exported
interfaces. Allows to remove hairbrained _t typedef dance.
 1.37 24-Feb-2010  pooka branches: 1.37.2;
Expose rump_schedule() and rump_unschedule(). These can be used
for wrapping application space calls to the rump kernel without
having to do heavyweight interface specification with ifspec.
 1.36 11-Feb-2010  pooka Add RUMP_SYS_FILEOPS for syscalls which operate on files (or at least
close to that).
 1.35 23-Dec-2009  stacktic branches: 1.35.2;
Fixed ukfs build on non-NetBSD system.
 1.34 09-Dec-2009  haad Add RUMP_SYS_OPEN define to replace open calls with their RUMP version.
 1.33 03-Nov-2009  pooka Add rump_boot_set/gethowto(), which can be called before rump_init()
to control .... *tadaa* boothowto.
 1.32 14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.31 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.30 13-Oct-2009  pooka don't define curlwp, it's just (unused) sugar
 1.29 11-Oct-2009  pooka add recvmsg and sendmsg to networking rump syscalls
 1.28 09-Oct-2009  pooka Provide an interface for reboot.
 1.27 07-Oct-2009  pooka g/c some prehistoric interfaces which have been superceded by others.
 1.26 07-Oct-2009  pooka Allow to set size and host file offset for etfs files and rumpblk.
 1.25 06-Oct-2009  pooka Give a p2k node an internal state. This allows us to do proper
reference counting and not release nodes based just on puffs'
impression of if they are free.

This also allows us to reclaim vnodes already in inactive if the
file system so desires. Some file systems, most notably ffs, change
file state already in inactive. This could lead to a deadlock in
the middle of inactive and reclaim if some other puffs operation
was processed in between (as exposed by haad's open(at) test
program).

Also, properly thread the componentname from lookup to the actual
vnode operation. This required the changes the rump componentname
routines. Yes, the rename case is truly mindbogglingly disgusting.
Puke for yourself.
 1.24 03-Aug-2009  pooka * get rid of the old fakeblk registration interface. Instead,
introduce a new and improved "etfs" interface, which can be used
to register host files accessible from rump fs namespace. This
new interface is not restriced to block devices, and neither does
it require the same pathname in host namespace and rump namespace.
Therefore, the same host file can be represented both as a char
and block device in rump namespace.

* adjust rumpblk to make the above possible

* improve rumpfs: nodes are now created properly and not implicitly
tied to the vnode lifecycle
 1.23 26-May-2009  pooka add ioctl to list of compile-time translated calls
 1.22 22-May-2009  pooka forward declare struct stat to avoid implicit header dependencies
 1.21 22-May-2009  pooka Add compat routines for vattr translation over time_t change.
 1.20 22-May-2009  pooka Add handrolled stat30 compat syscalls for calling post-time_t rump
kernels from pre-time_t userlands.
 1.19 22-May-2009  pooka Add rump_getversion(), which returns the version of NetBSD for the
rump kernel.
 1.18 07-May-2009  pooka Add rump_set_curlwp() for context switch to an existing lwp/proc.
 1.17 04-May-2009  pooka Nuke RUMPCN_HASNTBUF. The inspiration behind it must've been ... deep.
 1.16 03-May-2009  pooka branches: 1.16.2;
Rename rump_cred_destroy() to rump_cred_put() -- they've been
refcounted since forever now.
 1.15 03-May-2009  pooka Add rump_vfs_getmp(), which returns struct mount for a given path.
(yes, it does not take a reference to the mountpoint)
 1.14 02-May-2009  pooka Since rump_module_load() doesn't actually load the module, change
the name to rump_module_init(). Also, adjust the signature to take
a direct pointer to modinfo and allow passing of props. Finally,
provide rump_module_fini().
 1.13 29-Apr-2009  pooka Add proof-of-concept code for enabling system calls to rump virtual
kernels running in other processes on the same machine or on an
entirely different host. I wrote this a while ago and am now
committing it mainly to avoid losing it. It works, but could do
with a little tuning here and there.

What this will hopefully eventually buy us is the ability to use
standard userland tools to configure rump kernels, e.g. ifconfig(8)
and route(8) could be used to configure the networking stack provided
by a rump kernel. Also some distributed OS implications may apply.

fun fact: a system call which just does copyin/copyout takes >1000x
longer when made over the LAN as compared to when made on the same
machine.
 1.12 27-Mar-2009  pooka rump_virtif_create prototype
 1.11 27-Mar-2009  pooka shotgun approach to rump syscalls
 1.10 22-Feb-2009  ad PR kern/26878 FFSv2 + softdep = livelock (no free ram)
PR kern/16942 panic with softdep and quotas
PR kern/19565 panic: softdep_write_inodeblock: indirect pointer #1 mismatch
PR kern/26274 softdep panic: allocdirect_merge: ...
PR kern/26374 Long delay before non-root users can write to softdep partitions
PR kern/28621 1.6.x "vp != NULL" panic in ffs_softdep.c:4653 while unmounting a softdep (+quota) filesystem
PR kern/29513 FFS+Softdep panic with unfsck-able file-corruption
PR kern/31544 The ffs softdep code appears to fail to write dirty bits to disk
PR kern/31981 stopping scsi disk can cause panic (softdep)
PR kern/32116 kernel panic in softdep (assertion failure)
PR kern/32532 softdep_trackbufs deadlock
PR kern/37191 softdep: locking against myself
PR kern/40474 Kernel panic after remounting raid root with softdep

Retire softdep, pass 2. As discussed and later formally announced on the
mailing lists.
 1.9 20-Feb-2009  pooka missed one prototype
 1.8 20-Feb-2009  pooka typedef rump_sysproxy_t
 1.7 06-Feb-2009  pooka branches: 1.7.2;
Rip out the rwlock spl emulation code. It never did anything useful
except keep my feet warm by consuming an insane amount of cpu
cycles -- in rump our current "cpu" context is never interrupted
& we have MULTIPROCESSOR.

(itch i'm scratching: it made the networking stack 10-20% slower.
this is one of the places where fast code actually matters)
 1.6 08-Jan-2009  pooka branches: 1.6.2; 1.6.4;
Put syspuffs_glueinit in the rump kernel namespace.
 1.5 07-Jan-2009  pooka _rump_init() - > rump__init()
 1.4 21-Nov-2008  pooka rump_vfs_load() is really rump_module_load(), so call it that and
move it from rumpvfs to rumpkern.
 1.3 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.2 17-Nov-2008  pooka Remove rump_vp locking interfaces, use RUMP_VOP instead.
 1.1 17-Nov-2008  pooka Move rump public headers to include/rump
 1.6.4.4 28-Apr-2009  skrll Sync with HEAD.
 1.6.4.3 03-Mar-2009  skrll Sync with HEAD.
 1.6.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.6.4.1 08-Jan-2009  skrll file rump.h was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.6.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.6.2.1 08-Jan-2009  mjf file rump.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.7.2.2 23-Jul-2009  jym Sync with HEAD.
 1.7.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.16.2.8 09-Oct-2010  yamt sync with head
 1.16.2.7 11-Aug-2010  yamt sync with head.
 1.16.2.6 11-Mar-2010  yamt sync with head
 1.16.2.5 19-Aug-2009  yamt sync with head.
 1.16.2.4 20-Jun-2009  yamt sync with head
 1.16.2.3 16-May-2009  yamt sync with head
 1.16.2.2 04-May-2009  yamt sync with head.
 1.16.2.1 03-May-2009  yamt file rump.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.35.2.4 06-Nov-2010  uebayasi Sync with HEAD.
 1.35.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.35.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.35.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.37.2.3 21-Apr-2011  rmind sync with head
 1.37.2.2 05-Mar-2011  rmind sync with head
 1.37.2.1 30-May-2010  rmind sync with head
 1.50.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.53.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.53.4.2 16-Jan-2013  yamt sync with (a bit old) head
 1.53.4.1 30-Oct-2012  yamt sync with head
 1.54.2.4 03-Dec-2017  jdolecek update from HEAD
 1.54.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.54.2.2 23-Jun-2013  tls resync from head
 1.54.2.1 25-Feb-2013  tls resync with head
 1.56.4.2 18-May-2014  rmind sync with head
 1.56.4.1 28-Aug-2013  rmind sync with head
 1.62.2.1 10-Aug-2014  tls Rebase.
 1.63.4.3 28-Aug-2017  skrll Sync with HEAD
 1.63.4.2 19-Mar-2016  skrll Sync with HEAD
 1.63.4.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.68.8.1 19-May-2017  pgoyette Resolve conflicts from previous merge (all resulting from $NetBSD
keywork expansion)
 1.72.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.53 01-Jul-2024  christos regen
 1.52 23-Sep-2023  ad branches: 1.52.6;
Regen.
 1.51 12-Sep-2023  ad Back out recent change to replace pool_cache with then general allocator.
Will return to this when I have time again.
 1.50 10-Sep-2023  ad Regen.
 1.49 09-Sep-2023  ad Regen.
 1.48 29-Jun-2021  dholland Regen.
 1.47 16-Jun-2021  dholland Regen.
 1.46 30-May-2020  ad branches: 1.46.6;
Regen.
 1.45 27-May-2020  rin Regen.
 1.44 26-May-2020  ad Regen.
 1.43 12-May-2020  ad Regen.
 1.42 04-Apr-2020  ad Regen.
 1.41 23-Mar-2020  ad Regen.
 1.40 23-Mar-2020  ad Regen.
 1.39 22-Mar-2020  ad Regen.
 1.38 08-Jan-2020  ad Regen.
 1.37 06-Jan-2020  ad branches: 1.37.2;
Regen.
 1.36 01-Dec-2019  ad Regen.
 1.35 01-Dec-2019  ad Regen.
 1.34 01-Dec-2019  ad namecache changes:

- Delete the per-entry lock, and borrow the associated vnode's v_interlock
instead. We need to acquire it during lookup anyway. We can revisit this
in the future but for now it's a stepping stone, and works within the
quite limited context of what we have (BSD namecache/lookup design).

- Implement an idea that Mateusz Guzik (mjg@FreeBSD.org) gave me. In
cache_reclaim(), we don't need to lock out all of the CPUs to garbage
collect entries. All we need to do is observe their locks unheld at least
once: then we know they are not in the critical section, and no longer
have visibility of the entries about to be garbage collected.

- The above makes it safe for sysctl to take only namecache_lock to get stats,
and we can remove all the crap dealing with per-CPU locks.

- For lockstat, make namecache_lock a static now we have __cacheline_aligned.

- Avoid false sharing - don't write back to nc_hittime unless it has changed.
Put a a comment in place explaining this. Pretty sure this was there in
2008/2009 but someone removed it (understandably, the code looks weird).

- Use a mutex to protect the garbage collection queue instead of atomics, and
adjust the low water mark up so that cache_reclaim() isn't doing so much
work at once.
 1.33 13-Sep-2019  christos Regen
 1.32 03-Jun-2019  msaitoh branches: 1.32.2;
Regen.
 1.31 21-Mar-2017  riastradh branches: 1.31.6; 1.31.14;
regen
 1.30 19-Mar-2017  riastradh regen
 1.29 18-Mar-2017  riastradh regen
 1.28 18-Mar-2017  riastradh regen
 1.27 21-Apr-2015  riastradh branches: 1.27.2; 1.27.4;
Cull unused INRENAME and INRELOOKUP from callers.
 1.26 16-Jan-2015  dennis Regen.
 1.25 24-Dec-2014  dennis Update stats-keeping in sys/kern/vfs_cache.c to remove (most)
races while allowing consistent lockless sampling of the per-cpu
statistics without atomic operations. Update comment describing
the locking protocol to include this.
 1.24 03-Jun-2014  joerg branches: 1.24.4;
Regen.
 1.23 03-Jun-2014  joerg Regen.
 1.22 18-Nov-2012  dholland branches: 1.22.10;
Regen from updated namei.src.
 1.21 05-Nov-2012  dholland regen
 1.20 05-Nov-2012  dholland regen
 1.19 05-Nov-2012  dholland regen
 1.18 13-Oct-2012  dholland regen
 1.17 08-Oct-2012  dholland regen
 1.16 25-Nov-2011  dholland branches: 1.16.8;
Regen.
 1.15 18-Apr-2011  dholland branches: 1.15.4;
Regen for ISSYMLINK removal.
 1.14 07-Jan-2011  pooka branches: 1.14.2;
regen: fix PARAMASK
 1.13 02-Jan-2011  dholland Final regen for tonight.
 1.12 02-Jan-2011  dholland Regen yet again.
 1.11 02-Jan-2011  dholland Regen again.
 1.10 02-Jan-2011  dholland Regen.
 1.9 30-Nov-2010  dholland Regen for both preceding commits of namei.src together. I suppose I should
technically have regen'd separately for each but it didn't seem worthwhile.
 1.8 19-Nov-2010  dholland Regen.
 1.7 23-Dec-2009  pooka branches: 1.7.4;
regen: INRENAME
 1.6 27-Sep-2009  dholland regen again (forgot both patches touched namei.h)
 1.5 27-Sep-2009  dholland regen
 1.4 29-Jun-2009  dholland regen
 1.3 11-Feb-2009  enami branches: 1.3.2;
Regen.
 1.2 17-Nov-2008  pooka branches: 1.2.4; 1.2.6; 1.2.8;
reregen to get those most important rcsids right
 1.1 17-Nov-2008  pooka regen
 1.2.8.2 23-Jul-2009  jym Sync with HEAD.
 1.2.8.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.2.6.3 03-Mar-2009  skrll Sync with HEAD.
 1.2.6.2 19-Jan-2009  skrll Sync with HEAD.
 1.2.6.1 17-Nov-2008  skrll file rump_namei.h was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.2.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.4.1 17-Nov-2008  mjf file rump_namei.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.3.2.4 11-Mar-2010  yamt sync with head
 1.3.2.3 18-Jul-2009  yamt sync with head.
 1.3.2.2 04-May-2009  yamt sync with head.
 1.3.2.1 11-Feb-2009  yamt file rump_namei.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.7.4.2 21-Apr-2011  rmind sync with head
 1.7.4.1 05-Mar-2011  rmind sync with head
 1.14.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.15.4.3 16-Jan-2013  yamt sync with (a bit old) head
 1.15.4.2 30-Oct-2012  yamt sync with head
 1.15.4.1 17-Apr-2012  yamt sync with head
 1.16.8.3 03-Dec-2017  jdolecek update from HEAD
 1.16.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.16.8.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.22.10.1 10-Aug-2014  tls Rebase.
 1.24.4.2 06-Jun-2015  skrll Sync with HEAD
 1.24.4.1 06-Apr-2015  skrll Sync with HEAD
 1.27.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.27.2.2 26-Apr-2017  pgoyette Sync with HEAD
 1.27.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.31.14.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.31.14.1 10-Jun-2019  christos Sync with HEAD
 1.31.6.1 21-Jun-2021  martin Regen for ticket #1685
 1.32.2.1 21-Jun-2021  martin Regen for ticket #1296
 1.37.2.5 04-Mar-2020  ad Regen.
 1.37.2.4 25-Jan-2020  ad Remove unintentional differences to base.
 1.37.2.3 17-Jan-2020  ad Sync with head.
 1.37.2.2 14-Jan-2020  ad Regen.
 1.37.2.1 08-Jan-2020  ad Regen.
 1.46.6.2 01-Aug-2021  thorpej Sync with HEAD.
 1.46.6.1 17-Jun-2021  thorpej Sync w/ HEAD.
 1.52.6.1 02-Aug-2025  perseant Sync with HEAD
 1.133 09-Oct-2024  christos regen
 1.132 05-Oct-2024  mlelstv regen
 1.131 03-Oct-2024  christos regen
 1.130 20-May-2024  christos branches: 1.130.2;
regen
 1.129 19-May-2024  christos regen
 1.128 28-Jul-2023  christos regen
 1.127 10-Jul-2023  christos Regen
 1.126 01-Nov-2021  thorpej regen for "struct sigaltstack" -> "stack_t"
 1.125 19-Sep-2021  thorpej Regen for eventfd(2) and timerfd(2).
 1.124 02-Nov-2020  christos regen
 1.123 14-Aug-2020  riastradh branches: 1.123.2;
regen
 1.122 11-Jun-2020  dholland Regen with new makesyscalls.

(the large diff of rump_syscalls.h has been checked and was the point
of the makesyscalls change)
 1.121 02-Jun-2020  kamil Regenerate syscalls

Respect syscall alias names in rump.

No binary change in this version.

The previous commit was interrupted in the middle by CVS network outage.
 1.120 02-Jun-2020  kamil Regenerate native NetBSD syscalls

The only change is rump repecting syscall alias names.

No binary change.
 1.119 16-May-2020  christos Add ACL support for FFS. From FreeBSD.
 1.118 26-Apr-2020  thorpej Regen for futex call relocation.
 1.117 26-Apr-2020  thorpej Regen for native futex calls.
 1.116 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.115 22-Apr-2020  thorpej Regen for removal of _lwp_gettid(2).
 1.114 04-Apr-2020  thorpej branches: 1.114.2;
Regen for _lwp_gettid(2).
 1.113 21-Jan-2020  pgoyette Regen
 1.112 22-Sep-2019  christos branches: 1.112.2;
regen
 1.111 10-Aug-2018  pgoyette Regen
 1.110 31-Jul-2018  rjs regen.
 1.109 12-Jul-2018  maxv Remove the kernel PMC code. Sent yesterday on tech-kern@.

This change:

* Removes "options PERFCTRS", the associated includes, and the associated
ifdefs. In doing so, it removes several XXXSMPs in the MI code, which is
good.

* Removes the PMC code of ARM XSCALE.

* Removes all the pmc.h files. They were all empty, except for ARM XSCALE.

* Reorders the x86 PMC code not to rely on the legacy pmc.h file. The
definitions are put in sysarch.h.

* Removes the kern/sys_pmc.c file, and along with it, the sys_pmc_control
and sys_pmc_get_info syscalls. They are marked as OBSOL in kern,
netbsd32 and rump.

* Removes the pmc_evid_t and pmc_ctr_t types.

* Removes all the associated man pages. The sets are marked as obsolete.
 1.108 06-Jan-2018  kamil branches: 1.108.2; 1.108.4;
Revert vadvise(2) removal

This system call was used in legacy Lisp code, that was inherited to modern
age and still compiled against supported compat layers (e.g. in clisp,
oaklisp, Franz Lisp).

It used to instruct the kernel about paging policy (G/C aware, flush etc).

Newly compiled code (assuming that it will detect vadvise()) will use the
libc stub for vadvise(). The headers for this interface are gone.

vadvise(2) could be marked as COMPAT_80, but as long as we support ultrix,
sunos or aout68k ABI, don't bother with this.

Requested by <mrg>
 1.107 19-Dec-2017  kamil Drop SYS_vadvise

The (o)vadvise syscall is dummy since the beginning of NetBSD.

It is an obsolete remnant from the old UNIX.

Sponsored by <The NetBSD Foundation>
 1.106 08-Dec-2017  christos regen
XXX: pullup-8
 1.105 10-May-2017  riastradh regen
 1.104 13-Jan-2017  christos branches: 1.104.6;
regen
 1.103 02-Nov-2016  pgoyette Forgot these two generated files...
 1.102 03-Jul-2016  christos branches: 1.102.2;
regen
 1.101 06-May-2016  pooka regen syscall files
 1.100 23-Apr-2016  christos regen
 1.99 03-Apr-2016  christos regen
 1.98 03-Apr-2016  christos regen
 1.97 02-Apr-2016  christos regen
 1.96 26-Jan-2016  pooka regen syscall files
 1.95 03-Dec-2015  pgoyette Regen
 1.94 01-Dec-2015  pgoyette Regen
 1.93 30-Nov-2015  pgoyette Finish the regen - some of the files from sys/kern got committed
accidentally with the fix to makesyscalls.sh - sorry about that.
 1.92 30-Nov-2015  pgoyette Regen for 7.99.23
 1.91 10-Oct-2015  pgoyette Regen
 1.90 24-Sep-2015  christos regen
 1.89 24-Aug-2015  pooka regen
 1.88 18-Jun-2015  pooka regen
 1.87 13-May-2015  pgoyette Regenerate
 1.86 10-May-2015  pgoyette Regen for changes related to separation of compat_sysv syscalls into a
separate module.
 1.85 09-May-2015  pgoyette Regen again, this time without the extra word in the "generated from" line.
 1.84 09-May-2015  pgoyette Regen from syscalls.master
 1.83 08-Apr-2015  justin regen after syscall update
 1.82 07-Mar-2015  christos regen
 1.81 22-Feb-2015  christos PR/49684: Pierre Pronchery: readlinkat(2) return type is wrong.
 1.80 10-Feb-2015  christos regen
 1.79 25-Jul-2014  dholland branches: 1.79.2; 1.79.4;
Regen for fdiscard and posix_fallocate.
 1.78 24-Jul-2014  pooka regen
 1.77 23-Jul-2014  pooka regen
 1.76 12-Jun-2014  joerg Regenerate
 1.75 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 5:

regen syscalls to eliminate weak aliases and link-time initialization
 1.74 09-Apr-2014  pooka regen
 1.73 14-Mar-2014  pooka branches: 1.73.2;
regen: time/timer related syscalls for rump kernels
 1.72 11-Dec-2013  pooka reregengen
 1.71 09-Dec-2013  pooka regen
 1.70 09-Dec-2013  pooka regen
 1.69 09-Dec-2013  pooka regen
 1.68 09-Dec-2013  pooka regen
 1.67 17-Oct-2013  njoly Regen for mknodat(2) device argument type change.
 1.66 10-Sep-2013  pooka regen
 1.65 03-Sep-2013  pooka regen
 1.64 30-Aug-2013  pooka regen
 1.63 15-Aug-2013  pooka regen
 1.62 29-Mar-2013  christos branches: 1.62.4;
regen
 1.61 02-Oct-2012  christos regen
 1.60 03-Aug-2012  pooka branches: 1.60.2;
reregen
 1.59 03-Aug-2012  pooka regen
 1.58 20-Jul-2012  pooka reregen
 1.57 20-Jul-2012  pooka regen
 1.56 08-Mar-2012  joerg Implement sem_timedwait.
 1.55 11-Feb-2012  martin branches: 1.55.2;
Regen for posix_spawn
 1.54 01-Feb-2012  dholland Regen syscalls with proper id info.
 1.53 01-Feb-2012  dholland Change the syscall API for quotas over to the new non-proplib one.

- struct vfs_quotactl_args -> struct quotactl_args
- add sys/stdint.h to sys/quotactl.h for clean userland build
- install sys/quotactl.h in /usr/include
- update set lists for same
- add new marshalling code in libquota
- add new unmarshalling code in vfs_syscalls.c
- discard proplib interpreter code in vfs_quotactl.c
- add dispatching code for the 14 quotactl ops in vfs_quotactl.c
- mark the proplib quotactl syscall obsolete
- add a new syscall number for the new quotactl syscall
- change the name of the syscall to __quotactl()
- remove the decl of the old quotactl from quota/quotaprop.h
- add a decl of the new quotactl to sys/quotactl.h
- update the libc build
- update ktruss
- remove proplib marshalling code from libquota
- update copy of syscall table in gdb ppc sources
- hack rumphijack to accomodate new quotactl name (as I recall,
pooka wanted such a name change to simplify something, but I
don't really see what/how)

This change appears to require a kernel version bump for rumpish
reasons.
 1.52 08-Aug-2011  manu branches: 1.52.2; 1.52.6;
regen
 1.51 18-Jul-2011  drochner regen after *setxattr constification
 1.50 26-Jun-2011  christos regen
 1.49 08-Mar-2011  pooka regen: include rumpclient syscall headers from source tree instead of host
 1.48 06-Mar-2011  bouyer merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.47 22-Feb-2011  pooka omstart
 1.46 22-Feb-2011  pooka regenagain: make returning off_t work (without breaking other return
types on some archs)
 1.45 22-Feb-2011  pooka unregen
 1.44 22-Feb-2011  pooka regen: cast rval to return type instead of just using rval[0]
 1.43 21-Feb-2011  pooka regen: NOERR syscalls
 1.42 21-Feb-2011  pooka regen: preadv/pwritev
 1.41 21-Feb-2011  pooka regen: always explicitly set errno (fixes some apps)
 1.40 21-Feb-2011  pooka commit regen for int -> pid_t fix
 1.39 17-Jan-2011  pooka branches: 1.39.2;
regen: more compat syscalls
 1.38 17-Jan-2011  pooka regen: rework rump syscall stubs (see makesyscalls.sh log for details)
 1.37 10-Jan-2011  christos branches: 1.37.2;
regen
 1.36 30-Dec-2010  pooka regen for comments
 1.35 30-Dec-2010  pooka regen: SYCALL_NOSYS in rump_sysent[]
 1.34 17-Nov-2010  pooka regen: optimize local syscall path a bit
 1.33 11-Nov-2010  pooka +posix_fadvise
 1.32 04-Nov-2010  pooka Refactor the sysproxy code so that rumpuser contains only the server side.
 1.31 07-Sep-2010  pooka regen: getcwd
 1.30 06-Sep-2010  pooka regen: umask
 1.29 30-Aug-2010  pooka regen: rump syscalls for kern_prot interfaces
 1.28 30-Aug-2010  pooka Empty commit to show makesyscalls.sh rev 1.99 didn't change anything (yet).
 1.27 19-Jul-2010  pooka Regen syscalls to get compat header included.
 1.26 10-Jun-2010  pooka regen: ksem syscalls
 1.25 04-Jun-2010  njoly Regen for pathconf/fpathconf rumpification.
 1.24 17-May-2010  njoly Regen for multiple inclusion protection.
 1.23 11-May-2010  pooka regen: _RUMPKERNEL -> _KERNEL
 1.22 27-Apr-2010  pooka regen: rump_enosys -> sys_nomodule for modular system calls
 1.21 21-Apr-2010  pooka regen: get/setrlimit
 1.20 05-Mar-2010  pooka branches: 1.20.2;
regen (for lfs syscalls #ifdef removal).
 1.19 26-Nov-2009  pooka branches: 1.19.2;
regen for rump_sys_pipe()
 1.18 26-Nov-2009  pooka regen: retval -> retval[2]
 1.17 26-Nov-2009  pooka regen: rump_sys_modctl()
 1.16 13-Oct-2009  pooka regen: fix rump varargs syscalls prototypes
 1.15 21-Jul-2009  pooka regen: fh syscalls
 1.14 15-May-2009  pooka regen: removal of pad arguments from the public interfaces
 1.13 29-Mar-2009  pooka branches: 1.13.2;
regen
 1.12 28-Mar-2009  pooka regen: new syscalls
 1.11 19-Mar-2009  pooka regen: rump_sys_mount()
 1.10 18-Mar-2009  pooka regen: kevent and kqueue
 1.9 20-Feb-2009  pooka regen: make syscalls through a table
 1.8 26-Jan-2009  pooka branches: 1.8.2;
regen for new syscalls
 1.7 23-Jan-2009  pooka regen: int *error is dead.
 1.6 14-Jan-2009  pooka branches: 1.6.2; 1.6.4;
regen: internal prototype for rump_syscalls.c
 1.5 13-Jan-2009  pooka Regen. We now have compat __RENAME(). E.g. what was previously
rump_sys___stat50() is now rump_sys_stat() from the code.
 1.4 11-Jan-2009  tsutsui Regen to pull proper "created from" revision strings.
 1.3 11-Jan-2009  christos merge christos-time_t
 1.2 26-Nov-2008  pooka regen
 1.1 17-Nov-2008  pooka branches: 1.1.2;
regen
 1.1.2.5 29-Dec-2008  christos regen
 1.1.2.4 28-Dec-2008  christos regen
 1.1.2.3 27-Dec-2008  christos merge with head.
 1.1.2.2 20-Nov-2008  christos catch up with head.
 1.1.2.1 17-Nov-2008  christos file rump_syscalls.h was added on branch christos-time_t on 2008-11-20 22:21:56 +0000
 1.6.4.4 28-Apr-2009  skrll Sync with HEAD.
 1.6.4.3 03-Mar-2009  skrll Sync with HEAD.
 1.6.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.6.4.1 14-Jan-2009  skrll file rump_syscalls.h was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.6.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.6.2.1 14-Jan-2009  mjf file rump_syscalls.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.8.2.2 23-Jul-2009  jym Sync with HEAD.
 1.8.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.13.2.7 09-Oct-2010  yamt sync with head
 1.13.2.6 11-Aug-2010  yamt sync with head.
 1.13.2.5 11-Mar-2010  yamt sync with head
 1.13.2.4 19-Aug-2009  yamt sync with head.
 1.13.2.3 16-May-2009  yamt sync with head
 1.13.2.2 04-May-2009  yamt sync with head.
 1.13.2.1 29-Mar-2009  yamt file rump_syscalls.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.19.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.19.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.19.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.20.2.4 21-Apr-2011  rmind sync with head
 1.20.2.3 05-Mar-2011  rmind sync with head
 1.20.2.2 03-Jul-2010  rmind sync with head
 1.20.2.1 30-May-2010  rmind sync with head
 1.37.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.39.2.2 05-Mar-2011  bouyer Sync with HEAD
 1.39.2.1 20-Jan-2011  bouyer Snapshot of work in progress on a modernised disk quota system:
- new quotactl syscall (versionned for backward compat), which takes
as parameter a path to a mount point, and a prop_dictionary
(in plistref format) describing commands and arguments.
For each command, status and data are returned as a prop_dictionary.
quota commands features will be added to take advantage of this,
exporting quota data or getting quota commands as plists.

- new on disk-format storage (all 64bit wide), integrated to metadata for
ffs (and playing nicely with wapbl).
Quotas are enabled on a ffs filesystem via superblock flags.
tunefs(8) can enable or disable quotas.
On a quota-enabled filesystem, fsck_ffs(8) will track per-uid/gid
block and inode usages, and will check and update quotas in Pass 6.
quota usage and limits are stored in unliked files (one for users,
one for groups)l fsck_ffs(8) will create the files if needed, or
free them if needed. This means that after enabling or disabling
quotas on a filesystem; a fsck_ffs(8) run is required.
quotacheck(8) is not needed any more, on a unclean shutdown
fsck or journal replay will take care of fixing quotas.
newfs(8) can create a ready-to-mount quota-enabled filesystem
(superblock flags are set and quota inodes are created).
Other new features or semantic changes:
- default quota datas, applied to users or groups which don't already
have a quota entry
- per-user/group grace time (instead of a filesystem global one)
- 0 really means "nothing allowed at all", not "no limit".
If you want "no limit", set the limit to UQUAD_MAX (tools will
understand "unlimited" and "-")

A quota file is structured as follow:
it starts with a header, containing a few per-filesystem values,
and the default quota limits.
Quota entries are linked together as a simple list, each entry has a
pointer (as an offset withing the file) to the next.
The header has a pointer to a list of free quota entries, and
a hash table of in-use entries. The size of the hash table depends
on the filesystem block size (header+hash table should fit in the
first block). The file is not sparse and is a multiple of
filesystem block size (when the free quota entry list is empty a new
filesystem block is allocated). quota entries to not cross
filesystem block boundaries.

In memory, the kernel keeps a cache of recently used quota entries
as a reference to the block number, and offset withing the block.
The quota entry itself is keept in the buf cache.

fsck_ffs(8), tunefs(8) and newfs(8) supports are completed (with
related atf tests :)
The kernel can update disk usage and report it via quotactl(2).

Todo: enforce quotas limits (limits are not checked by kernel yet)
update repquota, edquota and rpc.rquotad to the new world
implement compat_50_quotactl ioctl.
update quotactl(2) man page

fsck_ffs required fixes so that allocating new blocks or inodes will
properly update the superblock and cg sumaries. This was not an issue up
to now because superblock and cg sumaries check happened last, but now
allocations or frees can happen in pass 6.
 1.52.6.2 11-Mar-2012  mrg sync to latest -current
 1.52.6.1 18-Feb-2012  mrg merge to -current.
 1.52.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.52.2.2 30-Oct-2012  yamt sync with head
 1.52.2.1 17-Apr-2012  yamt sync with head
 1.55.2.1 14-Apr-2015  msaitoh Pull up following revision(s) (requested by khorben in ticket #1264):

include/unistd.h 1.144
sys/kern/init_sysent.c regen
sys/kern/syscalls.c regen
sys/kern/syscalls.master 1.272
sys/rump/include/rump/rump_syscalls.h regen
sys/rump/librump/rumpkern/rump_syscalls.c regen
sys/sys/syscall.h regen
sys/sys/syscallargs.h regen
sys/compat/netbds32/netbsd32_syscall.h regen
sys/compat/netbds32/netbsd32_syscallargs.h regen
sys/compat/netbds32/netbsd32_syscalls.c regen
sys/compat/netbds32/netbsd32_sysent.c regen
sys/compat/netbsd32/syscalls.master 1.102

Fix return type of the readlinkat(2) syscall. PR#49684.
 1.60.2.4 03-Dec-2017  jdolecek update from HEAD
 1.60.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.60.2.2 23-Jun-2013  tls resync from head
 1.60.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.62.4.2 18-May-2014  rmind sync with head
 1.62.4.1 28-Aug-2013  rmind sync with head
 1.73.2.1 10-Aug-2014  tls Rebase.
 1.79.4.9 05-Dec-2016  skrll Sync with HEAD
 1.79.4.8 09-Jul-2016  skrll Sync with HEAD
 1.79.4.7 29-May-2016  skrll Sync with HEAD
 1.79.4.6 22-Apr-2016  skrll Sync with HEAD
 1.79.4.5 19-Mar-2016  skrll Sync with HEAD
 1.79.4.4 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.79.4.3 22-Sep-2015  skrll Sync with HEAD
 1.79.4.2 06-Jun-2015  skrll Sync with HEAD
 1.79.4.1 06-Apr-2015  skrll Sync with HEAD
 1.79.2.1 24-Feb-2015  martin regen
 1.102.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.102.2.1 04-Nov-2016  pgoyette Sync with HEAD
 1.104.6.1 11-May-2017  pgoyette Sync with HEAD
 1.108.4.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.108.4.1 10-Jun-2019  christos Sync with HEAD
 1.108.2.9 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.108.2.8 28-Jul-2018  pgoyette Sync with HEAD
 1.108.2.7 18-Apr-2018  pgoyette Regen
 1.108.2.6 27-Mar-2018  pgoyette Regen
 1.108.2.5 25-Mar-2018  pgoyette Regen
 1.108.2.4 17-Mar-2018  pgoyette Regen
 1.108.2.3 16-Mar-2018  pgoyette Regen
 1.108.2.2 15-Mar-2018  pgoyette Regen
 1.108.2.1 10-Mar-2018  pgoyette Regen
 1.112.2.1 25-Jan-2020  ad Sync with head.
 1.114.2.1 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.123.2.3 14-Dec-2020  thorpej Regen for timerfd.
 1.123.2.2 14-Dec-2020  thorpej Regen for eventfd(2).
 1.123.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.130.2.1 02-Aug-2025  perseant Sync with HEAD
 1.13 15-Aug-2013  pooka Explicitly produce an error if the mythical kernel folk try to include
this header.
 1.12 15-Aug-2013  pooka Give includers a way to say "yea I'll just deal with the type
compat on my own, thank you very many"
 1.11 15-Aug-2013  pooka type compat header list doesn't need to be autogenerated
 1.10 17-Jan-2013  pooka branches: 1.10.2;
Helps ELF platforms if I spell __ELF__ correctly ...
 1.9 17-Jan-2013  pooka For non-NetBSD, assume leading underscore with !__ELF__ (fixes PE-COFF)
 1.8 20-Jul-2012  pooka branches: 1.8.2;
add simple compat for other OSs to be able to use rump_syscalls.h
 1.7 17-Jan-2011  pooka branches: 1.7.4; 1.7.8;
Missed pselect50 in previous (file was open in editor ... d0h).
Add mknod50 and fhstat50 too.
 1.6 17-Jan-2011  pooka use newstyle rump syscall compat
 1.5 04-Jan-2011  pooka branches: 1.5.2;
Add NetBSD 5 compat wrapping for *utimes()
 1.4 30-Aug-2010  pooka do 5.0 compat for fstat
 1.3 26-Jul-2010  pooka branches: 1.3.2; 1.3.4;
Add select to list on compat syscalls. Makes some code work for
me with a nb5 userland without having to compile with -g ;)
 1.2 19-Jul-2010  pooka Add some forward declarations used by the interfaces.
 1.1 19-Jul-2010  pooka add rump_syscalls_compat.h
 1.3.4.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.3.4.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.3.4.1 26-Jul-2010  uebayasi file rump_syscalls_compat.h was added on branch uebayasi-xip on 2010-08-17 06:47:58 +0000
 1.3.2.3 09-Oct-2010  yamt sync with head
 1.3.2.2 11-Aug-2010  yamt sync with head.
 1.3.2.1 26-Jul-2010  yamt file rump_syscalls_compat.h was added on branch yamt-nfs-mp on 2010-08-11 22:55:05 +0000
 1.5.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.7.8.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.8.2 23-Jan-2013  yamt sync with head
 1.7.8.1 30-Oct-2012  yamt sync with head
 1.7.4.2 05-Mar-2011  rmind sync with head
 1.7.4.1 17-Jan-2011  rmind file rump_syscalls_compat.h was added on branch rmind-uvmplock on 2011-03-05 20:56:12 +0000
 1.8.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.8.2.1 25-Feb-2013  tls resync with head
 1.10.2.1 28-Aug-2013  rmind sync with head
 1.1 31-Jan-2016  pooka branches: 1.1.2; 1.1.18;
Move "shotgun approach to rump syscalls" from rump.h to a separate header,
sort of as a hint that relying on those macros is not necessarily the
way you want to do things in 2016. Include things from rump.h for compat
for the time being, though.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 31-Jan-2016  jdolecek file rump_syscallshotgun.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 19-Mar-2016  skrll Sync with HEAD
 1.1.2.1 31-Jan-2016  skrll file rump_syscallshotgun.h was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.38 21-Aug-2018  christos regen
 1.37 27-May-2017  bouyer branches: 1.37.8; 1.37.10;
merge the bouyer-socketcan branch to HEAD.

CAN stands for Controller Area Network, a broadcast network used
in automation and automotive fields. For example, the NMEA2000 standard
developped for marine devices uses a CAN network as the link layer.

This is an implementation of the linux socketcan API:
https://www.kernel.org/doc/Documentation/networking/can.txt
you can also see can(4).

This adds a new socket family (AF_CAN) and protocol (PF_CAN),
as well as the canconfig(8) utility, used to set timing parameter of
CAN hardware. Also inclued is a driver for the CAN controller
found in the allwinner A20 SoC (I tested it with an Olimex lime2 board,
connected with PIC18-based CAN devices).

There is also the canloop(4) pseudo-device, which allows to use
the socketcan API without CAN hardware.

At this time the CANFD part of the linux socketcan API is not implemented.
Error frames are not implemented either. But I could get the cansend and
canreceive utilities from the canutils package to build and run with minimal
changes. tcpudmp(8) can also be used to record frames, which can be
decoded with etherreal.
 1.36 02-Feb-2016  pooka branches: 1.36.4;
regen
 1.35 02-Feb-2016  pooka periodic regen (because having new rcs ids in comments is most useful)
 1.34 07-Jan-2016  pooka regen
 1.33 15-Sep-2015  pooka regen
 1.32 10-Sep-2015  pooka regen
 1.31 10-Sep-2015  pooka regen
 1.30 18-Dec-2013  pooka branches: 1.30.6;
regen
 1.29 11-Dec-2013  pooka regen
 1.28 09-Dec-2013  pooka regen
 1.27 13-Nov-2013  pooka regen
 1.26 15-Aug-2013  pooka regen
 1.25 15-Aug-2013  pooka regen
 1.24 15-Aug-2013  pooka revert pending fix: MAXNAMLEN causes trouble
 1.23 15-Aug-2013  pooka regen
 1.22 25-Jun-2013  stacktic branches: 1.22.2;
regen
 1.21 01-Jun-2013  stacktic regen
 1.20 08-May-2013  pooka regen
 1.19 08-May-2013  pooka regen
 1.18 30-Apr-2013  pooka Translate error codes between the hypervisor and rump kernel.
 1.17 13-Dec-2012  pooka regen
 1.16 21-Nov-2012  pooka regen
 1.15 18-Nov-2012  pooka regen
 1.14 18-Nov-2012  pooka regen
 1.13 18-Nov-2012  pooka regen
 1.12 18-Nov-2012  pooka regen
 1.11 20-Jul-2012  pooka branches: 1.11.2;
regen
 1.10 01-Feb-2011  pooka branches: 1.10.4;
regen for O_DIRECTORY
 1.9 28-Jul-2010  hannken branches: 1.9.2; 1.9.4;
Regen. LK_INTERLOCK is gone.
 1.8 02-Jul-2010  hannken Regen. LK_TYPEMASK and LK_RELEASE are gone.
 1.7 24-Jun-2010  hannken Regen. LK_EXCLOTHER has gone.
 1.6 18-Jun-2010  hannken Regen (LK_CANRECURSE is gone).
 1.5 03-Nov-2009  pooka branches: 1.5.2; 1.5.4;
regen: add AB_* macros
 1.4 09-Oct-2009  pooka regen
 1.3 17-Nov-2008  pooka branches: 1.3.4; 1.3.6; 1.3.10;
regen
 1.2 17-Nov-2008  pooka regen
 1.1 17-Nov-2008  pooka regen
 1.3.10.4 11-Aug-2010  yamt sync with head.
 1.3.10.3 11-Mar-2010  yamt sync with head
 1.3.10.2 04-May-2009  yamt sync with head.
 1.3.10.1 17-Nov-2008  yamt file rumpdefs.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.3.6.2 19-Jan-2009  skrll Sync with HEAD.
 1.3.6.1 17-Nov-2008  skrll file rumpdefs.h was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.3.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.3.4.1 17-Nov-2008  mjf file rumpdefs.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.5.4.2 05-Mar-2011  rmind sync with head
 1.5.4.1 03-Jul-2010  rmind sync with head
 1.5.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.9.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.9.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.10.4.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.10.4.3 23-Jan-2013  yamt sync with head
 1.10.4.2 16-Jan-2013  yamt sync with (a bit old) head
 1.10.4.1 30-Oct-2012  yamt sync with head
 1.11.2.5 03-Dec-2017  jdolecek update from HEAD
 1.11.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.11.2.3 23-Jun-2013  tls resync from head
 1.11.2.2 25-Feb-2013  tls resync with head
 1.11.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.22.2.2 18-May-2014  rmind sync with head
 1.22.2.1 28-Aug-2013  rmind sync with head
 1.30.6.3 28-Aug-2017  skrll Sync with HEAD
 1.30.6.2 19-Mar-2016  skrll Sync with HEAD
 1.30.6.1 22-Sep-2015  skrll Sync with HEAD
 1.36.4.1 15-Jan-2017  bouyer Initial commit of a CAN socket layer, compatible with linux SoccketCAN
(but incomplete). Based on work from Robert Swindells.
 1.37.10.1 10-Jun-2019  christos Sync with HEAD
 1.37.8.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.8 21-Aug-2018  christos regen
 1.7 19-Apr-2018  christos branches: 1.7.2;
s/static inline/static __inline/g for consistency.
 1.6 02-Feb-2016  pooka branches: 1.6.16;
regen
 1.5 02-Feb-2016  pooka periodic regen (because having new rcs ids in comments is most useful)
 1.4 15-Sep-2015  pooka regen
 1.3 10-Sep-2015  pooka regen
 1.2 10-Sep-2015  pooka regen
 1.1 18-Dec-2013  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
regen
 1.1.12.1 22-Sep-2015  skrll Sync with HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 18-Dec-2013  tls file rumperr.h was added on branch tls-maxphys on 2014-08-20 00:04:39 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 18-Dec-2013  yamt file rumperr.h was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 18-Dec-2013  rmind file rumperr.h was added on branch rmind-smpnet on 2014-05-18 17:46:17 +0000
 1.6.16.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.6.16.1 22-Apr-2018  pgoyette Sync with HEAD
 1.7.2.1 10-Jun-2019  christos Sync with HEAD
 1.5 21-Aug-2018  christos regen
 1.4 19-Apr-2018  christos branches: 1.4.2;
s/static inline/static __inline/g for consistency.
 1.3 02-Feb-2016  pooka branches: 1.3.16; 1.3.18;
regen
 1.2 02-Feb-2016  pooka periodic regen (because having new rcs ids in comments is most useful)
 1.1 15-Sep-2015  pooka branches: 1.1.2;
regen
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 15-Sep-2015  skrll file rumperrno2host.h was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.3.18.2 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.3.18.1 22-Apr-2018  pgoyette Sync with HEAD
 1.3.16.2 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 02-Feb-2016  jdolecek file rumperrno2host.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.4.2.1 10-Jun-2019  christos Sync with HEAD
 1.1 02-Feb-2016  pooka branches: 1.1.2; 1.1.18;
Add capability to attach external memory to files on rumpfs. This
feature is useful e.g. for tight-memory systems where you don't need
block storage, but still need to provide some data via files.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 02-Feb-2016  jdolecek file rumpfs.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 19-Mar-2016  skrll Sync with HEAD
 1.1.2.1 02-Feb-2016  skrll file rumpfs.h was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.18 26-Jan-2016  pooka regen rump kernel interfaces for header change.
(they were already manually edited for a prior commit, so not much change)
 1.17 25-Apr-2014  pooka branches: 1.17.4;
regen
 1.16 25-Apr-2014  pooka regen for etfs move from rumpvfs to rumpkern
 1.15 10-Mar-2014  pooka branches: 1.15.2;
rump_getversion() does not require a thread context, so make it a straight
call instead of being wrapped around rump_pub_getversion().
 1.14 07-Mar-2013  pooka branches: 1.14.6;
regen
 1.13 02-Jan-2011  pooka branches: 1.13.8; 1.13.18;
regen: rump_lwproc_rfork
 1.12 21-Nov-2010  pooka regen: rump_reboot is gone
 1.11 17-Nov-2010  pooka regen: -rump_pub_syscall
 1.10 27-Oct-2010  pooka regen:
- rump_sysproxy
+ rump_syscall
 1.9 01-Sep-2010  pooka regen: new lwp/proc interfaces
 1.8 19-Jul-2010  pooka regen from ages ago (to get rcsid consistent)
 1.7 14-Apr-2010  pooka regen: kauth_cred_t -> struct kauth_cred *
 1.6 05-Mar-2010  pooka branches: 1.6.2; 1.6.4;
regen for rump_module interface change
 1.5 26-Nov-2009  pooka branches: 1.5.2;
regen: rump_kernelfsym_load()
 1.4 15-Oct-2009  pooka regen: lwp interface changes
 1.3 15-Oct-2009  pooka regen: scheduling points in rump_pub wrappers
 1.2 14-Oct-2009  pooka regen: put all public interfaces created by ifspec into a rump_pub namespace
 1.1 14-Oct-2009  pooka generate rump local interfaces
 1.5.2.4 06-Nov-2010  uebayasi Sync with HEAD.
 1.5.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.5.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.5.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.6.4.2 05-Mar-2011  rmind sync with head
 1.6.4.1 30-May-2010  rmind sync with head
 1.6.2.4 09-Oct-2010  yamt sync with head
 1.6.2.3 11-Aug-2010  yamt sync with head.
 1.6.2.2 11-Mar-2010  yamt sync with head
 1.6.2.1 05-Mar-2010  yamt file rumpkern_if_pub.h was added on branch yamt-nfs-mp on 2010-03-11 15:04:37 +0000
 1.13.18.3 03-Dec-2017  jdolecek update from HEAD
 1.13.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.13.18.1 23-Jun-2013  tls resync from head
 1.13.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.14.6.1 18-May-2014  rmind sync with head
 1.15.2.1 10-Aug-2014  tls Rebase.
 1.17.4.1 19-Mar-2016  skrll Sync with HEAD
 1.6 26-Jan-2016  pooka regen rump kernel interfaces for header change.
(they were already manually edited for a prior commit, so not much change)
 1.5 03-Jul-2013  pooka branches: 1.5.8;
regen
 1.4 20-Oct-2009  pooka branches: 1.4.4; 1.4.14; 1.4.24; 1.4.28;
regen
 1.3 15-Oct-2009  pooka regen: scheduling points in rump_pub wrappers
 1.2 14-Oct-2009  pooka regen: put all public interfaces created by ifspec into a rump_pub namespace
 1.1 14-Oct-2009  pooka generate rump local interfaces
 1.4.28.1 28-Aug-2013  rmind sync with head
 1.4.24.2 03-Dec-2017  jdolecek update from HEAD
 1.4.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.2 11-Mar-2010  yamt sync with head
 1.4.4.1 20-Oct-2009  yamt file rumpnet_if_pub.h was added on branch yamt-nfs-mp on 2010-03-11 15:04:37 +0000
 1.5.8.1 19-Mar-2016  skrll Sync with HEAD
 1.117 24-Sep-2023  martin PR kern/57626: instead of an (arbitrary) FAKE_PAGE_SHIFT (and always
using 4k pages), query the hypervisor for the real page size of the host
kernel and use that for architectures that do not have compile time
constant page sizes.
 1.116 22-Mar-2020  pgoyette Teach rump to process __link_set_evcnts entries. (Second part of
fix for PR kern/55088)
 1.115 27-Dec-2017  ozaki-r branches: 1.115.4;
Distinguish spin mutex and adaptive mutex on rump kernels for LOCKDEBUG

Formerly rump kernels treated the two types of mutexes as both adaptive for
LOCKDEBUG for some reasons.

Now we can detect violations of mutex restrictions on rump kernels such as
taking an adaptive mutex with holding a spin mutex as well as normal kernels.
 1.114 03-Jan-2015  pooka branches: 1.114.10;
limit visibility of sysproxy calls to where they are needed
 1.113 18-Jun-2014  alnsn branches: 1.113.4;
Revert last change. This is not the right place for rumpuser_sync_icache().
 1.112 17-Jun-2014  alnsn Implement rumpuser_sync_icache hypercall.
 1.111 27-Apr-2014  pooka weak alias removal implication: rumpuser_dl_globalsym() can now sleep
with the fishes.
 1.110 16-Mar-2014  pooka branches: 1.110.2;
remove unnecesary verbosity: s/RUMP_CURLWP_MODEL/RUMP_CURLWP/
 1.109 15-Mar-2014  pooka Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.108 15-May-2013  pooka branches: 1.108.2;
Looks like I'm done revamping, so bump interface version to 17,
where it will hopefully stay for all eternity (unless some snafus
are discovered before NetBSD 7).
 1.107 15-May-2013  pooka Add a generalized rumpuser_syncfd() call which allows the caller
to request a sync or a barrier for fd.
 1.106 15-May-2013  pooka Pass off_t over the hypercall interface as int64_t to avoid potential
problems in setups where off_t doesn't want to be 64bit.

I'm already excitedly waiting for 128bit off_t and _LARGE_LARGE_FILES
 1.105 15-May-2013  pooka Pass enums over the hypercall interface as ints to avoid some
pathological scenarios from arising in setups where enums might be
of a different size in the rump kernel and hypervisor.
 1.104 15-May-2013  pooka Add RUMPUSER_LWP_CLEAR instead of overloading RUMPUSER_LWP_SET.
This simplifies some alternative hypervisor implementations.
 1.103 02-May-2013  pooka Ok, maybe using int64 for nanoseconds in the (sec,nsec) tuple was
a bit too future-proof. I think long is enough there (let's just
hope nobody redefines "nano"). Also, make seconds signed just in
case someone wants their clock to be in 1901.
 1.102 02-May-2013  pooka Push rwlock upgrade and downgrade into the hypervisor where there's
at least a chance to implement them with minimal fuss.
 1.101 02-May-2013  pooka Inform the rump kernel hypervisor of valid thread contexts so
that the implementation can allocate and release storage for them
in an optimal fashion, if necessary.
 1.100 30-Apr-2013  pooka Flip parameter order in the clock hypercalls to make them consistent
with everything else wrt in/out parameters.
 1.99 30-Apr-2013  pooka In kthread_create(), pass the priority and cpu index down to the
rump kernel hypervisor (though the current implementation doesn't take
advantage of them).
 1.98 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.97 29-Apr-2013  pooka Reduce hypercalls related to reading to essentially an amalgamation
of readv and preadv. ditto for writing. Hypercalls are so seldomly
used that it doesn't justify 3x the calls for syntactic sugar.
 1.96 29-Apr-2013  pooka remove accidentally committed bit
 1.95 29-Apr-2013  pooka Replace the various "get info from hypervisor" interfaces with one
unified rumpuser_getparam(), and make it return a plist. The
contents can come e.g. from the env or a config file. Make
identifiers starting with an underscore denote system identifiers
which must be implemented by hypervisor. (yea, j/k about the plist bit)
 1.94 29-Apr-2013  pooka The fsync hypercall is now used only with close, so get rid of it.
rumpuser_bio() should do the necessary syncing.
 1.93 29-Apr-2013  pooka Make the rump kernel upcalls which were previous available only to
the sysproxy module available for the entire hypervisor.
 1.92 29-Apr-2013  pooka regroup calls a bit and sprinkle comments
no functional change for a change
 1.91 29-Apr-2013  pooka RUMPUSER_OPEN_DIRECT is no longer necessary
 1.90 29-Apr-2013  pooka changes to bio hypercalls, part 3/n:

retire the filemmap/memsync hypercalls, they're no longer used
 1.89 29-Apr-2013  pooka Rework how the bio hypercalls work, part 1/n:

Reduce the set of hypercalls to one: "do block i/o". This not only
eliminates a lot of pseudo-duplicate code, it also gives the
hypervisor a lot more freedom on how to optimize the i/o.
 1.88 28-Apr-2013  pooka Improve the time-related hypercalls so that's it's possible to
sleep until an absolute time on the host's monotonic clock (should
something like that be supported).
 1.87 28-Apr-2013  pooka make the file monitoring hypercalls private to shmif
 1.86 28-Apr-2013  pooka The ioctl hypercall is used only by the usb host controller driver,
so make it exclusive to that component. I'm happy to see it gone.
 1.85 27-Apr-2013  pooka make the random hypercall more generic
 1.84 27-Apr-2013  pooka roll mutex init hypercalls into one (one of them already took a flag anyway)
 1.83 27-Apr-2013  pooka move struct lwp forward decl before its first use. otherwise it's rather
pointless. some whitespace landscaping too.
 1.82 27-Apr-2013  pooka wrap unportable register_t with a long. should do it in the front
of the house too, but at least this is a start.
 1.81 27-Apr-2013  pooka * treat kern_malloc.c as an unreal allocator (it's so lightweight)
* get rid of the rumpuser_realloc() hypercall
* pass size to rumpuser_free()
 1.80 27-Apr-2013  pooka Let the includer figure out where to get stdint or equivalent from.
 1.79 27-Apr-2013  pooka rumpuser_poll() is used only by sockin, so make the hypercall
private to that component.
 1.78 27-Apr-2013  pooka * integrate rumpuser_getversion() with the hypervisor initialization
* rename some identifiers to better match reality
 1.77 27-Apr-2013  pooka remove prototypes for interfaces no longer provided
 1.76 27-Apr-2013  pooka Try to make sure that the appropriate calls to mutex_enter() takes
a spin mutex (i.e. does not relinquish cpu context while trying to
take the mutex).

Bump the hypercall interface version number. I'll be doing a bunch
of other cleanups to simplify the interface for the benefit of
alternative hypervisor implementations. I'll be riding this bump
and doing a second one only after I'm finished with all of the
changes.
 1.75 08-Mar-2013  pooka Ensure that rump kernel component constructors from the main object
get processed. This applies to ones which were linked statically.
Unfortunately, that's where it got a bit tricky, since the dlsym()
interface searches the handle and all its dependencies. For the main
object the list of dependencies includes all the dynamic rump kernel
components that were included when the binary is linked. So, a long
story short, make only one pass through the objects to harvest all the
component entries, weed out the dupes, and initialize components from
an in-memory dupe-free list when so requested.
 1.74 01-Mar-2013  pooka limit use of rumpuser.h to where it is meant to be used from
 1.73 14-Sep-2012  pooka Do not assume that O_FOO flags have matching values in the rump kernel
and hypervisor.
 1.72 15-Mar-2012  joerg branches: 1.72.2;
Add __printflike attribution to use vprintf and friends with an argument
as format string.
 1.71 28-Nov-2011  tls branches: 1.71.2;
Remove arc4random() and arc4randbytes() from the kernel API. Replace
arc4random() hacks in rump with stubs that call the host arc4random() to
get numbers that are hopefully actually random (arc4random() keyed with
stack junk is not). This should fix some of the currently failing anita
tests -- we should no longer generate duplicate "random" MAC addresses in
the test environment.
 1.70 29-Aug-2011  joerg branches: 1.70.2;
Use __dead
 1.69 23-May-2011  joerg Mark rumpuser_exit and rumpuser_thread_exit as dead.
 1.68 21-Mar-2011  pooka Update copyright statements.

no functional change.
 1.67 08-Mar-2011  pooka Nuke all threads belonging to a process calling exec before allowing
the exec handshake to return.

In addition to being The Right Thing To Do, fixes some nasty
conditions for CLOEXEC fd's (or at least does so in theory, I
couldn't create any problems although I tried).
 1.66 15-Feb-2011  pooka Add an "exec" callback for the proxy code. The client can now
notify the rump kernel of an exec having taken place.
 1.65 28-Jan-2011  pooka Pass the value of getprogname() from the client to the server and
record it in p_comm. This is nice for things like sockstat, since
they now display the client command name:

pain-rustique:43:~> rump.sockstat
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root xulrunner- 16 0 tcp 192.168.2.114.65507 204.152.190.12.80
root xulrunner- 16 1 tcp 192.168.2.114.65501 204.152.190.12.80
root xulrunner- 16 2 tcp 192.168.2.114.65500 204.152.190.12.80
root xulrunner- 16 3 tcp 192.168.2.114.65499 204.152.190.12.80
root xulrunner- 16 5 tcp 192.168.2.114.65498 204.152.190.12.80
root xulrunner- 16 6 tcp 192.168.2.114.65497 204.152.190.12.80
root socket 62 0 tcp6 *.http *.*
root socket 62 1 tcp *.http *.*
root socket 63 0 tcp6 *.81 *.*
root socket 63 1 tcp *.81 *.*
 1.64 22-Jan-2011  pooka In case sys_reboot() was called by a remote client, put the response
in the socket before we shut down. This way the response to the
syscall travels to the caller and they know things worked correctly
instead of having to just assume.
 1.63 14-Jan-2011  pooka branches: 1.63.2; 1.63.4;
Support SIGMODEL_RAISE for non-local clients.
 1.62 12-Jan-2011  pooka add spop_procexit
 1.61 02-Jan-2011  pooka There is a use case where preserving the parent's fd table is
relevant, so to accommodate that change rump_lwproc_newproc() to
rump_lwproc_rfork(). The new interface has the rfork() fd table
semantics. The equivalent of rump_lwproc_newproc() is
rump_lwproc_rfork(RUMP_RFCFDG).
 1.60 30-Dec-2010  pooka Allow rump kernel to call dlsym(RTLD_DEFAULT).
 1.59 16-Dec-2010  pooka Print a banner a connecting client. The banner contains rump sp
protocol version, os name, os revision and machine.
 1.58 12-Dec-2010  pooka add rumpuser_sp_fini, which surpringly is the opposite of rumpuser_sp_init
 1.57 01-Dec-2010  pooka implement mutex_owner()
 1.56 01-Dec-2010  pooka rumpuser interface changed
 1.55 01-Dec-2010  pooka Track lwp as the rumpuser mutex owner instead of pthread_t (this
is done in rumpuser for simplicity, since on the kernel side things
we assume we have only one pointer of space). As a side-effect,
we can no longer know if the current thread is holding on to a
mutex locked without curlwp context (basically all mutexes inited
outside of mutex_init()). The only thing that called rumpuser_mutex_held()
for a non-kmutex was the giant lock. So, instead implement recursive
locking for the giant lock in the rump kernel and get rid of the
now-unused recursive pthread mutex in the hypercall interface.
 1.54 30-Nov-2010  pooka Require server to be explicitly initialized with rump_init_server(url).
Also, add rump_daemonize_begin() / rump_daemonize_end() to help
with the "can't daemon() after pthread_create()" problem. Applications
could accomplish the same, but since it's such a common operation,
provide a little help.
 1.53 25-Nov-2010  pooka *facepalm*, adjust remote copyinstr to work in cases where the end
of the max copyin extends to an unmapped page.

Noticed, as usual, by tests.
 1.52 22-Nov-2010  pooka Support physio for remote processes.
==> add support for remote vmspace vmapbuf/vunmapbuf
==> add proper support for copyin/out_vmspace
==> add support for remote vmspace uvm_io
==> add support for non-curproc rumpuser_sp_copyin/out
==> store remote context in vm_map->pmap instead of
pthread_specificdata

In short, makes read/write of most (all?) block devices work from
a remote rump client via rump syscalls.
 1.51 19-Nov-2010  pooka Pass routines necessary for multithreaded operation down to rumpuser_sp.
 1.50 04-Nov-2010  pooka bump rumpuser version
 1.49 04-Nov-2010  pooka Refactor the sysproxy code so that rumpuser contains only the server side.
 1.48 01-Nov-2010  pooka Missed a few symbols in previous ...

Also, reorganize rumpuser header inclusion to make sure problem is
caught already by the compiler.
 1.47 01-Nov-2010  pooka Make librumpuser linkage once again free of librump.

problem pointed out by <he>
 1.46 27-Oct-2010  pooka Start rework of system call proxying over socket ("sysproxy").
This incarnation is written in the user namespace as opposed to
the previous one which was done in kernel namespace. Also, rump
does all the handshaking now instead of excepting an application
to come up with the user namespace socket.

There's still a lot to do, including making code "a bit" more
robust, actually running different clients in a different process
inside the kernel and splitting the client side library from librump.
I'm committing this now so that I don't lose it, plus it generally
works as long as you don't use it in unexcepted ways: i've tested
ifconfig(8), route(8), envstat(8) and sysctl(8).
 1.45 09-Jun-2010  pooka Version rumpuser ABI with a lightweight mechanism.
 1.44 09-Jun-2010  pooka Add the ability to specify a preferred address the "map anon memory"
hypercall.
 1.43 01-Jun-2010  pooka Don't pass "canfail" down to rumpuser_malloc -- there's quite little
we can do with that info way down there. Instead, pass alignment.
Implement rumpuser_malloc() with posix_memalign().
 1.42 31-May-2010  pooka Support KTHREAD_JOINABLE/kthread_join(). Also fixes earlier bug
where all pthreads were created non-detached.
 1.41 18-May-2010  pooka Make it possible to use the scheduler lock as the rumpuser condvar
interlock. This is applicable in cases where the actual interlock
is the CPU the currently running thread is scheduled on. Borrowing
the scheduler lock as the mutex mandated by pthread_cond_wait()
does away with need to have an additional mutex. This both optimizes
runtime execution and simplifies code, as the extra lock typically
lead to quite some trickeries to avoid the dungeon collapsing due
to zaps from the wand of deadlock.
 1.40 28-Apr-2010  pooka Add rumpuser interface to fetch number of host cpus.
 1.39 21-Apr-2010  pooka Add rumpuser_kill, which sends a signal to a host process.
 1.38 05-Mar-2010  pooka branches: 1.38.2;
During bootstrap, process all modinfos in a DSO in one go. Get
rid of dependency tricks, since they are no longer necessary.
 1.37 01-Mar-2010  pooka Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.36 26-Feb-2010  pooka Rename rumpuser_dl_module_bootstrap() to rumpuser_dl_bootstrap(),
since it hasn't been involved only with modules for quite a while now.
 1.35 23-Dec-2009  stacktic branches: 1.35.2;
Fixed ukfs build on non-NetBSD system.
 1.34 26-Nov-2009  pooka Build the kernel symbol table in rumpuser bootstrap and feed it to
the rump kernel. After this change it is possible to use the
in-kernel linker and rump_sys_modctl() to load kernel modules at
runtime.

Previously loading modules at runtime was possible only through
using the host system ld.so. Note that it is still preferred to
use shared libs when possible, since they are PIC and n virtual
kernels will only require one copy of r/o segments. However, when
there is no access to source code, a binary kernel module is the
only thing available ...
 1.33 19-Nov-2009  pooka Create async i/o "interrupt" thread from within the kernel so that
it gets a kernel thread context.
 1.32 11-Nov-2009  pooka Make rumpuser_cv_timedwait take two int64's instead timespec to
uncouple it from the timespec layout. Also, change return value
to zero for "timeout didn't expire" and non-zero for "timeout
expired". This decouples the interface from errno assignments.
 1.31 24-Oct-2009  pooka Pass modinit to rumpuser_dl_module_bootstrap() as a function pointer
to avoid linker rump -> rumpuser -> rump dependency which is annoying
redundancy in static linking.
 1.30 24-Oct-2009  pooka unused rumpuser_realpath is really dead
 1.29 15-Oct-2009  pooka Add prototype for wait operation variants which do not drop any
resources (because they should be holding any in the first place).
 1.28 09-Oct-2009  pooka Provide an interface for reboot.
 1.27 24-Sep-2009  pooka Load modules from all components which are linked into a rump binary
with -lrumpcomponent. Previously only the first library component
containing a module would get loaded automatically.
 1.26 21-Sep-2009  pooka <sys/stdint.h> is a non-standard header, so include it only from
kernel code (where it will be included from the NetBSD kernel source
tree). Use <stdint.h> in userland namespace, i.e. when compiling
librumpuser.
 1.25 02-Sep-2009  pooka add rumpuser_net_setsockopt()
 1.24 10-Jun-2009  pooka Add rumpuser_dprintf(), which can be used as a "safe" debug print
routine -- the kernel printf does a lot of crud which is not always
nice and dandy especially when debugging locks.
 1.23 27-Apr-2009  pooka branches: 1.23.2;
* expand syncing logic into rumpuser, since it has more freedom on
how to do it (e.g. fsync_range)
* hash out O_DIRECT support. it's the fastest method of safely operating
on a file, but we can't currently autodetect support, so it's not
enabled by default
* sprinkle more event counters
 1.22 26-Apr-2009  pooka Bump maximum number of outstanding async i/o's to 1024, 128 can
fill up really fast.
 1.21 07-Apr-2009  pooka Make it possible to use VCHR devices again.
 1.20 18-Mar-2009  pooka * allow to specify PROT_READ/PROT_WRITE when mmapping a file
* add msync
 1.19 28-Feb-2009  pooka Remember to commit the rumpuser bits necessary for if_shm: mmaping
a file and waiting for writes to it.
 1.18 27-Feb-2009  pooka decouple rumpuser gettime from struct timeval
 1.17 26-Feb-2009  pooka decouple from host struct iovec
 1.16 26-Feb-2009  pooka Make rumpuser stat and nanosleep independent of the host system
stat and timespec definitions.
 1.15 07-Feb-2009  pooka branches: 1.15.2;
Make the clock interrupt tick based on absolute time instead of
relative time. This prevents drifting. Also, keep track of time
within userspace, so we do not have to make a syscall to get the
clock value. This is approximately 7 times cheaper, but on the
negative side is limited to the clock interrupt frequency.
 1.14 06-Feb-2009  pooka Rip out the rwlock spl emulation code. It never did anything useful
except keep my feet warm by consuming an insane amount of cpu
cycles -- in rump our current "cpu" context is never interrupted
& we have MULTIPROCESSOR.

(itch i'm scratching: it made the networking stack 10-20% slower.
this is one of the places where fast code actually matters)
 1.13 27-Jan-2009  pooka Instead of dynamically allocating and freeing the rumpuser async
io descriptors, just allocate an array statically and be happy.

Fixes a problem found by Arnaud Ysmal where a descriptor would be
allocated using kmem_alloc(9) and free'd using free(3).
 1.12 26-Jan-2009  pooka Support getsockname() and getpeername() in rumpuser.

XXX: all these rumpuser_net routines passing sockaddr should use proplib.
 1.11 23-Jan-2009  pooka rumpuser_seterrno() to set errno from a rump kernel context.
 1.10 23-Jan-2009  pooka Support mmapping anonymous memory.
XXX: this is mainly for the benefit of correct alignment, but
MAP_ALIGNED() is not portable.
 1.9 08-Jan-2009  pooka branches: 1.9.2; 1.9.4;
missed this in previous commit:

Explicitly pass a pointer to the kernel lock/unlock routines in
rumpuser init instead of magically relying on the linker giving us
the symbols.

thanks to uwe for pointing out
 1.8 07-Jan-2009  pooka more namespacing: rua -> rumpuser_aio
 1.7 07-Jan-2009  pooka Rename _rumpuser_malloc to rumpuser__malloc so that all exported
rumpuser symbols start with "rumpuser".
(no major bumps or compat will be provided)
 1.6 05-Jan-2009  pooka g/c unused rumpuser bswap routines
 1.5 02-Jan-2009  pooka Include kernel printf routines in rump instead of relying on the
magic libc symbol. This also allows to bid farewell to subr_prf2.c
and merge the contents back to subr_prf.c. The host kernel bridging
is now done via rumpuser_putchar().
 1.4 17-Dec-2008  pooka If available (__NetBSD__), use pthread_setname_np() to set the
thread name for kthread_create().
 1.3 25-Nov-2008  pooka Support PRU_BIND / PRU_LISTEN / PRU_ACCEPT in sockin.
 1.2 18-Nov-2008  pooka Pass biodone() to rumpuser as a callback instead of hardcoding it.
Also, explicitly init rumpuser async io thread.
 1.1 17-Nov-2008  pooka Move rump public headers to include/rump
 1.9.4.4 28-Apr-2009  skrll Sync with HEAD.
 1.9.4.3 03-Mar-2009  skrll Sync with HEAD.
 1.9.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.9.4.1 08-Jan-2009  skrll file rumpuser.h was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.9.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.9.2.1 08-Jan-2009  mjf file rumpuser.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.15.2.2 23-Jul-2009  jym Sync with HEAD.
 1.15.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.23.2.6 11-Aug-2010  yamt sync with head.
 1.23.2.5 11-Mar-2010  yamt sync with head
 1.23.2.4 16-Sep-2009  yamt sync with head
 1.23.2.3 20-Jun-2009  yamt sync with head
 1.23.2.2 04-May-2009  yamt sync with head.
 1.23.2.1 27-Apr-2009  yamt file rumpuser.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.35.2.3 06-Nov-2010  uebayasi Sync with HEAD.
 1.35.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.35.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.38.2.5 31-May-2011  rmind sync with head
 1.38.2.4 21-Apr-2011  rmind sync with head
 1.38.2.3 05-Mar-2011  rmind sync with head
 1.38.2.2 03-Jul-2010  rmind sync with head
 1.38.2.1 30-May-2010  rmind sync with head
 1.63.4.2 17-Feb-2011  bouyer Sync with HEAD
 1.63.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.63.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.70.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.70.2.2 30-Oct-2012  yamt sync with head
 1.70.2.1 17-Apr-2012  yamt sync with head
 1.71.2.1 05-Apr-2012  mrg sync to latest -current.
 1.72.2.4 03-Dec-2017  jdolecek update from HEAD
 1.72.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.72.2.2 23-Jun-2013  tls resync from head
 1.72.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.108.2.1 18-May-2014  rmind sync with head
 1.110.2.1 10-Aug-2014  tls Rebase.
 1.113.4.1 06-Apr-2015  skrll Sync with HEAD
 1.114.10.1 13-Jan-2018  snj Pull up following revision(s) (requested by ozaki-r in ticket #495):
lib/librumpuser/rumpfiber.c: revision 1.13
lib/librumpuser/rumpuser_pth.c: revision 1.46
lib/librumpuser/rumpuser_pth_dummy.c: revision 1.18
sys/kern/kern_condvar.c: revision 1.40
sys/kern/kern_lock.c: revision 1.161
sys/kern/kern_mutex.c: revision 1.68
sys/kern/kern_rwlock.c: revision 1.48
sys/rump/include/rump/rumpuser.h: revision 1.115
sys/rump/librump/rumpkern/locks.c: revision 1.76-1.79
Apply C99-style struct initialization to lockops_t
--
Tweak LOCKDEBUG macros (NFC)
--
Distinguish spin mutex and adaptive mutex on rump kernels for LOCKDEBUG
Formerly rump kernels treated the two types of mutexes as both adaptive for
LOCKDEBUG for some reasons.
Now we can detect violations of mutex restrictions on rump kernels such as
taking an adaptive mutex with holding a spin mutex as well as normal kernels.
--
rump: check if the mutex is surely owned by the caller in mutex_exit
Unlocking a not-owned mutex wasn't detected well (it could detect if the mutex
is not held by anyone but that's not enough). Let's check it (the check is the
same as normal kernel's mutex).
If LOCKDEBUG is enabled, give the check over LOCKDEBUG because it can provide
better debugging information.
 1.115.4.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.15 23-Feb-2020  ad UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.14 26-Jan-2016  pooka branches: 1.14.18; 1.14.24;
regen rump kernel interfaces for header change.
(they were already manually edited for a prior commit, so not much change)
 1.13 23-Apr-2015  pooka regen for COMPAT_50 sprinklage
 1.12 25-Apr-2014  pooka branches: 1.12.4;
regen
 1.11 25-Apr-2014  pooka regen for etfs move from rumpvfs to rumpkern
 1.10 18-Nov-2012  pooka branches: 1.10.2; 1.10.10;
regen
 1.9 30-Nov-2010  pooka branches: 1.9.8; 1.9.18;
regen: checksavecn is gone
 1.8 07-Sep-2010  pooka regen: rcvp/cdir interfaces go byebye in favour of rump syscalls
 1.7 19-Jul-2010  pooka regen: stat compat syscalls moved
 1.6 26-May-2010  pooka regen: rump_vfs_mount_print
 1.5 20-May-2010  pooka regen: rump_vfs_extattrctl
 1.4 14-Apr-2010  pooka regen: kauth_cred_t -> struct kauth_cred *
 1.3 15-Oct-2009  pooka branches: 1.3.2; 1.3.4; 1.3.6;
regen: scheduling points in rump_pub wrappers
 1.2 14-Oct-2009  pooka regen: put all public interfaces created by ifspec into a rump_pub namespace
 1.1 14-Oct-2009  pooka generate rump local interfaces
 1.3.6.2 05-Mar-2011  rmind sync with head
 1.3.6.1 30-May-2010  rmind sync with head
 1.3.4.4 09-Oct-2010  yamt sync with head
 1.3.4.3 11-Aug-2010  yamt sync with head.
 1.3.4.2 11-Mar-2010  yamt sync with head
 1.3.4.1 15-Oct-2009  yamt file rumpvfs_if_pub.h was added on branch yamt-nfs-mp on 2010-03-11 15:04:37 +0000
 1.3.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.3.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.3.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.9.18.3 03-Dec-2017  jdolecek update from HEAD
 1.9.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.18.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.9.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.9.8.1 16-Jan-2013  yamt sync with (a bit old) head
 1.10.10.1 10-Aug-2014  tls Rebase.
 1.10.2.1 18-May-2014  rmind sync with head
 1.12.4.2 19-Mar-2016  skrll Sync with HEAD
 1.12.4.1 06-Jun-2015  skrll Sync with HEAD
 1.14.24.1 29-Feb-2020  ad Sync with head.
 1.14.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.41 15-Jun-2023  hannken Regen.
 1.40 18-Jul-2022  thorpej branches: 1.40.4;
Regen for:

Make kqueue event status for vnodes shareable, and for stacked file systems
like nullfs, make the upper vnode share that status with the lower vnode.

And, lo, NetBSD 9.99.99.

Fixes PR kern/56713.
 1.39 03-May-2022  hannken Regen.
 1.38 03-May-2022  hannken Regen.
 1.37 20-Oct-2021  thorpej Regen for:

Overhaul of the EVFILT_VNODE kevent(2) filter:

- Centralize vnode kevent handling in the VOP_*() wrappers, rather than
forcing each individual file system to deal with it (except VOP_RENAME(),
because VOP_RENAME() is a mess and we currently have 2 different ways
of handling it; at least it's reasonably well-centralized in the "new"
way).
- Add support for NOTE_OPEN, NOTE_CLOSE, NOTE_CLOSE_WRITE, and NOTE_READ,
compatible with the same events in FreeBSD.
- Track which kevent notifications clients are interested in receiving
to avoid doing work for events no one cares about (avoiding, e.g.
taking locks and traversing the klist to send a NOTE_WRITE when
someone is merely watching for a file to be deleted, for example).

In support of the above:

- Add support in vnode_if.sh for specifying PRE- and POST-op handlers,
to be invoked before and after vop_pre() and vop_post(), respectively.
Basic idea from FreeBSD, but implemented differently.
- Add support in vnode_if.sh for specifying CONTEXT fields in the
vop_*_args structures. These context fields are used to convey information
between the file system VOP function and the VOP wrapper, but do not
occupy an argument slot in the VOP_*() call itself. These context fields
are initialized and subsequently interpreted by PRE- and POST-op handlers.
- Version VOP_REMOVE(), uses the a context field for the file system to report
back the resulting link count of the target vnode. Return this in tmpfs,
udf, nfs, chfs, ext2fs, lfs, and ufs.

NetBSD 9.99.92.
 1.36 02-Jul-2021  dholland Regen.
 1.35 29-Jun-2021  dholland Regen.
 1.34 16-May-2020  christos branches: 1.34.6;
Add ACL support for FFS. From FreeBSD.
 1.33 23-Feb-2020  ad Regen.
 1.32 01-Dec-2019  ad branches: 1.32.2;
Regen for VOP_LOCK & LK_UPGRADE/LK_DOWNGRADE.
 1.31 12-Jul-2017  hannken branches: 1.31.6;
Regen.
 1.30 04-Jun-2017  hannken Operations fstrans_start() and fstrans_start_nowait() now always
use FSTRANS_SHARED as lock type so remove the lock type argument.

File system state FSTRANS_SUSPENDING is now unused so remove it.

Regen vnode_if files.

Ride 8.99.1 less than a hour ago.
 1.29 04-Jun-2017  hannken Regen.
 1.28 26-May-2017  riastradh branches: 1.28.2;
regen
 1.27 26-Apr-2017  riastradh regen
 1.26 16-Apr-2017  riastradh regen to confirm no functional change
 1.25 16-Apr-2017  riastradh regen
 1.24 15-Apr-2017  riastradh regen to confirm no functional change
 1.23 11-Apr-2017  riastradh regen to confirm no functional change
 1.22 11-Apr-2017  riastradh regen
 1.21 22-Feb-2017  hannken Regen.
 1.20 26-Jan-2016  pooka branches: 1.20.2; 1.20.4;
regen vnode interfaces
 1.19 20-Apr-2015  riastradh regen for good measure (no functional change)
 1.18 20-Apr-2015  riastradh Make VOP_LINK return directory still locked and referenced.

Ride 7.99.10 bump.
 1.17 25-Jul-2014  dholland branches: 1.17.4;
Regen for VOP_FALLOCATE/VOP_FDISCARD.
 1.16 07-Feb-2014  hannken branches: 1.16.2;
Change vnode operation lookup to return the resulting vnode *vpp unlocked.
Change cache_lookup() to return an unlocked vnode.

Discussed on tech-kern@

Welcome to 6.99.31
 1.15 23-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to return
the resulting vnode *vpp unlocked.

Discussed on tech-kern@

Welcome to 6.99.30
 1.14 17-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to keep the
directory node dvp locked on return.

Discussed on tech-kern@

Welcome to 6.99.29
 1.13 17-Jul-2013  pooka regen
 1.12 08-Aug-2011  manu branches: 1.12.2; 1.12.12; 1.12.16; 1.12.24;
regen
 1.11 11-Jul-2011  hannken Change VOP_BWRITE() to take a vnode as its first argument like all other
VOPs do. Layered file systems no longer have to modify bp->b_vp and run
into trouble when an async VOP_BWRITE() uses the wrong vnode.

- change all occurences of VOP_BWRITE(bp) to VOP_BWRITE(bp->b_vp, bp).
- remove layer_bwrite().
- welcome to 5.99.55

Adresses PR kern/38762 panic: vwakeup: neg numoutput

No objections from tech-kern@.
 1.10 04-Jul-2011  manu Add a flag to VOP_LISTEXTATTR(9) so that the vnode interface can tell the
filesystem in which format extended attribute shall be listed.

There are currently two formats:
- NUL-terminated strings, used for listxattr(2), this is the default.
- one byte length-pprefixed, non NUL-terminated strings, used for
extattr_list_file(2), which is obtanined by setting the
EXTATTR_LIST_PREFIXLEN flag to VOP_LISTEXTATTR(9)

This approach avoid the need for converting the list back and forth, except
in libperfuse, since FUSE uses NUL-terminated strings, and the kernel may
have requested EXTATTR_LIST_PREFIXLEN.
 1.9 06-Mar-2011  bouyer merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.8 24-Jun-2010  hannken branches: 1.8.2; 1.8.4;
Clean up vnode lock operations pass 2:

VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.

Welcome to 5.99.32.

Discussed on tech-kern.
 1.7 14-Apr-2010  pooka regen: rump vnodeif went on a diet
 1.6 14-Apr-2010  pooka regenefactor for comment and whitespace changes
 1.5 10-Apr-2010  pooka regen: remove unused vdesc_transports
 1.4 15-Oct-2009  pooka branches: 1.4.2; 1.4.4;
regen: scheduling points
 1.3 29-Sep-2009  pooka regen: remove VNODE_LOCKDEBUG
 1.2 17-Nov-2008  pooka branches: 1.2.4; 1.2.6; 1.2.10;
reregen to get those most important rcsids right
 1.1 17-Nov-2008  pooka regen
 1.2.10.4 11-Aug-2010  yamt sync with head.
 1.2.10.3 11-Mar-2010  yamt sync with head
 1.2.10.2 04-May-2009  yamt sync with head.
 1.2.10.1 17-Nov-2008  yamt file rumpvnode_if.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.2.6.2 19-Jan-2009  skrll Sync with HEAD.
 1.2.6.1 17-Nov-2008  skrll file rumpvnode_if.h was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.2.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.4.1 17-Nov-2008  mjf file rumpvnode_if.h was added on branch mjf-devfs2 on 2009-01-17 13:29:35 +0000
 1.4.4.3 21-Apr-2011  rmind sync with head
 1.4.4.2 03-Jul-2010  rmind sync with head
 1.4.4.1 30-May-2010  rmind sync with head
 1.4.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.4.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.8.4.1 20-Jan-2011  bouyer Snapshot of work in progress on a modernised disk quota system:
- new quotactl syscall (versionned for backward compat), which takes
as parameter a path to a mount point, and a prop_dictionary
(in plistref format) describing commands and arguments.
For each command, status and data are returned as a prop_dictionary.
quota commands features will be added to take advantage of this,
exporting quota data or getting quota commands as plists.

- new on disk-format storage (all 64bit wide), integrated to metadata for
ffs (and playing nicely with wapbl).
Quotas are enabled on a ffs filesystem via superblock flags.
tunefs(8) can enable or disable quotas.
On a quota-enabled filesystem, fsck_ffs(8) will track per-uid/gid
block and inode usages, and will check and update quotas in Pass 6.
quota usage and limits are stored in unliked files (one for users,
one for groups)l fsck_ffs(8) will create the files if needed, or
free them if needed. This means that after enabling or disabling
quotas on a filesystem; a fsck_ffs(8) run is required.
quotacheck(8) is not needed any more, on a unclean shutdown
fsck or journal replay will take care of fixing quotas.
newfs(8) can create a ready-to-mount quota-enabled filesystem
(superblock flags are set and quota inodes are created).
Other new features or semantic changes:
- default quota datas, applied to users or groups which don't already
have a quota entry
- per-user/group grace time (instead of a filesystem global one)
- 0 really means "nothing allowed at all", not "no limit".
If you want "no limit", set the limit to UQUAD_MAX (tools will
understand "unlimited" and "-")

A quota file is structured as follow:
it starts with a header, containing a few per-filesystem values,
and the default quota limits.
Quota entries are linked together as a simple list, each entry has a
pointer (as an offset withing the file) to the next.
The header has a pointer to a list of free quota entries, and
a hash table of in-use entries. The size of the hash table depends
on the filesystem block size (header+hash table should fit in the
first block). The file is not sparse and is a multiple of
filesystem block size (when the free quota entry list is empty a new
filesystem block is allocated). quota entries to not cross
filesystem block boundaries.

In memory, the kernel keeps a cache of recently used quota entries
as a reference to the block number, and offset withing the block.
The quota entry itself is keept in the buf cache.

fsck_ffs(8), tunefs(8) and newfs(8) supports are completed (with
related atf tests :)
The kernel can update disk usage and report it via quotactl(2).

Todo: enforce quotas limits (limits are not checked by kernel yet)
update repquota, edquota and rpc.rquotad to the new world
implement compat_50_quotactl ioctl.
update quotactl(2) man page

fsck_ffs required fixes so that allocating new blocks or inodes will
properly update the superblock and cg sumaries. This was not an issue up
to now because superblock and cg sumaries check happened last, but now
allocations or frees can happen in pass 6.
 1.8.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.12.24.1 23-Jul-2013  riastradh sync with HEAD
 1.12.16.2 18-May-2014  rmind sync with head
 1.12.16.1 28-Aug-2013  rmind sync with head
 1.12.12.2 03-Dec-2017  jdolecek update from HEAD
 1.12.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.16.2.1 10-Aug-2014  tls Rebase.
 1.17.4.2 28-Aug-2017  skrll Sync with HEAD
 1.17.4.1 06-Jun-2015  skrll Sync with HEAD
 1.20.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.20.2.2 26-Apr-2017  pgoyette Sync with HEAD
 1.20.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.28.2.2 25-Jul-2017  snj regen for ticket 130
 1.28.2.1 04-Jun-2017  bouyer pullup the following revisions, requested by hannken in ticket #2:
src/share/man/man9/fstrans.9 1.25
src/sys/kern/vfs_mount.c 1.66
src/sys/kern/vfs_subr.c 1.468
src/sys/kern/vfs_trans.c 1.46
src/sys/kern/vfs_vnode.c 1.94, 1.95, 1.96
src/sys/kern/vnode_if.c 1.105, 1.106
src/sys/kern/vnode_if.sh 1.65, 1.66
src/sys/kern/vnode_if.src 1.76
src/sys/miscfs/genfs/genfs_io.c 1.69
src/sys/miscfs/genfs/genfs_vnops.c 1.196, 1.197
src/sys/miscfs/genfs/layer_extern.h 1.40
src/sys/miscfs/genfs/layer_vfsops.c 1.51
src/sys/miscfs/genfs/layer_vnops.c 1.67
src/sys/miscfs/nullfs/null_vnops.c 1.42
src/sys/miscfs/overlay/overlay_vnops.c 1.24
src/sys/miscfs/umapfs/umap_vnops.c 1.60
src/sys/rump/include/rump/rumpvnode_if.h 1.29, 1.30
src/sys/rump/librump/rumpkern/emul.c 1.182
src/sys/rump/librump/rumpvfs/rumpvnode_if.c 1.29, 1.30
src/sys/sys/fstrans.h 1.11
src/sys/sys/vnode.h 1.278
src/sys/sys/vnode_if.h 1.100, 1.101
src/sys/sys/vnode_impl.h 1.14, 1.15
src/sys/ufs/lfs/lfs_pages.c 1.12

Vnode state, lock and fstrans cleanup:
- Rename vnode state "VS_ACTIVE" to "VS_LOADED" and add synthetic
state "VS_ACTIVE" to assert a loaded vnode with usecount > 0.

- Redo FSTRANS in vnode_if.c and use it for VOP_LOCK and VOP_UNLOCK.

- Cleanup the genfs lock operations.

- Make "struct vnode_impl" member "vi_lock" a krwlock_t again.

- Remove the lock type argument from fstrans_start and
fstrans_start_nowait,
remove now unused FSTRANS state "FSTRANS_SUSPENDING".
 1.31.6.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.32.2.1 29-Feb-2020  ad Sync with head.
 1.34.6.1 01-Aug-2021  thorpej Sync with HEAD.
 1.40.4.1 21-Jun-2023  martin Regen (ticket #197)
 1.2 25-Apr-2014  pooka obsolete the installed <rump/scsitest.h> header and make it private
to tests/dev/scsipi
 1.1 24-Aug-2010  pooka branches: 1.1.2; 1.1.4; 1.1.10; 1.1.14; 1.1.24; 1.1.28; 1.1.38;
whoopsie, need to commit this as part of scsitest
 1.1.38.1 10-Aug-2014  tls Rebase.
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.10.2 05-Mar-2011  rmind sync with head
 1.1.10.1 24-Aug-2010  rmind file scsitest.h was added on branch rmind-uvmplock on 2011-03-05 20:56:12 +0000
 1.1.4.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.4.1 24-Aug-2010  uebayasi file scsitest.h was added on branch uebayasi-xip on 2010-10-22 07:22:47 +0000
 1.1.2.2 09-Oct-2010  yamt sync with head
 1.1.2.1 24-Aug-2010  yamt file scsitest.h was added on branch yamt-nfs-mp on 2010-10-09 03:32:43 +0000
 1.1 26-Jan-2016  pooka branches: 1.1.2; 1.1.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 26-Jan-2016  jdolecek file README was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 19-Mar-2016  skrll Sync with HEAD
 1.1.2.1 26-Jan-2016  skrll file README was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.1 26-Jan-2016  pooka branches: 1.1.2; 1.1.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 26-Jan-2016  jdolecek file dev.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 19-Mar-2016  skrll Sync with HEAD
 1.1.2.1 26-Jan-2016  skrll file dev.h was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.5 01-Nov-2020  christos PR/55664: Ruslan Nikolaev: Fix:

1. A race condition (bug) in sys/rump/librump/rumpkern/intr.c since
rumpuser_cv_signal() is called without holding a mutex
2. sleepq is implemented using a single (global) conditional
variable; that should be done per each sleepq separately
 1.4 10-Aug-2018  pgoyette branches: 1.4.12;
Allow syscall_establish() to install new syscalls when the existing
entry-point is either sys_nomodule or sys_nosys. Update the
makesyscalls.sh script to create a const array of bits to allow
syscall_disestablish() to properly restore the original entry-point.
Update all the initializers of struct emul to initialize the pointer
to the bit array struct emul.

XXX Regen of all files created by makesyscalls.sh will come soon,
XXX followed by a kernel version bump (since struct emul is being
XXX modified).

This commit should address PR kern/45781 and also removes the need
for the work-around for that PR in file

sys/arch/usermode/modules/syscallemu/syscallemu.c
 1.3 08-Feb-2016  pooka branches: 1.3.2; 1.3.18; 1.3.20; 1.3.22;
Allocate struct cpu_info dynamically. Saves quite a lot of BSS in the
common case and reduces rump kernel memory requirements by 10% or more
in really tiny deployments.
 1.2 02-Feb-2016  pooka Remove leading spaces.

Bet you didn't see that one coming.
 1.1 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3.22.1 10-Jun-2019  christos Sync with HEAD
 1.3.20.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.3.18.2 03-Dec-2017  jdolecek update from HEAD
 1.3.18.1 08-Feb-2016  jdolecek file kern.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.3.2.2 19-Mar-2016  skrll Sync with HEAD
 1.3.2.1 08-Feb-2016  skrll file kern.h was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.4.12.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.2 26-Jan-2016  pooka branches: 1.2.2; 1.2.18;
regen rump kernel interfaces for header change.
(they were already manually edited for a prior commit, so not much change)
 1.1 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2.18.2 03-Dec-2017  jdolecek update from HEAD
 1.2.18.1 26-Jan-2016  jdolecek file kern_if.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.2.2.2 19-Mar-2016  skrll Sync with HEAD
 1.2.2.1 26-Jan-2016  skrll file kern_if.h was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.2 03-Sep-2022  thorpej Garbage-collect the remaining vestiges of netisr.
 1.1 26-Jan-2016  pooka branches: 1.1.2; 1.1.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 26-Jan-2016  jdolecek file net.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 19-Mar-2016  skrll Sync with HEAD
 1.1.2.1 26-Jan-2016  skrll file net.h was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.2 26-Jan-2016  pooka branches: 1.2.2; 1.2.18;
regen rump kernel interfaces for header change.
(they were already manually edited for a prior commit, so not much change)
 1.1 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2.18.2 03-Dec-2017  jdolecek update from HEAD
 1.2.18.1 26-Jan-2016  jdolecek file net_if.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.2.2.2 19-Mar-2016  skrll Sync with HEAD
 1.2.2.1 26-Jan-2016  skrll file net_if.h was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.1 26-Jan-2016  pooka branches: 1.1.2; 1.1.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 26-Jan-2016  jdolecek file vfs.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.1.2.2 19-Mar-2016  skrll Sync with HEAD
 1.1.2.1 26-Jan-2016  skrll file vfs.h was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.3 23-Feb-2020  ad UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.2 26-Jan-2016  pooka branches: 1.2.2; 1.2.18; 1.2.22; 1.2.28;
regen rump kernel interfaces for header change.
(they were already manually edited for a prior commit, so not much change)
 1.1 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2.28.1 29-Feb-2020  ad Sync with head.
 1.2.22.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.2.18.2 03-Dec-2017  jdolecek update from HEAD
 1.2.18.1 26-Jan-2016  jdolecek file vfs_if.h was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.2.2.2 19-Mar-2016  skrll Sync with HEAD
 1.2.2.1 26-Jan-2016  skrll file vfs_if.h was added on branch nick-nhusb on 2016-03-19 11:30:36 +0000
 1.6 03-Jun-2015  pooka implement bus_dmamem_free()

from Robert Millan <rmh@freebsd.org> via rumpkernel-users
 1.5 14-Apr-2014  pooka branches: 1.5.4;
Add a vacookie to busdma_segment, for potential help with bus_dmamem_map()
 1.4 04-Apr-2014  pooka branches: 1.4.2;
make tags and handles long
 1.3 23-Sep-2013  pooka +BUS_DMA_TAG_IS_VALID
 1.2 22-Sep-2013  pooka Make dma_tag_t a bit more useful.

XXX: this header should definitely not exist, but given that it does,
let's use it to make life easier. The implication of its existence is
that x86 port rump kernel components are not ABI-compatible with kernel
modules which use bus_space/bus_dma. I'm not sure if anyone is interested
in that...
 1.1 15-Jul-2011  dyoung branches: 1.1.2; 1.1.12; 1.1.16;
Use <sys/bus.h> not <machine/bus.h>.
 1.1.16.1 18-May-2014  rmind sync with head
 1.1.12.2 03-Dec-2017  jdolecek update from HEAD
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.2.1 10-Aug-2014  tls Rebase.
 1.5.4.1 06-Jun-2015  skrll Sync with HEAD
 1.2 04-Nov-2020  martin branches: 1.2.2;
Add turnstile_print prototype for LOCKDEBUG
 1.1 01-Nov-2020  christos PR/55664: Ruslan Nikolaev: Fix:

1. A race condition (bug) in sys/rump/librump/rumpkern/intr.c since
rumpuser_cv_signal() is called without holding a mutex
2. sleepq is implemented using a single (global) conditional
variable; that should be done per each sleepq separately
 1.2.2.2 14-Dec-2020  thorpej Sync w/ HEAD.
 1.2.2.1 04-Nov-2020  thorpej file sleeptab.h was added on branch thorpej-futex on 2020-12-14 14:38:16 +0000
 1.1 10-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Add infrastructure for kern compnents. This is meant for those
components which are too bloaty to be included in rumpkern (where
bloaty means "can be easily left out without anyone missing"), but
generally do not require the support of the dev/fs/net factions to
function. As the first one, add ksems. librumpcrypto will migrate
here too once I get my timeslice to deal with the setlists, as most
likely will tty support.
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 10-Jun-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-08-17 06:47:58 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 10-Jun-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:05 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 10-Jun-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-07-03 01:20:01 +0000
 1.14 30-Sep-2021  yamaguchi Added tests for the linear hook APIs
 1.13 22-Sep-2018  rmind Add rumpkern_nv (in-kernel RUMP libnv).
 1.12 15-Nov-2015  pooka branches: 1.12.16; 1.12.18;
Always descend into component directories for rumpdescribe.
 1.11 07-Jan-2015  pooka Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.10 02-Apr-2014  pooka branches: 1.10.6;
Put nanosleep() and folks in librump instead of maintaining them in
the separate rumpkern_time component. Keeping time-related routines
elsewhere lead to some illogical behavior if you didn't think of linking
in rumpkern_time (hands up everyone who checks the return value of
nanosleep()).

Add warnings if rumpkern_time is linked or used. I'll remove it in a
month or two instead of now since it was part of a buildrump.sh snapshot
and it's nicer if trying to use it gives a warning instead of an error
in the next snapshot.

"everything should be as modular as possible, but no more modular than that"
 1.9 14-Mar-2014  pooka Add rumpkern_time for nanosleep, clock_gettime, setitimer, etc.
 1.8 16-Nov-2013  alnsn Build and install sljit and bpfjit rump components iff ${MKSLJIT} != "no".
 1.7 16-Nov-2013  martin sljit is only available on very few architectures, so do not try to build
it on all.
 1.6 16-Nov-2013  rmind Build rumpkern_sljit and rumpnet_bpfjit; include them into the sets.
 1.5 10-Mar-2012  joerg branches: 1.5.2; 1.5.4;
P1003_1B_SEMAPHORE is no longer optional.
 1.4 05-Mar-2011  joerg branches: 1.4.2; 1.4.6; 1.4.10;
Fix spelling of MKZFS
 1.3 18-Jan-2011  haad branches: 1.3.2;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.2 05-Dec-2010  pooka branches: 1.2.2;
rumpcrypto should never have been its own faction, so finally make
it a component under kern, i.e. rumpcrypto -> rumpkern_crypto.
 1.1 05-Dec-2010  pooka Make build similar to fs, net & dev.
 1.2.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.3.2.1 05-Mar-2011  bouyer Sync with HEAD
 1.4.10.1 11-Mar-2012  mrg sync to latest -current
 1.4.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.6.1 17-Apr-2012  yamt sync with head
 1.4.2.2 05-Mar-2011  rmind sync with head
 1.4.2.1 05-Mar-2011  rmind file Makefile.rumpkerncomp was added on branch rmind-uvmplock on 2011-03-05 20:56:13 +0000
 1.5.4.1 18-May-2014  rmind sync with head
 1.5.2.2 03-Dec-2017  jdolecek update from HEAD
 1.5.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.10.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.10.6.1 06-Apr-2015  skrll Sync with HEAD
 1.12.18.1 10-Jun-2019  christos Sync with HEAD
 1.12.16.1 30-Sep-2018  pgoyette Ssync with HEAD
 1.6 25-Aug-2014  pooka Remove and obsolete rumpkern_time as a separate component.
 1.5 02-Apr-2014  pooka Put nanosleep() and folks in librump instead of maintaining them in
the separate rumpkern_time component. Keeping time-related routines
elsewhere lead to some illogical behavior if you didn't think of linking
in rumpkern_time (hands up everyone who checks the return value of
nanosleep()).

Add warnings if rumpkern_time is linked or used. I'll remove it in a
month or two instead of now since it was part of a buildrump.sh snapshot
and it's nicer if trying to use it gives a warning instead of an error
in the next snapshot.

"everything should be as modular as possible, but no more modular than that"
 1.4 05-Dec-2010  pooka branches: 1.4.8; 1.4.18; 1.4.22;
Make build similar to fs, net & dev.
 1.3 21-Jun-2010  pooka branches: 1.3.2; 1.3.4; 1.3.6;
support zlib
 1.2 14-Jun-2010  pooka Add unadulterated tty support as a rump component.
 1.1 10-Jun-2010  pooka Add infrastructure for kern compnents. This is meant for those
components which are too bloaty to be included in rumpkern (where
bloaty means "can be easily left out without anyone missing"), but
generally do not require the support of the dev/fs/net factions to
function. As the first one, add ksems. librumpcrypto will migrate
here too once I get my timeslice to deal with the setlists, as most
likely will tty support.
 1.3.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.3.6.1 21-Jun-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-08-17 06:47:59 +0000
 1.3.4.2 11-Aug-2010  yamt sync with head.
 1.3.4.1 21-Jun-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:05 +0000
 1.3.2.3 05-Mar-2011  rmind sync with head
 1.3.2.2 03-Jul-2010  rmind sync with head
 1.3.2.1 21-Jun-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-07-03 01:20:02 +0000
 1.4.22.1 18-May-2014  rmind sync with head
 1.4.18.2 03-Dec-2017  jdolecek update from HEAD
 1.4.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1 10-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Add infrastructure for kern compnents. This is meant for those
components which are too bloaty to be included in rumpkern (where
bloaty means "can be easily left out without anyone missing"), but
generally do not require the support of the dev/fs/net factions to
function. As the first one, add ksems. librumpcrypto will migrate
here too once I get my timeslice to deal with the setlists, as most
likely will tty support.
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 10-Jun-2010  uebayasi file Makefile.inc was added on branch uebayasi-xip on 2010-08-17 06:47:59 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 10-Jun-2010  yamt file Makefile.inc was added on branch yamt-nfs-mp on 2010-08-11 22:55:05 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 10-Jun-2010  rmind file Makefile.inc was added on branch rmind-uvmplock on 2010-07-03 01:20:02 +0000
 1.3 18-May-2015  pooka branches: 1.3.16;
Rewrite rules so that makesyscalls.sh will not be executed multiple
times in a parallel make.

Hopefully fixes sporadic build failures reported by Justin
 1.2 09-May-2015  pooka Make the cool syscall autogeneration feature work with the
newfangled r/o src feature.
 1.1 08-Mar-2015  christos branches: 1.1.2;
Add snippet to build syscalls.
 1.1.2.3 06-Jun-2015  skrll Sync with HEAD
 1.1.2.2 06-Apr-2015  skrll Sync with HEAD
 1.1.2.1 08-Mar-2015  skrll file Makefile.sys was added on branch nick-nhusb on 2015-04-06 15:18:29 +0000
 1.3.16.2 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 18-May-2015  jdolecek file Makefile.sys was added on branch tls-maxphys on 2017-12-03 11:39:14 +0000
 1.24 26-Jul-2024  riastradh sys/crypto/sodium: Add a self-test for IETF ChaCha20/Poly1305 AEAD.

PR kern/58468
 1.23 21-Aug-2021  christos branches: 1.23.4; 1.23.10;
rename glue.c to sodium_module.c
 1.22 21-Aug-2021  christos Add glue.c for libsodium (suggested by riastradh). Tidy up.
 1.21 27-Aug-2020  riastradh Move address hashing from init_main.c to kern_sysctl.c.

This way rump gets it automatically. Make sure blake2s is in
librumpkern.so, not just in librumpkern_crypto.so, for this to work.
 1.20 26-Aug-2020  riastradh Tidy up libsodium makefile and config fragments.
 1.19 21-Aug-2020  riastradh Disable libsodium HAVE_TI_MODE for now.

This may reduce performance by not taking advantage of 64x64->128
multiplications on some platforms, but let's worry about that later
and fix the build on the other platforms instead.
 1.18 21-Aug-2020  riastradh Split flags onto separate lines, sorted, to make diffs easier.
 1.17 21-Aug-2020  riastradh Disable -Wshadow for libsodium.

Evidently ed25519_ref10.c has a global and a local both named `d'.
 1.16 20-Aug-2020  riastradh Missed a spot -- add sys/crypto/blake2 to .PATH here.
 1.15 20-Aug-2020  riastradh Fix vestiges of libb2.
 1.14 20-Aug-2020  riastradh [ozaki-r] Changes to the kernel core for wireguard
 1.13 28-Jul-2020  riastradh Rewrite cprng_fast in terms of new ChaCha API.
 1.12 26-Jul-2020  riastradh Fix more sort order.
 1.11 26-Jul-2020  riastradh Add missing aes_ccm.c, aes_ccm_mbuf.c. Fix sort order.
 1.10 26-Jul-2020  riastradh Add chacha to rump libcrypto.
 1.9 25-Jul-2020  riastradh Remove now-unused legacy rijndael API.
 1.8 29-Jun-2020  riastradh New cgd cipher adiantum.

Adiantum is a wide-block cipher, built out of AES, XChaCha12,
Poly1305, and NH, defined in

Paul Crowley and Eric Biggers, `Adiantum: length-preserving
encryption for entry-level processors', IACR Transactions on
Symmetric Cryptology 2018(4), pp. 39--61.

Adiantum provides better security than a narrow-block cipher with CBC
or XTS, because every bit of each sector affects every other bit,
whereas with CBC each block of plaintext only affects the following
blocks of ciphertext in the disk sector, and with XTS each block of
plaintext only affects its own block of ciphertext and nothing else.

Adiantum generally provides much better performance than
constant-time AES-CBC or AES-XTS software do without hardware
support, and performance comparable to or better than the
variable-time (i.e., leaky) AES-CBC and AES-XTS software we had
before. (Note: Adiantum also uses AES as a subroutine, but only once
per disk sector. It takes only a small fraction of the time spent by
Adiantum, so there's relatively little performance impact to using
constant-time AES software over using variable-time AES software for
it.)

Adiantum naturally scales to essentially arbitrary disk sector sizes;
sizes >=1024-bytes take the most advantage of Adiantum's design for
performance, so 4096-byte sectors would be a natural choice if we
taught cgd to change the disk sector size. (However, it's a
different cipher for each disk sector size, so it _must_ be a cgd
parameter.)

The paper presents a similar construction HPolyC. The salient
difference is that HPolyC uses Poly1305 directly, whereas Adiantum
uses Poly1395(NH(...)). NH is annoying because it requires a
1072-byte key, which means the test vectors are ginormous, and
changing keys is costly; HPolyC avoids these shortcomings by using
Poly1305 directly, but HPolyC is measurably slower, costing about
1.5x what Adiantum costs on 4096-byte sectors.

For the purposes of cgd, we will reuse each key for many messages,
and there will be very few keys in total (one per cgd volume) so --
except for the annoying verbosity of test vectors -- the tradeoff
weighs in the favour of Adiantum, especially if we teach cgd to do
>>512-byte sectors.

For now, everything that Adiantum needs beyond what's already in the
kernel is gathered into a single file, including NH, Poly1305, and
XChaCha12. We can split those out -- and reuse them, and provide MD
tuned implementations, and so on -- as needed; this is just a first
pass to get Adiantum implemented for experimentation.
 1.7 29-Jun-2020  riastradh Rework AES in kernel to finally address CVE-2005-1797.

1. Rip out old variable-time reference implementation.
2. Replace it by BearSSL's constant-time 32-bit logic.
=> Obtained from commit dda1f8a0c46e15b4a235163470ff700b2f13dcc5.
=> We could conditionally adopt the 64-bit logic too, which would
likely give a modest performance boost on 64-bit platforms
without AES-NI, but that's a bit more trouble.
3. Select the AES implementation at boot-time; allow an MD override.
=> Use self-tests to verify basic correctness at boot.
=> The implementation selection policy is rather rudimentary at
the moment but it is isolated to one place so it's easy to
change later on.

This (a) plugs a host of timing attacks on, e.g., cgd, and (b) paves
the way to take advantage of CPU support for AES -- both things we
should've done a decade ago. Downside: Computing AES takes 2-3x the
CPU time. But that's what hardware support will be coming for.

Rudimentary measurement of performance impact done by:

mount -t tmpfs tmpfs /tmp
dd if=/dev/zero of=/tmp/disk bs=1m count=512
vnconfig -cv vnd0 /tmp/disk
cgdconfig -s cgd0 /dev/vnd0 aes-cbc 256 < /dev/zero
dd if=/dev/rcgd0d of=/dev/null bs=64k
dd if=/dev/zero of=/dev/rcgd0d bs=64k

The AES-CBC encryption performance impact is closer to 3x because it
is inherently sequential; the AES-CBC decryption impact is closer to
2x because the bitsliced AES logic can process two blocks at once.

Discussed on tech-kern:

https://mail-index.NetBSD.org/tech-kern/2020/06/18/msg026505.html
 1.6 05-Dec-2019  riastradh Missed a spot in the crypto/arc4 deletion.
 1.5 02-Sep-2019  riastradh Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:

- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (https://eprint.iacr.org/2018/349)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:

- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...

XXX pullup-7
XXX pullup-8
XXX pullup-9
 1.4 19-Oct-2015  pooka branches: 1.4.10; 1.4.18; 1.4.22;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 17-Jan-2014  pooka branches: 1.3.4; 1.3.6; 1.3.8; 1.3.12;
Use subr_cprng.c instead of stub implementation. Rijndael migrates from
rumpkern_crypto to rumpkern due to it being mandatory for cprng.
 1.2 14-Jan-2014  pgoyette Add the MODULE parts for blowfish and des.

Add camellia algorithm. (pooka@ says no lib version change required)
 1.1 05-Dec-2010  pooka branches: 1.1.6; 1.1.10; 1.1.20; 1.1.24;
rumpcrypto should never have been its own faction, so finally make
it a component under kern, i.e. rumpcrypto -> rumpkern_crypto.
 1.1.24.1 18-May-2014  rmind sync with head
 1.1.20.2 03-Dec-2017  jdolecek update from HEAD
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 05-Dec-2010  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:13 +0000
 1.3.12.1 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #1705):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.13 - 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

cprng.h: use static __inline for consistency with other include
headers and remove an unused function.

-

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...
 1.3.8.1 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #1705):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.13 - 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

cprng.h: use static __inline for consistency with other include
headers and remove an unused function.

-

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...
 1.3.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.4.1 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #1705):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.13 - 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

cprng.h: use static __inline for consistency with other include
headers and remove an unused function.

-

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...
 1.4.22.1 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #173):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...

XXX pullup-7
XXX pullup-8
XXX pullup-9
 1.4.18.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.4.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.4.10.1 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #1365):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.13 - 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

cprng.h: use static __inline for consistency with other include
headers and remove an unused function.

-

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...
 1.23.10.1 02-Aug-2025  perseant Sync with HEAD
 1.23.4.1 09-Oct-2024  martin Pull up following revision(s) (requested by riastradh in ticket #933):

sys/external/isc/libsodium/src/sodium_module.c: revision 1.2
sys/external/isc/libsodium/include/core.h: revision 1.2
sys/external/isc/libsodium/include/stdlib.h: revision 1.2
sys/modules/sodium/Makefile.sodmod: revision 1.4
sys/external/isc/libsodium/include/crypto_verify_16.h: revision 1.2
sys/external/isc/libsodium/include/errno.h: file removal
sys/crypto/sodium/sodium_selftest.h: revision 1.1
sys/external/isc/libsodium/include/stdint.h: revision 1.2
sys/crypto/sodium/sodium_selftest.h: revision 1.2
sys/external/isc/libsodium/include/assert.h: file removal
sys/external/isc/libsodium/conf/files.libsodium: revision 1.7
sys/rump/kern/lib/libcrypto/Makefile: revision 1.24
sys/external/isc/libsodium/src/sodium_selftest.c: revision 1.1
sys/external/isc/libsodium/src/sodium_selftest.c: revision 1.2
sys/external/isc/libsodium/include/string.h: revision 1.2

sys/crypto/sodium: Add a self-test for IETF ChaCha20/Poly1305 AEAD.
PR kern/58468

sys/crypto/sodium: Fill out crypto_verify_16 stub.

Without this change, libsodium silently accepts forgeries.

This one's a doozy, and it's a sobering reminder that:
(a) wg(4) is still experimental (only user of libsodium in kernel;
both are available only through default-off optional modules).
(b) Known-answer test vectors are critical, including negative tests
(test that forgeries are rejected), and must be mandatory for all
new crypto code -- and should be added to old crypto code too.
(c) Crypto code must also have self-tests that run in the same
environment, not just the same code in a different build or test
environment -- the libsodium code itself is fine, but we built it
differently and need to exercise it differently from upstream's
automatic tests.

It's my fault for not catching this earlier. What happened is:
1. ozaki-r@ adapted libsodium to build in the kernel with various
glue to build code meant for standard userland C, like errno.h and
string.h.
2. Since libsodium's crypto_verify_16.c uses various SIMD intrinsics
on various architectures, it couldn't be used directly in the
kernel build, because -- at the time -- we hadn't wired up any
header files for SIMD intrinsics or any runtime support for saving
and restoring SIMD state appropriately in the kernel.
3. ozaki-r@ put a similar glue header file crypto_verify_16.h to
override libsodium's, with a stub to be implemented later, and
presumably forgot to remind me about it.
4. I missed the stub in crypto_verify_16.h when reviewing the
libsodium import and wg(4) code because it was in the same
directory as various other simple glue code that I deemed
low-risk.
(I did make one change to that glue code, to replace cprng_fast by
cprng_strong, but I suspect I found that by searching for
cprng_fast users rather than by reviewing this code.)
5. I broke my own rule about always having known-answer test vectors
for crypto code because I figured libsodium was well-enough
exercised that we could skimp on it for now, and my focus was more
on the state machine and synchronization logic than on the crypto.
6. I had not yet written known-answer test vectors for the
higher-level wg(4) protocol messages.

Before we can remove the `experimental' tag from wg(4) we will need
to (among other things):
i. Write self-tests for the rest of (what we use from) libsodium.
ii. Write extensive known-answer test vectors for all the wg(4)
protocol messages (and ideally state machine transitions).
iii. Write self-tests for a reasonable subset of the wg(4) KATs.
iv. Review all of the libsodium glue code I neglected to review.
PR kern/58468

sys/crypto/sodium: Simplify string.h stub.

Not sure of any particular problem with the previous stub, but let's
make sure to use the same prototypes for memset/memcpy/memmove as
everything else in the kernel.
PR kern/58468

sys/crypto/sodium: Nix unused assert.h stub.

Maybe this was a vestige of an earlier draft of the libsodium import,
but it doesn't appear to be needed now by any libsodium files we use.
PR kern/58468

sys/crypto/sodium: Nix risky defines from core.h stub.

These are risky not because they might cause crypto flaws, but
because they might cause usage of the SIMD unit in the kernel along
paths where we haven't made it safe.

That said -- no change to the amd64 module .o and .kmod files, so
this doesn't currently make a difference; it's just risky to have
around in case we later include other parts of libsodium that it does
affect, like the Salsa20 code.
PR kern/58468

sys/crypto/sodium: Nix unused errno.h.

Maybe this was a vestige of an earlier draft of the libsodium import,
but it doesn't appear to be needed now by any libsodium files we use.
PR kern/58468

sys/crypto/sodium: Simplify stdint.h stub.
No change to the .o or .kmod files; just the .d make dependency files
change.
PR kern/58468

sys/crypto/sodium: Tighten stdlib.h glue.
1. Make sure nothing uses malloc and free. All of the routines we
need should work in fixed-size, caller-allocated buffers and
reasonable stack space.
2. Make panic message for abort() stub clearer. There are calls to
it, but they imply internal errors inside libsodium which should
not happen unless there is an unrecoverable software bug in
libsodium.
PR kern/58468

sys/crypto/sodium: Add self-test for XChaCha20/Poly1305 AEAD.
PR kern/58468
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 05-Dec-2010  pooka branches: 1.1.6; 1.1.20; 1.1.38;
rumpcrypto should never have been its own faction, so finally make
it a component under kern, i.e. rumpcrypto -> rumpkern_crypto.
 1.1.38.1 06-Apr-2015  skrll Sync with HEAD
 1.1.20.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 05-Dec-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:13 +0000
 1.1 22-Sep-2018  rmind branches: 1.1.2; 1.1.6;
Add rumpkern_nv (in-kernel RUMP libnv).
 1.1.6.2 10-Jun-2019  christos Sync with HEAD
 1.1.6.1 22-Sep-2018  christos file Makefile was added on branch phil-wifi on 2019-06-10 22:09:52 +0000
 1.1.2.2 30-Sep-2018  pgoyette Ssync with HEAD
 1.1.2.1 22-Sep-2018  pgoyette file Makefile was added on branch pgoyette-compat on 2018-09-30 01:45:57 +0000
 1.1 30-Sep-2021  yamaguchi Added tests for the linear hook APIs
 1.2 10-Apr-2022  andvar fix various typos in comments and output/log messages.
 1.1 30-Sep-2021  yamaguchi Added tests for the linear hook APIs
 1.6 21-Jan-2019  alnsn Add sljit rump glue for aarch64.

XXX arm_icache_sync_range() and mips_icache_sync_range() call

(void)rumpcomp_sync_icache((void *)va, (uint64_t)sz);

but linking fails if I do the same on aarch64 (I suspect it also
fails on 32bit arm and mips).

As a workaround, I call __builtin___clear_cache().
 1.5 05-Jan-2016  christos branches: 1.5.16; 1.5.18;
- Change LDADD/DPADD in library dependencies to LIBDPLIBS
- Fix some LDADD abuse and remove useless dependencies
- include <bsd.init.mk> in the right place where appropriate
From Rin Okuyama
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 23-Jul-2014  alnsn branches: 1.3.4; 1.3.6;
Implement rumpcomp_sync_icache() hyprecall for arm and add
a barebone implementation of arm cache ops to librumpkern_sljit.
 1.2 22-Jul-2014  alnsn Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.
 1.1 16-Nov-2013  rmind branches: 1.1.2; 1.1.4; 1.1.6;
Add rumpkern_sljit and rumpnet_bpfjit modules.
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 16-Nov-2013  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 16-Nov-2013  rmind file Makefile was added on branch rmind-smpnet on 2014-05-18 17:46:17 +0000
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.3.6.2 19-Mar-2016  skrll Sync with HEAD
 1.3.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.4.3 03-Dec-2017  jdolecek update from HEAD
 1.3.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.4.1 23-Jul-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.5.18.1 10-Jun-2019  christos Sync with HEAD
 1.5.16.1 26-Jan-2019  pgoyette Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 16-Nov-2013  rmind branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add rumpkern_sljit and rumpnet_bpfjit modules.
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 16-Nov-2013  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 16-Nov-2013  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 16-Nov-2013  rmind file shlib_version was added on branch rmind-smpnet on 2014-05-18 17:46:17 +0000
 1.1 22-Jul-2014  alnsn branches: 1.1.2; 1.1.6;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-Jul-2014  tls file sljit_rump.h was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 22-Jul-2014  tls file sljit_rump.h was added on branch tls-earlyentropy on 2014-08-10 06:56:50 +0000
 1.1 21-Jan-2019  alnsn branches: 1.1.2; 1.1.6;
Add sljit rump glue for aarch64.

XXX arm_icache_sync_range() and mips_icache_sync_range() call

(void)rumpcomp_sync_icache((void *)va, (uint64_t)sz);

but linking fails if I do the same on aarch64 (I suspect it also
fails on 32bit arm and mips).

As a workaround, I call __builtin___clear_cache().
 1.1.6.2 10-Jun-2019  christos Sync with HEAD
 1.1.6.1 21-Jan-2019  christos file cpufunc.c was added on branch phil-wifi on 2019-06-10 22:09:52 +0000
 1.1.2.2 26-Jan-2019  pgoyette Sync with HEAD
 1.1.2.1 21-Jan-2019  pgoyette file cpufunc.c was added on branch pgoyette-compat on 2019-01-26 22:00:37 +0000
 1.1 21-Jan-2019  alnsn branches: 1.1.2; 1.1.6;
Add sljit rump glue for aarch64.

XXX arm_icache_sync_range() and mips_icache_sync_range() call

(void)rumpcomp_sync_icache((void *)va, (uint64_t)sz);

but linking fails if I do the same on aarch64 (I suspect it also
fails on 32bit arm and mips).

As a workaround, I call __builtin___clear_cache().
 1.1.6.2 10-Jun-2019  christos Sync with HEAD
 1.1.6.1 21-Jan-2019  christos file sljit_rump.c was added on branch phil-wifi on 2019-06-10 22:09:52 +0000
 1.1.2.2 26-Jan-2019  pgoyette Sync with HEAD
 1.1.2.1 21-Jan-2019  pgoyette file sljit_rump.c was added on branch pgoyette-compat on 2019-01-26 22:00:37 +0000
 1.1 23-Jul-2014  alnsn branches: 1.1.2; 1.1.6;
Implement rumpcomp_sync_icache() hyprecall for arm and add
a barebone implementation of arm cache ops to librumpkern_sljit.
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 23-Jul-2014  tls file cpufunc.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 23-Jul-2014  tls file cpufunc.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.1 23-Jul-2014  alnsn branches: 1.1.2; 1.1.6;
Implement rumpcomp_sync_icache() hyprecall for arm and add
a barebone implementation of arm cache ops to librumpkern_sljit.
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 23-Jul-2014  tls file sljit_rump.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 23-Jul-2014  tls file sljit_rump.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.3 22-Jan-2019  alnsn Cast register_t to uintptr_t before casting to void *.

Not sure what's going on here but evbmips64-el build fails
without this cast.
 1.2 22-Jan-2019  alnsn Sync the first argument type with mco_icache_sync_range.
 1.1 22-Jul-2014  alnsn branches: 1.1.2; 1.1.6; 1.1.30; 1.1.32;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.
 1.1.32.1 10-Jun-2019  christos Sync with HEAD
 1.1.30.1 26-Jan-2019  pgoyette Sync with HEAD
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-Jul-2014  tls file cache.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 22-Jul-2014  tls file cache.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.1 22-Jul-2014  alnsn branches: 1.1.2; 1.1.6;
Implement rumpcomp_sync_icache() hyprecall for mips and add
a barebone implementation if mips cache ops to librumpkern_sljit.
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-Jul-2014  tls file sljit_rump.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 22-Jul-2014  tls file sljit_rump.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.6 15-Apr-2021  christos fix reversed comment
 1.5 15-Apr-2021  christos - Define NEED_ISYSTEM here
- include <bsd.init.mk> now that we can do it, because we need Makefile.rump
to be included first, so that NOLINT gets defined, so that we don't end up
building lint modules just for this.
 1.4 28-May-2018  chs branches: 1.4.16;
merge a new version of the CDDL dtrace and ZFS code.
this changes the upstream vendor from OpenSolaris to FreeBSD,
and this version is based on FreeBSD svn r315983.

in addition to the 10 years of improvements from upstream,
this version also has these NetBSD-specific enhancements:
- dtrace FBT probes can now be placed in kernel modules.
- ZFS now supports mmap().
 1.3 19-Oct-2015  pooka branches: 1.3.16;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 06-Dec-2011  njoly branches: 1.2.6; 1.2.24;
Remove the unneeded rump component; the library already includes the
module code that will be initialised by rump.

Fix PR/44708, t_zpool:create test failure for RUMP_LOCKDEBUG=yes
builds.
 1.1 18-Jan-2011  haad branches: 1.1.4; 1.1.8; 1.1.10; 1.1.14;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.1.14.1 18-Feb-2012  mrg merge to -current.
 1.1.10.1 17-Apr-2012  yamt sync with head
 1.1.8.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.8.1 18-Jan-2011  jruoho file Makefile was added on branch jruoho-x86intr on 2011-06-06 09:10:06 +0000
 1.1.4.2 05-Mar-2011  rmind sync with head
 1.1.4.1 18-Jan-2011  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:13 +0000
 1.2.24.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.6.1 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 25-Jun-2018  pgoyette Sync with HEAD
 1.4.16.1 17-Apr-2021  thorpej Sync with HEAD.
 1.2 06-Dec-2011  njoly Remove the unneeded rump component; the library already includes the
module code that will be initialised by rump.

Fix PR/44708, t_zpool:create test failure for RUMP_LOCKDEBUG=yes
builds.
 1.1 18-Jan-2011  haad branches: 1.1.4; 1.1.8; 1.1.10; 1.1.14;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.1.14.1 18-Feb-2012  mrg merge to -current.
 1.1.10.1 17-Apr-2012  yamt sync with head
 1.1.8.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.8.1 18-Jan-2011  jruoho file component.c was added on branch jruoho-x86intr on 2011-06-06 09:10:06 +0000
 1.1.4.2 05-Mar-2011  rmind sync with head
 1.1.4.1 18-Jan-2011  rmind file component.c was added on branch rmind-uvmplock on 2011-03-05 20:56:13 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 18-Jan-2011  haad branches: 1.1.4; 1.1.8; 1.1.20; 1.1.38;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.1.38.1 06-Apr-2015  skrll Sync with HEAD
 1.1.20.1 03-Dec-2017  jdolecek update from HEAD
 1.1.8.2 06-Jun-2011  jruoho Sync with HEAD.
 1.1.8.1 18-Jan-2011  jruoho file shlib_version was added on branch jruoho-x86intr on 2011-06-06 09:10:07 +0000
 1.1.4.2 05-Mar-2011  rmind sync with head
 1.1.4.1 18-Jan-2011  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:13 +0000
 1.6 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.5 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.4 09-May-2015  pooka Make the cool syscall autogeneration feature work with the
newfangled r/o src feature.
 1.3 08-Mar-2015  christos regen
 1.2 13-Mar-2014  pooka branches: 1.2.4; 1.2.8;
rename component.c -> sys_cygwin_component.c
 1.1 10-Apr-2013  pooka branches: 1.1.4; 1.1.6;
cygwin compat
 1.1.6.1 18-May-2014  rmind sync with head
 1.1.4.4 03-Dec-2017  jdolecek update from HEAD
 1.1.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 10-Apr-2013  tls file Makefile was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.2.8.4 19-Mar-2016  skrll Sync with HEAD
 1.2.8.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.8.2 06-Jun-2015  skrll Sync with HEAD
 1.2.8.1 06-Apr-2015  skrll Sync with HEAD
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 13-Mar-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2 13-Mar-2014  pooka rename component.c -> sys_cygwin_component.c
 1.1 10-Apr-2013  pooka branches: 1.1.4; 1.1.6;
cygwin compat
 1.1.6.1 18-May-2014  rmind sync with head
 1.1.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 10-Apr-2013  tls file component.c was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.3 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.2 12-Dec-2018  alnsn Add missing RCSIDs.
 1.1 10-Apr-2013  pooka branches: 1.1.4; 1.1.12; 1.1.38; 1.1.40;
cygwin compat
 1.1.40.1 10-Jun-2019  christos Sync with HEAD
 1.1.38.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.12.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.12.1 10-Apr-2013  yamt file rump_cygwin_compat.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 10-Apr-2013  tls file rump_cygwin_compat.c was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.4 09-May-2015  pooka remove files which are autogenerated in every build
 1.3 08-Mar-2015  christos regen
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10; 1.2.14;
regen
 1.1 10-Apr-2013  pooka gen
 1.2.14.2 06-Jun-2015  skrll Sync with HEAD
 1.2.14.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file rump_cygwin_syscall.h was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.3 03-Dec-2017  jdolecek update from HEAD
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file rump_cygwin_syscall.h was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.4 09-May-2015  pooka remove files which are autogenerated in every build
 1.3 08-Mar-2015  christos regen
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10; 1.2.14;
regen
 1.1 10-Apr-2013  pooka gen
 1.2.14.2 06-Jun-2015  skrll Sync with HEAD
 1.2.14.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file rump_cygwin_syscallargs.h was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.3 03-Dec-2017  jdolecek update from HEAD
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file rump_cygwin_syscallargs.h was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.4 09-May-2015  pooka remove files which are autogenerated in every build
 1.3 08-Mar-2015  christos regen
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10; 1.2.14;
regen
 1.1 10-Apr-2013  pooka gen
 1.2.14.2 06-Jun-2015  skrll Sync with HEAD
 1.2.14.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file rump_cygwin_syscalls.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.3 03-Dec-2017  jdolecek update from HEAD
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file rump_cygwin_syscalls.c was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.4 09-May-2015  pooka remove files which are autogenerated in every build
 1.3 08-Mar-2015  christos regen
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10; 1.2.14;
regen
 1.1 10-Apr-2013  pooka gen
 1.2.14.2 06-Jun-2015  skrll Sync with HEAD
 1.2.14.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file rump_cygwin_sysent.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.3 03-Dec-2017  jdolecek update from HEAD
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file rump_cygwin_sysent.c was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 10-Apr-2013  pooka branches: 1.1.4; 1.1.12; 1.1.16;
cygwin compat
 1.1.16.1 06-Apr-2015  skrll Sync with HEAD
 1.1.12.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.12.1 10-Apr-2013  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.3 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 10-Apr-2013  tls file shlib_version was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.6 27-Jan-2019  rin Fix merge botches. I hope there's no more left...
 1.5 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.4 12-Dec-2018  alnsn Add missing RCSIDs.
 1.3 10-Aug-2018  pgoyette Allow syscall_establish() to install new syscalls when the existing
entry-point is either sys_nomodule or sys_nosys. Update the
makesyscalls.sh script to create a const array of bits to allow
syscall_disestablish() to properly restore the original entry-point.
Update all the initializers of struct emul to initialize the pointer
to the bit array struct emul.

XXX Regen of all files created by makesyscalls.sh will come soon,
XXX followed by a kernel version bump (since struct emul is being
XXX modified).

This commit should address PR kern/45781 and also removes the need
for the work-around for that PR in file

sys/arch/usermode/modules/syscallemu/syscallemu.c
 1.2 26-Jan-2016  pooka branches: 1.2.16; 1.2.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> sys_cygwin_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file sys_cygwin_component.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file sys_cygwin_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file sys_cygwin_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:17 +0000
 1.2.18.1 10-Jun-2019  christos Sync with HEAD
 1.2.16.2 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.2.16.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.2 11-Sep-2019  bad define sysautoload here too, to catch up with kern/makesyscalls.sh r1.173
XXX: This needs to be re-thought
 1.1 10-Apr-2013  pooka branches: 1.1.4; 1.1.12; 1.1.40;
cygwin compat
 1.1.40.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.12.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.12.1 10-Apr-2013  yamt file syscalls.conf was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 10-Apr-2013  tls file syscalls.conf was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10;
Support utimes/futimes. Makes at least fsu_touch work on these platforms.
 1.1 10-Apr-2013  pooka cygwin compat
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file syscalls.master was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file syscalls.master was added on branch tls-maxphys on 2013-06-23 06:20:27 +0000
 1.11 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.10 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.9 09-May-2015  pooka Make the cool syscall autogeneration feature work with the
newfangled r/o src feature.
 1.8 08-Mar-2015  christos factor out the syscall building code
 1.7 08-Mar-2015  christos regen and add a build target.
 1.6 13-Mar-2014  pooka branches: 1.6.6;
rename component.c -> sys_linux_component.c
 1.5 28-Jan-2014  njoly Build with IPv6 support.
 1.4 25-Jan-2014  njoly Add now needed linux_pipe.c sources.
 1.3 14-Dec-2013  njoly Add syscall wrapper for mknodat(2) to deal with PAD argument difference
between rump and linux versions.
 1.2 07-Mar-2013  pooka branches: 1.2.6; 1.2.8;
If linux syscall emulation is linked in to a rump kernel, use it as the
default emulation.
 1.1 19-Sep-2012  pooka branches: 1.1.2;
Add the first attempt at rump kernel support for Linux clients. This has
been lightly tested with unmodified networking applications with both
the client and server on a 64bit le host. Unlike the standard Linux
compat libs where args and syscalls are swizzled around, this compat
lib only massages the arg data types due to the assumption that syscall
numbers come from librumpclient (via librumphijack) and therefore match
the native NetBSD numbers.
 1.1.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 19-Sep-2012  yamt file Makefile was added on branch yamt-pagecache on 2012-10-30 17:22:53 +0000
 1.2.8.1 18-May-2014  rmind sync with head
 1.2.6.4 03-Dec-2017  jdolecek update from HEAD
 1.2.6.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.6.2 07-Mar-2013  pooka If linux syscall emulation is linked in to a rump kernel, use it as the
default emulation.
 1.2.6.1 07-Mar-2013  pooka file Makefile was added on branch tls-maxphys on 2013-03-07 18:53:40 +0000
 1.6.6.4 19-Mar-2016  skrll Sync with HEAD
 1.6.6.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.6.6.2 06-Jun-2015  skrll Sync with HEAD
 1.6.6.1 06-Apr-2015  skrll Sync with HEAD
 1.12 13-Mar-2014  pooka rename component.c -> sys_linux_component.c
 1.11 18-Feb-2014  pooka remove stub now provided by rump kernel base
 1.10 17-Dec-2013  pooka fix tyop
 1.9 16-Dec-2013  pooka Translate return values for emulations, e.g. Linux. For ports without
__HAVE_MINIMAL_EMUL, we simply look up the values from p->p_emul->e_errno.
For ports which cannot afford to keep an extra pointer per emul structure
around, we hope there is __HAVE_SYSCALL_INTERN support and thread the
errno values through p_emuldata. Notably, we cannot alter the syscall
method like most ports do with syscall_intern, since they do it via
p_mdproc, so MI code is not possible there.
 1.8 03-Apr-2013  pooka branches: 1.8.4; 1.8.6;
i386 has a special way to handle uname. We don't really care about
satisfying uname in a rump kernel, but attempt to return something
sane anyway.
 1.7 03-Apr-2013  pooka add a few arch-specific stubs to make this link on arm
 1.6 07-Mar-2013  pooka set e_nsysent
 1.5 07-Mar-2013  pooka implement linux_fakedev: silly in, silly out, silly inside out
 1.4 07-Mar-2013  pooka If linux syscall emulation is linked in to a rump kernel, use it as the
default emulation.
 1.3 17-Nov-2012  pooka include correct header
 1.2 20-Sep-2012  pooka branches: 1.2.2;
sort stubs, remove autonamespacing and add some signal-related ones
I missed yesterday
 1.1 19-Sep-2012  pooka Add the first attempt at rump kernel support for Linux clients. This has
been lightly tested with unmodified networking applications with both
the client and server on a 64bit le host. Unlike the standard Linux
compat libs where args and syscalls are swizzled around, this compat
lib only massages the arg data types due to the assumption that syscall
numbers come from librumpclient (via librumphijack) and therefore match
the native NetBSD numbers.
 1.2.2.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.2.3 16-Jan-2013  yamt sync with (a bit old) head
 1.2.2.2 30-Oct-2012  yamt sync with head
 1.2.2.1 20-Sep-2012  yamt file component.c was added on branch yamt-pagecache on 2012-10-30 17:22:53 +0000
 1.8.6.1 18-May-2014  rmind sync with head
 1.8.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.8.4.2 03-Apr-2013  pooka i386 has a special way to handle uname. We don't really care about
satisfying uname in a rump kernel, but attempt to return something
sane anyway.
 1.8.4.1 03-Apr-2013  pooka file component.c was added on branch tls-maxphys on 2013-04-03 23:51:21 +0000
 1.5 27-Jan-2019  rin Fix merge botches. I hope there's no more left...
 1.4 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.3 12-Dec-2018  alnsn Add missing RCSIDs.
 1.2 10-Jan-2014  njoly branches: 1.2.4; 1.2.6; 1.2.10; 1.2.34; 1.2.36;
Do not redefine linux syscalls arguments, just use compat ones
instead.
Include linux_socketcall.h to bring missing socket syscall
arguments/prototypes on arches that have socketcall(2).
Finally, cleanup rump linux syscall wrapper, to remove linux syscall
argument/prototype local copy.
 1.1 14-Dec-2013  njoly Add syscall wrapper for mknodat(2) to deal with PAD argument difference
between rump and linux versions.
 1.2.36.1 10-Jun-2019  christos Sync with HEAD
 1.2.34.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 10-Jan-2014  tls file linux_rump.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 10-Jan-2014  yamt file linux_rump.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 10-Jan-2014  rmind file linux_rump.c was added on branch rmind-smpnet on 2014-05-18 17:46:17 +0000
 1.16 09-May-2015  pooka remove files which are autogenerated in every build
 1.15 08-Mar-2015  christos regen and add a build target.
 1.14 29-May-2014  njoly branches: 1.14.4;
Regen for utimes(2).
 1.13 04-May-2014  njoly branches: 1.13.2;
Regen for pread/pwrite signature.
 1.12 04-Apr-2014  njoly branches: 1.12.2;
Regen.
 1.11 25-Jan-2014  njoly Regen for pipe2 and lchown.
 1.10 10-Jan-2014  njoly Regen.
 1.9 10-Jan-2014  njoly Regen.
 1.8 14-Dec-2013  njoly Regen.
 1.7 14-Dec-2013  njoly Regen.
 1.6 08-Dec-2013  njoly Regen.
 1.5 07-Dec-2013  njoly Regen.
 1.4 07-Dec-2013  njoly Regen.
 1.3 05-Oct-2013  njoly Regen for utimensat(2).
 1.2 08-Apr-2013  pooka branches: 1.2.4; 1.2.6;
regen for utimes
 1.1 07-Mar-2013  pooka regen
 1.2.6.1 18-May-2014  rmind sync with head
 1.2.4.4 03-Dec-2017  jdolecek update from HEAD
 1.2.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.4.2 23-Jun-2013  tls resync from head
 1.2.4.1 08-Apr-2013  tls file rump_linux_syscall.h was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.12.2.1 10-Aug-2014  tls Rebase.
 1.13.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.2.1 04-May-2014  yamt file rump_linux_syscall.h was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.14.4.2 06-Jun-2015  skrll Sync with HEAD
 1.14.4.1 06-Apr-2015  skrll Sync with HEAD
 1.19 09-May-2015  pooka remove files which are autogenerated in every build
 1.18 08-Mar-2015  christos regen and add a build target.
 1.17 29-May-2014  njoly branches: 1.17.4;
Regen for utimes(2).
 1.16 04-May-2014  njoly Regen for pread/pwrite signature.
 1.15 04-Apr-2014  njoly branches: 1.15.2;
Regen.
 1.14 25-Jan-2014  njoly Regen for pipe2 and lchown.
 1.13 10-Jan-2014  njoly Regen.
 1.12 10-Jan-2014  njoly Regen.
 1.11 14-Dec-2013  njoly Regen.
 1.10 14-Dec-2013  njoly Regen.
 1.9 08-Dec-2013  njoly Regen.
 1.8 07-Dec-2013  njoly Regen.
 1.7 07-Dec-2013  njoly Regen.
 1.6 05-Oct-2013  njoly Regen for utimensat(2).
 1.5 08-Apr-2013  pooka branches: 1.5.4; 1.5.6;
regen for utimes
 1.4 07-Mar-2013  pooka regen
 1.3 04-Mar-2013  stacktic Regen to use getdents64 instead of getdents
 1.2 17-Feb-2013  stacktic Regen to add lstat64
 1.1 19-Sep-2012  pooka branches: 1.1.2;
gen (without re)
 1.1.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 19-Sep-2012  yamt file rump_linux_syscallargs.h was added on branch yamt-pagecache on 2012-10-30 17:22:53 +0000
 1.5.6.1 18-May-2014  rmind sync with head
 1.5.4.4 03-Dec-2017  jdolecek update from HEAD
 1.5.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.4.2 08-Apr-2013  pooka regen for utimes
 1.5.4.1 08-Apr-2013  pooka file rump_linux_syscallargs.h was added on branch tls-maxphys on 2013-04-08 20:58:28 +0000
 1.15.2.1 10-Aug-2014  tls Rebase.
 1.17.4.2 06-Jun-2015  skrll Sync with HEAD
 1.17.4.1 06-Apr-2015  skrll Sync with HEAD
 1.19 09-May-2015  pooka remove files which are autogenerated in every build
 1.18 08-Mar-2015  christos regen and add a build target.
 1.17 29-May-2014  njoly branches: 1.17.4;
Regen for utimes(2).
 1.16 04-May-2014  njoly Regen for pread/pwrite signature.
 1.15 04-Apr-2014  njoly branches: 1.15.2;
Regen.
 1.14 25-Jan-2014  njoly Regen for pipe2 and lchown.
 1.13 10-Jan-2014  njoly Regen.
 1.12 10-Jan-2014  njoly Regen.
 1.11 14-Dec-2013  njoly Regen.
 1.10 14-Dec-2013  njoly Regen.
 1.9 08-Dec-2013  njoly Regen.
 1.8 07-Dec-2013  njoly Regen.
 1.7 07-Dec-2013  njoly Regen.
 1.6 05-Oct-2013  njoly Regen for utimensat(2).
 1.5 08-Apr-2013  pooka branches: 1.5.4; 1.5.6;
regen for utimes
 1.4 07-Mar-2013  pooka regen
 1.3 04-Mar-2013  stacktic Regen to use getdents64 instead of getdents
 1.2 17-Feb-2013  stacktic Regen to add lstat64
 1.1 19-Sep-2012  pooka branches: 1.1.2;
gen (without re)
 1.1.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 19-Sep-2012  yamt file rump_linux_syscalls.c was added on branch yamt-pagecache on 2012-10-30 17:22:53 +0000
 1.5.6.1 18-May-2014  rmind sync with head
 1.5.4.4 03-Dec-2017  jdolecek update from HEAD
 1.5.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.4.2 08-Apr-2013  pooka regen for utimes
 1.5.4.1 08-Apr-2013  pooka file rump_linux_syscalls.c was added on branch tls-maxphys on 2013-04-08 20:58:28 +0000
 1.15.2.1 10-Aug-2014  tls Rebase.
 1.17.4.2 06-Jun-2015  skrll Sync with HEAD
 1.17.4.1 06-Apr-2015  skrll Sync with HEAD
 1.19 09-May-2015  pooka remove files which are autogenerated in every build
 1.18 08-Mar-2015  christos regen and add a build target.
 1.17 29-May-2014  njoly branches: 1.17.4;
Regen for utimes(2).
 1.16 04-May-2014  njoly Regen for pread/pwrite signature.
 1.15 04-Apr-2014  njoly branches: 1.15.2;
Regen.
 1.14 25-Jan-2014  njoly Regen for pipe2 and lchown.
 1.13 10-Jan-2014  njoly Regen.
 1.12 10-Jan-2014  njoly Regen.
 1.11 14-Dec-2013  njoly Regen.
 1.10 14-Dec-2013  njoly Regen.
 1.9 08-Dec-2013  njoly Regen.
 1.8 07-Dec-2013  njoly Regen.
 1.7 07-Dec-2013  njoly Regen.
 1.6 05-Oct-2013  njoly Regen for utimensat(2).
 1.5 08-Apr-2013  pooka branches: 1.5.4; 1.5.6;
regen for utimes
 1.4 07-Mar-2013  pooka regen
 1.3 04-Mar-2013  stacktic Regen to use getdents64 instead of getdents
 1.2 17-Feb-2013  stacktic Regen to add lstat64
 1.1 19-Sep-2012  pooka branches: 1.1.2;
gen (without re)
 1.1.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 19-Sep-2012  yamt file rump_linux_sysent.c was added on branch yamt-pagecache on 2012-10-30 17:22:53 +0000
 1.5.6.1 18-May-2014  rmind sync with head
 1.5.4.4 03-Dec-2017  jdolecek update from HEAD
 1.5.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.4.2 08-Apr-2013  pooka regen for utimes
 1.5.4.1 08-Apr-2013  pooka file rump_linux_sysent.c was added on branch tls-maxphys on 2013-04-08 20:58:28 +0000
 1.15.2.1 10-Aug-2014  tls Rebase.
 1.17.4.2 06-Jun-2015  skrll Sync with HEAD
 1.17.4.1 06-Apr-2015  skrll Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 19-Sep-2012  pooka branches: 1.1.2; 1.1.16;
Add the first attempt at rump kernel support for Linux clients. This has
been lightly tested with unmodified networking applications with both
the client and server on a 64bit le host. Unlike the standard Linux
compat libs where args and syscalls are swizzled around, this compat
lib only massages the arg data types due to the assumption that syscall
numbers come from librumpclient (via librumphijack) and therefore match
the native NetBSD numbers.
 1.1.16.1 06-Apr-2015  skrll Sync with HEAD
 1.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 19-Sep-2012  yamt file shlib_version was added on branch yamt-pagecache on 2012-10-30 17:22:53 +0000
 1.7 27-Jan-2019  rin Fix merge botches. I hope there's no more left...
 1.6 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.5 12-Dec-2018  alnsn Add missing RCSIDs.
 1.4 10-Aug-2018  pgoyette Allow syscall_establish() to install new syscalls when the existing
entry-point is either sys_nomodule or sys_nosys. Update the
makesyscalls.sh script to create a const array of bits to allow
syscall_disestablish() to properly restore the original entry-point.
Update all the initializers of struct emul to initialize the pointer
to the bit array struct emul.

XXX Regen of all files created by makesyscalls.sh will come soon,
XXX followed by a kernel version bump (since struct emul is being
XXX modified).

This commit should address PR kern/45781 and also removes the need
for the work-around for that PR in file

sys/arch/usermode/modules/syscallemu/syscallemu.c
 1.3 26-Jan-2016  pooka branches: 1.3.16; 1.3.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 04-Apr-2014  njoly branches: 1.2.4; 1.2.6; 1.2.10; 1.2.12;
Add support for timing syscalls.
 1.1 13-Mar-2014  pooka rename component.c -> sys_linux_component.c
 1.2.12.1 19-Mar-2016  skrll Sync with HEAD
 1.2.10.3 03-Dec-2017  jdolecek update from HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 04-Apr-2014  tls file sys_linux_component.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 04-Apr-2014  yamt file sys_linux_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 04-Apr-2014  rmind file sys_linux_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:17 +0000
 1.3.18.1 10-Jun-2019  christos Sync with HEAD
 1.3.16.2 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.3.16.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.3 11-Sep-2019  bad define sysautoload here too, to catch up with kern/makesyscalls.sh r1.173
XXX: This needs to be re-thought
 1.2 07-Mar-2013  pooka branches: 1.2.6; 1.2.40;
generate sysnumhdr so that we get NSYSENT
 1.1 19-Sep-2012  pooka branches: 1.1.2;
Add the first attempt at rump kernel support for Linux clients. This has
been lightly tested with unmodified networking applications with both
the client and server on a 64bit le host. Unlike the standard Linux
compat libs where args and syscalls are swizzled around, this compat
lib only massages the arg data types due to the assumption that syscall
numbers come from librumpclient (via librumphijack) and therefore match
the native NetBSD numbers.
 1.1.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 19-Sep-2012  yamt file syscalls.conf was added on branch yamt-pagecache on 2012-10-30 17:22:53 +0000
 1.2.40.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2.6.2 07-Mar-2013  pooka generate sysnumhdr so that we get NSYSENT
 1.2.6.1 07-Mar-2013  pooka file syscalls.conf was added on branch tls-maxphys on 2013-03-07 19:08:55 +0000
 1.16 29-May-2014  njoly Ajust for compat linux utimes(2) change.
 1.15 04-May-2014  njoly Adjust pread/pwrite signature to match reality.
 1.14 04-Apr-2014  njoly branches: 1.14.2;
Add support for timing syscalls.
 1.13 25-Jan-2014  njoly Add pipe2 and lchown syscalls.
 1.12 10-Jan-2014  njoly Add NetBSD futimes/lutimes syscalls which does not exists on Linux.
 1.11 10-Jan-2014  njoly Do not redefine linux syscalls arguments, just use compat ones
instead.
Include linux_socketcall.h to bring missing socket syscall
arguments/prototypes on arches that have socketcall(2).
Finally, cleanup rump linux syscall wrapper, to remove linux syscall
argument/prototype local copy.
 1.10 14-Dec-2013  njoly Use native/rump syscalls for pread/pwrite instead of linux ones
which only exist to deal with PAD argument.
 1.9 14-Dec-2013  njoly Add syscall wrapper for mknodat(2) to deal with PAD argument difference
between rump and linux versions.
 1.8 08-Dec-2013  njoly Add support for *at syscalls.
 1.7 07-Dec-2013  njoly Add dup3 support.
 1.6 07-Dec-2013  njoly Remove liutimes(2) that linux never had.
 1.5 05-Oct-2013  njoly Add utimensat(2) support.
 1.4 08-Apr-2013  pooka branches: 1.4.4; 1.4.6;
support utimes on non-alpha linux platforms
 1.3 04-Mar-2013  stacktic Regen to use getdents64 instead of getdents
 1.2 17-Feb-2013  stacktic Regen to add lstat64
 1.1 19-Sep-2012  pooka branches: 1.1.2;
Add the first attempt at rump kernel support for Linux clients. This has
been lightly tested with unmodified networking applications with both
the client and server on a 64bit le host. Unlike the standard Linux
compat libs where args and syscalls are swizzled around, this compat
lib only massages the arg data types due to the assumption that syscall
numbers come from librumpclient (via librumphijack) and therefore match
the native NetBSD numbers.
 1.1.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 30-Oct-2012  yamt sync with head
 1.1.2.1 19-Sep-2012  yamt file syscalls.master was added on branch yamt-pagecache on 2012-10-30 17:22:53 +0000
 1.4.6.1 18-May-2014  rmind sync with head
 1.4.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.4.2 08-Apr-2013  pooka support utimes on non-alpha linux platforms
 1.4.4.1 08-Apr-2013  pooka file syscalls.master was added on branch tls-maxphys on 2013-04-08 20:54:48 +0000
 1.14.2.1 10-Aug-2014  tls Rebase.
 1.7 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.6 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.5 09-May-2015  pooka Make the cool syscall autogeneration feature work with the
newfangled r/o src feature.
 1.4 08-Mar-2015  christos regen
 1.3 16-Mar-2014  pooka branches: 1.3.4; 1.3.8;
fix tyop
 1.2 13-Mar-2014  pooka rename component.c -> sys_sunos_component.c
 1.1 09-Apr-2013  pooka branches: 1.1.4; 1.1.6;
Add enough syscall compat for fs-utils to work on modern Solaris
and derivatives.
 1.1.6.1 18-May-2014  rmind sync with head
 1.1.4.4 03-Dec-2017  jdolecek update from HEAD
 1.1.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 09-Apr-2013  tls file Makefile was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.3.8.4 19-Mar-2016  skrll Sync with HEAD
 1.3.8.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.8.2 06-Jun-2015  skrll Sync with HEAD
 1.3.8.1 06-Apr-2015  skrll Sync with HEAD
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 16-Mar-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2 13-Mar-2014  pooka rename component.c -> sys_sunos_component.c
 1.1 09-Apr-2013  pooka branches: 1.1.4; 1.1.6;
Add enough syscall compat for fs-utils to work on modern Solaris
and derivatives.
 1.1.6.1 18-May-2014  rmind sync with head
 1.1.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 09-Apr-2013  tls file component.c was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.4 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.3 12-Dec-2018  alnsn Add missing RCSIDs.
 1.2 28-Jul-2017  riastradh branches: 1.2.2; 1.2.4;
Fail, don't panic, on bad dirents from file system.

Controllable via puffs from userland.

From Ilja Van Sprundel.
 1.1 09-Apr-2013  pooka branches: 1.1.4; 1.1.12; 1.1.14; 1.1.16; 1.1.18; 1.1.26; 1.1.32;
Add enough syscall compat for fs-utils to work on modern Solaris
and derivatives.
 1.1.32.1 09-Aug-2017  snj Pull up following revision(s) (requested by spz in ticket #193):
sys/compat/common/vfs_syscalls_12.c: revision 1.34
sys/rump/kern/lib/libsys_sunos/rump_sunos_compat.c: revision 1.2
sys/compat/svr4_32/svr4_32_misc.c: revision 1.78
sys/compat/sunos32/sunos32_misc.c: revision 1.78
sys/compat/linux/common/linux_misc.c: revision 1.239
sys/compat/osf1/osf1_file.c: revision 1.44
sys/compat/common/vfs_syscalls_43.c: revision 1.60
sys/compat/svr4/svr4_misc.c: revision 1.158
sys/compat/ibcs2/ibcs2_misc.c: revision 1.114
sys/compat/linux/common/linux_file64.c: revision 1.59
sys/compat/linux32/common/linux32_dirent.c: revision 1.18
sys/compat/sunos/sunos_misc.c: revision 1.171
Fail, don't panic, on bad dirents from file system.
Controllable via puffs from userland.
From Ilja Van Sprundel.
 1.1.26.1 12-Aug-2017  snj Pull up following revision(s) (requested by mrg in ticket #1479):
sys/compat/common/vfs_syscalls_12.c: revision 1.34
sys/rump/kern/lib/libsys_sunos/rump_sunos_compat.c: revision 1.2
sys/compat/svr4_32/svr4_32_misc.c: revision 1.78
sys/compat/sunos32/sunos32_misc.c: revision 1.78
sys/compat/linux/common/linux_misc.c: revision 1.239
sys/compat/osf1/osf1_file.c: revision 1.44
sys/compat/common/vfs_syscalls_43.c: revision 1.60
sys/compat/svr4/svr4_misc.c: revision 1.158
sys/compat/ibcs2/ibcs2_misc.c: revision 1.114
sys/compat/linux/common/linux_file64.c: revision 1.59
sys/compat/linux32/common/linux32_dirent.c: revision 1.18
sys/compat/sunos/sunos_misc.c: revision 1.171
Fail, don't panic, on bad dirents from file system.
Controllable via puffs from userland.
From Ilja Van Sprundel.
 1.1.18.1 12-Aug-2017  snj Pull up following revision(s) (requested by mrg in ticket #1479):
sys/compat/common/vfs_syscalls_12.c: revision 1.34
sys/rump/kern/lib/libsys_sunos/rump_sunos_compat.c: revision 1.2
sys/compat/svr4_32/svr4_32_misc.c: revision 1.78
sys/compat/sunos32/sunos32_misc.c: revision 1.78
sys/compat/linux/common/linux_misc.c: revision 1.239
sys/compat/osf1/osf1_file.c: revision 1.44
sys/compat/common/vfs_syscalls_43.c: revision 1.60
sys/compat/svr4/svr4_misc.c: revision 1.158
sys/compat/ibcs2/ibcs2_misc.c: revision 1.114
sys/compat/linux/common/linux_file64.c: revision 1.59
sys/compat/linux32/common/linux32_dirent.c: revision 1.18
sys/compat/sunos/sunos_misc.c: revision 1.171
Fail, don't panic, on bad dirents from file system.
Controllable via puffs from userland.
From Ilja Van Sprundel.
 1.1.16.1 28-Aug-2017  skrll Sync with HEAD
 1.1.14.1 12-Aug-2017  snj Pull up following revision(s) (requested by mrg in ticket #1479):
sys/compat/common/vfs_syscalls_12.c: revision 1.34
sys/rump/kern/lib/libsys_sunos/rump_sunos_compat.c: revision 1.2
sys/compat/svr4_32/svr4_32_misc.c: revision 1.78
sys/compat/sunos32/sunos32_misc.c: revision 1.78
sys/compat/linux/common/linux_misc.c: revision 1.239
sys/compat/osf1/osf1_file.c: revision 1.44
sys/compat/common/vfs_syscalls_43.c: revision 1.60
sys/compat/svr4/svr4_misc.c: revision 1.158
sys/compat/ibcs2/ibcs2_misc.c: revision 1.114
sys/compat/linux/common/linux_file64.c: revision 1.59
sys/compat/linux32/common/linux32_dirent.c: revision 1.18
sys/compat/sunos/sunos_misc.c: revision 1.171
Fail, don't panic, on bad dirents from file system.
Controllable via puffs from userland.
From Ilja Van Sprundel.
 1.1.12.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.12.1 09-Apr-2013  yamt file rump_sunos_compat.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.3 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 09-Apr-2013  tls file rump_sunos_compat.c was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.2.4.1 10-Jun-2019  christos Sync with HEAD
 1.2.2.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.4 09-May-2015  pooka remove files which are autogenerated in every build
 1.3 08-Mar-2015  christos regen
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10; 1.2.14;
regen
 1.1 09-Apr-2013  pooka gen
 1.2.14.2 06-Jun-2015  skrll Sync with HEAD
 1.2.14.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file rump_sunos_syscall.h was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.3 03-Dec-2017  jdolecek update from HEAD
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file rump_sunos_syscall.h was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.4 09-May-2015  pooka remove files which are autogenerated in every build
 1.3 08-Mar-2015  christos regen
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10; 1.2.14;
regen
 1.1 09-Apr-2013  pooka gen
 1.2.14.2 06-Jun-2015  skrll Sync with HEAD
 1.2.14.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file rump_sunos_syscallargs.h was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.3 03-Dec-2017  jdolecek update from HEAD
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file rump_sunos_syscallargs.h was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.4 09-May-2015  pooka remove files which are autogenerated in every build
 1.3 08-Mar-2015  christos regen
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10; 1.2.14;
regen
 1.1 09-Apr-2013  pooka gen
 1.2.14.2 06-Jun-2015  skrll Sync with HEAD
 1.2.14.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file rump_sunos_syscalls.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.3 03-Dec-2017  jdolecek update from HEAD
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file rump_sunos_syscalls.c was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.4 09-May-2015  pooka remove files which are autogenerated in every build
 1.3 08-Mar-2015  christos regen
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10; 1.2.14;
regen
 1.1 09-Apr-2013  pooka gen
 1.2.14.2 06-Jun-2015  skrll Sync with HEAD
 1.2.14.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file rump_sunos_sysent.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.3 03-Dec-2017  jdolecek update from HEAD
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file rump_sunos_sysent.c was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 09-Apr-2013  pooka branches: 1.1.4; 1.1.12; 1.1.16;
Add enough syscall compat for fs-utils to work on modern Solaris
and derivatives.
 1.1.16.1 06-Apr-2015  skrll Sync with HEAD
 1.1.12.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.12.1 09-Apr-2013  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.3 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 09-Apr-2013  tls file shlib_version was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.6 27-Jan-2019  rin Fix merge botches. I hope there's no more left...
 1.5 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.4 12-Dec-2018  alnsn Add missing RCSIDs.
 1.3 10-Aug-2018  pgoyette Allow syscall_establish() to install new syscalls when the existing
entry-point is either sys_nomodule or sys_nosys. Update the
makesyscalls.sh script to create a const array of bits to allow
syscall_disestablish() to properly restore the original entry-point.
Update all the initializers of struct emul to initialize the pointer
to the bit array struct emul.

XXX Regen of all files created by makesyscalls.sh will come soon,
XXX followed by a kernel version bump (since struct emul is being
XXX modified).

This commit should address PR kern/45781 and also removes the need
for the work-around for that PR in file

sys/arch/usermode/modules/syscallemu/syscallemu.c
 1.2 26-Jan-2016  pooka branches: 1.2.16; 1.2.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> sys_sunos_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file sys_sunos_component.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file sys_sunos_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file sys_sunos_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.2.18.1 10-Jun-2019  christos Sync with HEAD
 1.2.16.2 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.2.16.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.2 11-Sep-2019  bad define sysautoload here too, to catch up with kern/makesyscalls.sh r1.173
XXX: This needs to be re-thought
 1.1 09-Apr-2013  pooka branches: 1.1.4; 1.1.12; 1.1.40;
Add enough syscall compat for fs-utils to work on modern Solaris
and derivatives.
 1.1.40.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1.12.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.12.1 09-Apr-2013  yamt file syscalls.conf was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.1.4.2 23-Jun-2013  tls resync from head
 1.1.4.1 09-Apr-2013  tls file syscalls.conf was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.2 15-May-2013  pooka branches: 1.2.2; 1.2.10;
Support utimes/futimes. Makes at least fsu_touch work on these platforms.
 1.1 09-Apr-2013  pooka Add enough syscall compat for fs-utils to work on modern Solaris
and derivatives.
 1.2.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.10.1 15-May-2013  yamt file syscalls.master was added on branch yamt-pagecache on 2014-05-22 11:41:14 +0000
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 15-May-2013  tls file syscalls.master was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.3 26-Jan-2016  pooka branches: 1.3.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 07-Jan-2015  pooka branches: 1.1.2;
Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.1.2.4 19-Mar-2016  skrll Sync with HEAD
 1.1.2.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.2 06-Apr-2015  skrll Sync with HEAD
 1.1.2.1 07-Jan-2015  skrll file Makefile was added on branch nick-nhusb on 2015-04-06 15:18:30 +0000
 1.3.16.2 03-Dec-2017  jdolecek update from HEAD
 1.3.16.1 26-Jan-2016  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:15 +0000
 1.10 16-Jul-2023  riastradh rump: Use l_sched.info, not l_private, for cv waits.

- l_sched is scheduler-private, used only by sched_m2.c, should be safe
- l_private is lwp-private, used by tls in user threads, would like to
reuse for kthreads too
 1.9 21-Aug-2022  riastradh rump libsysproxy: More workarounds for pmap abuse.
 1.8 06-Oct-2019  uwe xc_barrier - convenience function to xc_broadcast() a nop.

Make the intent more clear and also avoid a bunch of (xcfunc_t)nullop
casts that gcc 8 -Wcast-function-type is not happy about.
 1.7 17-May-2019  ozaki-r Implement an aggressive psref leak detector

It is yet another psref leak detector that enables to tell where a leak occurs
while a simpler version that is already committed just tells an occurrence of a
leak.

Investigating of psref leaks is hard because once a leak occurs a percpu list of
psref that tracks references can be corrupted. A reference to a tracking object
is memorized in the list via an intermediate object (struct psref) that is
normally allocated on a stack of a thread. Thus, the intermediate object can be
overwritten on a leak resulting in corruption of the list.

The tracker makes a shadow entry to an intermediate object and stores some hints
into it (currently it's a caller address of psref_acquire). We can detect a
leak by checking the entries on certain points where any references should be
released such as the return point of syscalls and the end of each softint
handler.

The feature is expensive and enabled only if the kernel is built with
PSREF_DEBUG.

Proposed on tech-kern
 1.6 19-Apr-2019  ozaki-r Implement a simple psref leak detector

It detects leaks by counting up the number of held psref by an LWP and checking
its zeroness at the end of syscalls and softint handlers. For the counter, a
unused field of struct lwp is reused.

The detector runs only if DIAGNOSTIC is turned on.
 1.5 18-Apr-2019  ozaki-r rump: add missing sanity checks at the end of syscalls
 1.4 26-Jan-2016  pooka branches: 1.4.16; 1.4.20;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 18-Apr-2015  pooka Give remote clients struct pmap storage. Although the pmap is unused,
that way we can sure that the pmap macro framework doesn't access all
the wrong places.
 1.2 03-Apr-2015  pooka branches: 1.2.2;
Use a different vmspace for rump kernel proc0 and local clients.
While the rump kernel and local clients are by definition in the same
host vmspace, there are subtle differences in how in-kernel code works
in case accessing the kernel vmspace or a user process vmspace.

Problem discovered by riastradh's "read(fd, NULL, 1)" test.
 1.1 07-Jan-2015  pooka Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.2.2.4 19-Mar-2016  skrll Sync with HEAD
 1.2.2.3 06-Jun-2015  skrll Sync with HEAD
 1.2.2.2 06-Apr-2015  skrll Sync with HEAD
 1.2.2.1 03-Apr-2015  skrll file sysproxy.c was added on branch nick-nhusb on 2015-04-06 15:18:30 +0000
 1.4.20.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.4.20.1 10-Jun-2019  christos Sync with HEAD
 1.4.16.2 03-Dec-2017  jdolecek update from HEAD
 1.4.16.1 26-Jan-2016  jdolecek file sysproxy.c was added on branch tls-maxphys on 2017-12-03 11:39:15 +0000
 1.8 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.7 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.6 20-Aug-2015  christos use ioconf.h for pseudo-device attach prototypes
 1.5 23-Apr-2015  pooka Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.
 1.4 22-Apr-2015  pooka Build compat code only when specified by RUMP_COMPAT
 1.3 13-Mar-2014  pooka branches: 1.3.6;
rename component.c -> tty_component.c
 1.2 16-Jul-2013  pooka COMPAT_60 for rump kernels.

Requested via github (buildrump.sh)
 1.1 14-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24; 1.1.28;
Add unadulterated tty support as a rump component.
 1.1.28.2 18-May-2014  rmind sync with head
 1.1.28.1 28-Aug-2013  rmind sync with head
 1.1.24.2 03-Dec-2017  jdolecek update from HEAD
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 14-Jun-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-08-17 06:47:59 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 14-Jun-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 14-Jun-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-07-03 01:20:02 +0000
 1.3.6.4 19-Mar-2016  skrll Sync with HEAD
 1.3.6.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3.6.2 22-Sep-2015  skrll Sync with HEAD
 1.3.6.1 06-Jun-2015  skrll Sync with HEAD
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
use ioconf.h for pseudo-device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file TTY.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:15 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file TTY.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:15 +0000
 1.3 13-Mar-2014  pooka rename component.c -> tty_component.c
 1.2 07-Jan-2011  pooka branches: 1.2.8; 1.2.18; 1.2.22;
Avoid double init of tty_lock if rumpkern_tty is included. LOCKDEBUG
does not tolerate double inits.

pointed out by njoly
 1.1 14-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Add unadulterated tty support as a rump component.
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 14-Jun-2010  uebayasi file component.c was added on branch uebayasi-xip on 2010-08-17 06:47:59 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 14-Jun-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.1.2.3 05-Mar-2011  rmind sync with head
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 14-Jun-2010  rmind file component.c was added on branch rmind-uvmplock on 2010-07-03 01:20:02 +0000
 1.2.22.1 18-May-2014  rmind sync with head
 1.2.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1 14-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Add unadulterated tty support as a rump component.
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 14-Jun-2010  uebayasi file opt_ptm.h was added on branch uebayasi-xip on 2010-08-17 06:47:59 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 14-Jun-2010  yamt file opt_ptm.h was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 14-Jun-2010  rmind file opt_ptm.h was added on branch rmind-uvmplock on 2010-07-03 01:20:02 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 14-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
Add unadulterated tty support as a rump component.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 14-Jun-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-08-17 06:47:59 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 14-Jun-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 14-Jun-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-07-03 01:20:02 +0000
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 07-Jan-2016  pooka Initialize non-VFS parts of tty subsystem already at RUMP_COMPONENT_KERN.

That way components under RUMP__FACTION_DEV can call tty routines.
 1.2 20-Aug-2015  christos use ioconf.h for pseudo-device attach prototypes
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> tty_component.c
 1.1.12.2 19-Mar-2016  skrll Sync with HEAD
 1.1.12.1 22-Sep-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file tty_component.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file tty_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file tty_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.5 03-Jun-2023  lukem adapt to ${CC_WNO_IMPLICIT_FALLTHROUGH}

Use ${CC_WNO_IMPLICIT_FALLTHROUGH} instead of
the older style more complex expressions.
 1.4 29-Sep-2019  mrg convert HAVE_GCC == 7 to HAVE_GCC >= 7.
 1.3 05-Feb-2019  mrg be sure to only apply zlib.c's -Wno-error=implicit-fallthrough to GCC 7.
push the setting into the rump and module version too.
 1.2 19-Oct-2015  pooka branches: 1.2.18;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 21-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
support zlib
 1.1.42.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 21-Jun-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-08-17 06:48:00 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 21-Jun-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 21-Jun-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-07-03 01:20:02 +0000
 1.2.18.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2.18.1 10-Jun-2019  christos Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 21-Jun-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
support zlib
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 21-Jun-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-08-17 06:48:00 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 21-Jun-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 21-Jun-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-07-03 01:20:02 +0000
 1.9 05-Dec-2010  pooka rumpcrypto should never have been its own faction, so finally make
it a component under kern, i.e. rumpcrypto -> rumpkern_crypto.
 1.8 26-Feb-2010  pooka branches: 1.8.2;
librumpuser is not _KERNEL code and does not belong in sys. Move
the source files from src/sys/rump/librump/rumpuser to src/lib/librumpuser
(from where it is already built). Even so, keep rumpuser.h in
sys/rump/include for kernel source tree self-containment.
 1.7 17-Nov-2009  pooka branches: 1.7.2;
Don't build rumpuser if NORUMPUSER is set.
 1.6 03-Sep-2009  pooka Build & install rumpdev, a device component for rump. It currently
supports autoconf and is required for example by pseudo-device rump
components.
 1.5 03-Sep-2009  pooka descend into librumpcrypto for a local build
 1.4 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.3 17-Nov-2008  pooka No need to .WAIT anymore: headers are done in a separate pass and
binaries are no longer in this subtree.
 1.2 15-Oct-2008  pooka branches: 1.2.2;
Add the basic rump networking library, which provides e.g. sockets
and mbufs. This is required by all network-using rump applications.
 1.1 05-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.30; 1.1.34; 1.1.40; 1.1.42;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.42.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.42.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:08 +0000
 1.1.40.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.40.1 19-Oct-2008  haad Sync with HEAD.
 1.1.34.3 11-Mar-2010  yamt sync with head
 1.1.34.2 16-Sep-2009  yamt sync with head
 1.1.34.1 04-May-2009  yamt sync with head.
 1.1.30.1 17-Jan-2009  mjf Sync with HEAD.
 1.1.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.1.14.1 05-Aug-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-11-02 12:43:49 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 05-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:24 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 05-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:25 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 05-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:34 +0000
 1.2.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.7.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.8.2.1 05-Mar-2011  rmind sync with head
 1.5 17-Feb-2009  pooka branches: 1.5.2;
Default to using threads. This doesn't affect the normal release build.
 1.4 02-Jan-2009  pooka branches: 1.4.2;
Define -DMODULAR in Makefile.rump instead of the sys/rump/librump
Makefile.inc so that it gets picked up by UPDATE=1
 1.3 01-Jan-2009  pooka Define MODULAR for rump core components. This enables module
loading via the kernel module framework (instead of dlopen()).
For now it only works on amd64 and i386, but for the rest it should
just be a matter of including the relevant kobj_machdep.c modules
from the kernel sources.
 1.2 30-Oct-2008  christos fix compilation and lint warnings.
 1.1 29-May-2008  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.10; 1.1.12;
Specify RUMP_WITHOUT_THREADS only in one place.
 1.1.12.2 03-Mar-2009  skrll Sync with HEAD.
 1.1.12.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.10.1 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.8.2 23-Jun-2008  wrstuden Add files to branch that were added on -current.

After this, all that's left of update is to merge some changes
that had conflicts.
 1.1.8.1 29-May-2008  wrstuden file Makefile.inc was added on branch wrstuden-revivesa on 2008-06-23 05:02:14 +0000
 1.1.4.2 04-Jun-2008  yamt sync with head
 1.1.4.1 29-May-2008  yamt file Makefile.inc was added on branch yamt-pf42 on 2008-06-04 02:05:48 +0000
 1.1.2.3 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.2 02-Jun-2008  mjf Sync with HEAD.
 1.1.2.1 29-May-2008  mjf file Makefile.inc was added on branch mjf-devfs2 on 2008-06-02 13:24:31 +0000
 1.4.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.5.2.2 04-May-2009  yamt sync with head.
 1.5.2.1 17-Feb-2009  yamt file Makefile.inc was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.10 26-Jan-2016  pooka include rumpif private headers from <rump-sys>
 1.9 23-Apr-2015  pooka support COMPAT_nn flags
 1.8 25-Apr-2014  pooka branches: 1.8.4;
create multi-inclusion protectors; some compilers don't like duplicate typedefs
 1.7 25-Apr-2014  pooka Automatogically create a function pointer type for each interface.
 1.6 14-Feb-2013  pooka branches: 1.6.2; 1.6.10;
Make it possible to manually specify the top level directory; for cases
where the target hierarchy is outside of the main tree.
 1.5 01-Sep-2010  pooka branches: 1.5.8; 1.5.18;
Print generated filenames so i remember which ones to commit.
 1.4 15-Oct-2009  pooka branches: 1.4.2; 1.4.4; 1.4.6;
Generate scheduling points in rump_pub calls.
 1.3 14-Oct-2009  pooka Actually, adjust previous a bit: instead of preserving the names
of the external interfaces and namespacing the internal ones to
"rumppriv", put the external ones in a "rump_pub" namespace. While
this requires adjusting all of the external callers of these
interfaces, it is the right thing to do in the long run, since it
clarifies the structure.
 1.2 14-Oct-2009  pooka adjust whitespace a bit
 1.1 14-Oct-2009  pooka Create rump public interfaces from description tables. This allows
us to control and wrap all entry points from "userspace" into rump.
This in turn is necessary for the upcoming rump cpu scheduler.

For each interface "foo" a public wrapper called "rump_foo" is
created. It calls the internal implementation "rumppriv_foo". In
case foo is to be called from inside of rump kernel space, the
private interface "rumppriv_foo" is used -- the userspace wrapper
prototypes are not even exported into the rump kernel namespace.
Needless to say, the rump kernel internal interfaces are not exported
for users.

Now, three classes of interfaces fight for control of rump:
+ the noble local control interfaces (which this commit addresses)
+ the insidious rump system calls (which are generated from syscalls.master)
+ and the evil vnode interfaces (which are generated from vnode_if.src)
 1.4.6.1 05-Mar-2011  rmind sync with head
 1.4.4.3 09-Oct-2010  yamt sync with head
 1.4.4.2 11-Mar-2010  yamt sync with head
 1.4.4.1 15-Oct-2009  yamt file makerumpif.sh was added on branch yamt-nfs-mp on 2010-03-11 15:04:37 +0000
 1.4.2.1 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.5.18.3 03-Dec-2017  jdolecek update from HEAD
 1.5.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.18.1 25-Feb-2013  tls resync with head
 1.5.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.10.1 10-Aug-2014  tls Rebase.
 1.6.2.1 18-May-2014  rmind sync with head
 1.8.4.2 19-Mar-2016  skrll Sync with HEAD
 1.8.4.1 06-Jun-2015  skrll Sync with HEAD
 1.2 12-Dec-2009  pooka Use linker script to make __start/stop_link_set_modules be present
in libs built with binutils >=2.19. This is a less error-prone
method than the previous where components had to be tagged in the
Makefile as modules (and if they weren't, things broke. and vice
versa).
 1.1 13-Sep-2009  pooka branches: 1.1.2;
binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
for orphaned sections to using PROVIDE. What this means is that
unless a rump component internally references that symbol, it will
not be included in the component shared library, and hence cannot
be referenced when the component is loaded. Add a workaround which
works both with 2.16 and 2.19: force a reference to the __start
symbol internally and hence retain it in the resulting library.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 16-Sep-2009  yamt sync with head
 1.1.2.1 13-Sep-2009  yamt file rump_domain.c was added on branch yamt-nfs-mp on 2009-09-16 13:38:04 +0000
 1.2 12-Dec-2009  pooka Use linker script to make __start/stop_link_set_modules be present
in libs built with binutils >=2.19. This is a less error-prone
method than the previous where components had to be tagged in the
Makefile as modules (and if they weren't, things broke. and vice
versa).
 1.1 13-Sep-2009  pooka branches: 1.1.2;
binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
for orphaned sections to using PROVIDE. What this means is that
unless a rump component internally references that symbol, it will
not be included in the component shared library, and hence cannot
be referenced when the component is loaded. Add a workaround which
works both with 2.16 and 2.19: force a reference to the __start
symbol internally and hence retain it in the resulting library.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 16-Sep-2009  yamt sync with head
 1.1.2.1 13-Sep-2009  yamt file rump_module.c was added on branch yamt-nfs-mp on 2009-09-16 13:38:04 +0000
 1.2 13-May-2019  bad On the one thousand and ninth day rump's mainbus was moved from
rumpdev to rumpkern, liberating all rumpnet users from the need to
-lrumpdev -lrumpvfs just because a loopback interface is mandatory.

Rename rumpdev/autoconf.c to rumpkern/rump_autoconf.c to avoid
accidentally picking up e.g. sys/arch/amd64/amd64/autoconf.c through
make's .PATH.
Move rumpdev/MAINBUS.ioconf to rumpkern.
 1.1 20-Sep-2013  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.36;
use ioconf for mainbus
 1.1.36.1 10-Jun-2019  christos Sync with HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 20-Sep-2013  tls file MAINBUS.ioconf was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 20-Sep-2013  yamt file MAINBUS.ioconf was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 20-Sep-2013  rmind file MAINBUS.ioconf was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.1 20-Jul-2009  pooka branches: 1.1.2; 1.1.4;
device subroutines and autoconfig support for rump. work in progress.
 1.1.4.2 19-Aug-2009  yamt sync with head.
 1.1.4.1 20-Jul-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-08-19 18:48:28 +0000
 1.1.2.2 23-Jul-2009  jym Sync with HEAD.
 1.1.2.1 20-Jul-2009  jym file Makefile was added on branch jym-xensuspend on 2009-07-23 23:32:54 +0000
 1.14 29-Jun-2021  pgoyette Rework the xxxVERBOSE option to share the common module-hook-based
verbose mechanism with MIIVERBOSE. This reduces some duplicated code
and allows us to once again permit auto-unload of MIIVERBOSE.

Change details:
* Update dev/devlist2h.awk to accomodate miidevs, including generation
of MII_STR_oui_model definitions and use of oui and model rather than
vendor and product. This also changes the compressed data in the
xxxdevs_data.h files to uint32_t (since mii oui's are up to 6 hex
digits long)
* Update a couple of phy drivers to use new calls to get verbose data
* Regen all of the xxxdevs{,_data}.h files (separate commit, coming
very soon)
* Update mii/mii_verbose.[ch] and mii/mii_physubr.c to use the various
DEV_VERBOSE_xxx macros
* Update the pci, usb, and hdaudio code as needed, to #include the
xxxdevs.h files (in order to get the proper printf format strings)
* Since dev/dev_verbose.c now uses non-literal printf format strings,
(to deal with the vendor/product vs oui/model issue), we need to
make sure it gets compiled with -Wno-error=format-nonliteral, even
in userland's libpci and librumpdev!
* Bump kernel version for the change in module interfaces

Welcome to 9.99.86!

XXX It might be useful in the future to extend the MII_STR_oui_model
XXX definitions to PCI as well (and perhaps USB and HDAUDIO). This
XXX would allow for a single centralized location for the products'
XXX descriptions, rather than being dispersed among individual
XXX drivers' xxx_match tables.
 1.13 13-May-2019  bad branches: 1.13.14;
On the one thousand and ninth day rump's mainbus was moved from
rumpdev to rumpkern, liberating all rumpnet users from the need to
-lrumpdev -lrumpvfs just because a loopback interface is mandatory.

Rename rumpdev/autoconf.c to rumpkern/rump_autoconf.c to avoid
accidentally picking up e.g. sys/arch/amd64/amd64/autoconf.c through
make's .PATH.
Move rumpdev/MAINBUS.ioconf to rumpkern.
 1.12 19-Oct-2015  pooka branches: 1.12.18;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.11 25-Aug-2015  pooka some final -Ifoo/opt removal
 1.10 20-May-2015  pooka build dev_verbose.c
 1.9 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.8 20-Sep-2013  pooka branches: 1.8.6;
use ioconf for mainbus
 1.7 19-Sep-2013  pooka Move the bus_dma implementation that works only with ugenhc into the
ugenhc component itself.
 1.6 15-Mar-2013  pooka branches: 1.6.6;
Allow Makefile.rump to append to SRCS.
 1.5 16-Feb-2010  pooka branches: 1.5.10; 1.5.20;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.4 09-Feb-2010  pooka Now that there is a working bus.h for all architectures, move rump
bus dma out of a wip place and into rumpdev where it belongs.
 1.3 09-Jan-2010  pooka branches: 1.3.2;
Include kern_pmf.c in rumpdev.
 1.2 06-Sep-2009  pooka Rename rump_dev_makenodes() to rump_vfs_makedevnodes() -- while it
will most likely be used devices, the implementation requires
services provided by vfs (mkdir, mknod).
 1.1 20-Jul-2009  pooka branches: 1.1.2; 1.1.4;
device subroutines and autoconfig support for rump. work in progress.
 1.1.4.4 11-Mar-2010  yamt sync with head
 1.1.4.3 16-Sep-2009  yamt sync with head
 1.1.4.2 19-Aug-2009  yamt sync with head.
 1.1.4.1 20-Jul-2009  yamt file Makefile.rumpdev was added on branch yamt-nfs-mp on 2009-08-19 18:48:28 +0000
 1.1.2.2 23-Jul-2009  jym Sync with HEAD.
 1.1.2.1 20-Jul-2009  jym file Makefile.rumpdev was added on branch jym-xensuspend on 2009-07-23 23:32:54 +0000
 1.3.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.5.20.3 03-Dec-2017  jdolecek update from HEAD
 1.5.20.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.20.1 23-Jun-2013  tls resync from head
 1.5.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.6.1 18-May-2014  rmind sync with head
 1.8.6.4 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.8.6.3 22-Sep-2015  skrll Sync with HEAD
 1.8.6.2 06-Jun-2015  skrll Sync with HEAD
 1.8.6.1 06-Apr-2015  skrll Sync with HEAD
 1.12.18.1 10-Jun-2019  christos Sync with HEAD
 1.13.14.1 01-Aug-2021  thorpej Sync with HEAD.
 1.10 13-May-2019  bad On the one thousand and ninth day rump's mainbus was moved from
rumpdev to rumpkern, liberating all rumpnet users from the need to
-lrumpdev -lrumpvfs just because a loopback interface is mandatory.

Rename rumpdev/autoconf.c to rumpkern/rump_autoconf.c to avoid
accidentally picking up e.g. sys/arch/amd64/amd64/autoconf.c through
make's .PATH.
Move rumpdev/MAINBUS.ioconf to rumpkern.
 1.9 26-Jan-2016  pooka branches: 1.9.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.8 20-Sep-2013  pooka branches: 1.8.6;
use ioconf for mainbus
 1.7 27-Oct-2012  chs branches: 1.7.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.6 08-Mar-2010  pooka branches: 1.6.10; 1.6.20;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.5 03-Feb-2010  pooka branches: 1.5.2;
Convert to match current ioconf fashion.
 1.4 03-Oct-2009  pooka pass unit number in mainbus attach args
 1.3 01-Oct-2009  pooka children of mainbus, attach (well, one child, iff it happens to be around)
 1.2 20-Sep-2009  pooka attach mainbus
 1.1 20-Jul-2009  pooka branches: 1.1.2; 1.1.4;
device subroutines and autoconfig support for rump. work in progress.
 1.1.4.3 11-Mar-2010  yamt sync with head
 1.1.4.2 19-Aug-2009  yamt sync with head.
 1.1.4.1 20-Jul-2009  yamt file autoconf.c was added on branch yamt-nfs-mp on 2009-08-19 18:48:29 +0000
 1.1.2.2 23-Jul-2009  jym Sync with HEAD.
 1.1.2.1 20-Jul-2009  jym file autoconf.c was added on branch jym-xensuspend on 2009-07-23 23:32:54 +0000
 1.5.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.6.20.3 03-Dec-2017  jdolecek update from HEAD
 1.6.20.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.20.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.6.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.10.1 30-Oct-2012  yamt sync with head
 1.7.2.1 18-May-2014  rmind sync with head
 1.8.6.1 19-Mar-2016  skrll Sync with HEAD
 1.9.18.1 10-Jun-2019  christos Sync with HEAD
 1.4 06-Sep-2009  pooka Rename rump_dev_makenodes() to rump_vfs_makedevnodes() -- while it
will most likely be used devices, the implementation requires
services provided by vfs (mkdir, mknod).
 1.3 04-Sep-2009  he Both amiga and atari needs <sys/lwp.h> explicitly included in order
for curlwp to be properly declared.
 1.2 02-Sep-2009  pooka add address space specifiers to do_sys_mk{dir,nod} calls
 1.1 20-Jul-2009  pooka branches: 1.1.2; 1.1.4;
device subroutines and autoconfig support for rump. work in progress.
 1.1.4.3 16-Sep-2009  yamt sync with head
 1.1.4.2 19-Aug-2009  yamt sync with head.
 1.1.4.1 20-Jul-2009  yamt file devnodes.c was added on branch yamt-nfs-mp on 2009-08-19 18:48:29 +0000
 1.1.2.2 23-Jul-2009  jym Sync with HEAD.
 1.1.2.1 20-Jul-2009  jym file devnodes.c was added on branch jym-xensuspend on 2009-07-23 23:32:54 +0000
 1.29 23-Apr-2023  riastradh rumpdev: Catch up to buf_syncwait -> vfs_syncwait rename.

Do similarly with a do_sys_sync weak stub so we can drop the rumpvfs
dependency.
 1.28 23-Feb-2020  jdolecek no need to call config_init_mi() in rumpdev any more - rump_init() now calls
config_init(), and the sysctl shouldn't be needed

PR kern/55004
 1.27 26-Jan-2016  pooka branches: 1.27.18; 1.27.24;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.26 13-Jun-2014  pooka branches: 1.26.4;
call config_create_mountrootthreads(), if applicable
 1.25 04-Apr-2014  christos branches: 1.25.2;
provide cpu_bootconf()
 1.24 20-Sep-2013  pooka use ioconf for mainbus
 1.23 17-Sep-2013  pooka Make it possible to run component constructors after mainbus attaches,
but before config_finalize() is run.
 1.22 14-Jan-2013  pooka branches: 1.22.2;
Remove routines which don't make sense (maybe they're some intermediate
phase of the component framework?)
 1.21 14-Jan-2013  pooka Don't use __weak_alias where the component framework is sufficient.
 1.20 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.19 28-Mar-2011  dyoung branches: 1.19.4; 1.19.14;
__HAVE_DEVICE_REGISTER_POSTCONFIG and __HAVE_DEVICE_REGISTER
are no more, so don't use them here.
 1.18 08-Mar-2010  pooka branches: 1.18.2; 1.18.4;
Use config pseudo-root keyword instead of monolithic configurations
starting from root.
 1.17 07-Mar-2010  pooka tweak previous to actually work
 1.16 07-Mar-2010  pooka pmf wants buf_syncwait() which is a part of optional vfs
 1.15 01-Mar-2010  pooka Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.14 03-Feb-2010  pooka branches: 1.14.2;
Convert to match current ioconf fashion.
 1.13 31-Jan-2010  pooka Add sysmon rump component.
 1.12 19-Jan-2010  pooka Add bpf rump component (and put in some wscons stuff i forgot to earlier).
 1.11 10-Jan-2010  martin Add a new optional function device_register_post_config(), symmetric to
device register, called after config is done with a device.
Only used if an arch defines __HAVE_DEVICE_REGISTER_POSTCONFIG.
 1.10 09-Jan-2010  pooka pmf_init()
 1.9 04-Dec-2009  haad Add initial version of RUMP based device-mapper port. libdm compile whole
device-mapper driver in userspace and allows us to test a develop new dm targets
in userspace.
 1.8 10-Oct-2009  pooka add some stubs required by raidframe linkage
 1.7 02-Oct-2009  pooka Hold on to your giantlocks while calling device autoconfusion.
 1.6 01-Oct-2009  pooka add a new init-related calls
 1.5 21-Sep-2009  pooka Split config_init() into config_init() and config_init_mi() to help
platforms which want to call config_init() very early in the boot.
 1.4 20-Sep-2009  pooka attach mainbus
 1.3 08-Sep-2009  pooka initialize rnd if present
 1.2 04-Sep-2009  pooka add netsmb rump component
(yes, it's functionally a device instead of a networking domain,
since it provides and is accessed through /dev/nsmb instead of
being accessed through sockets)
 1.1 20-Jul-2009  pooka branches: 1.1.2; 1.1.4;
device subroutines and autoconfig support for rump. work in progress.
 1.1.4.4 11-Mar-2010  yamt sync with head
 1.1.4.3 16-Sep-2009  yamt sync with head
 1.1.4.2 19-Aug-2009  yamt sync with head.
 1.1.4.1 20-Jul-2009  yamt file rump_dev.c was added on branch yamt-nfs-mp on 2009-08-19 18:48:29 +0000
 1.1.2.2 23-Jul-2009  jym Sync with HEAD.
 1.1.2.1 20-Jul-2009  jym file rump_dev.c was added on branch jym-xensuspend on 2009-07-23 23:32:54 +0000
 1.14.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.18.4.1 06-Jun-2011  jruoho Sync with HEAD.
 1.18.2.1 21-Apr-2011  rmind sync with head
 1.19.14.4 03-Dec-2017  jdolecek update from HEAD
 1.19.14.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.19.14.2 25-Feb-2013  tls resync with head
 1.19.14.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.19.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.19.4.2 23-Jan-2013  yamt sync with head
 1.19.4.1 30-Oct-2012  yamt sync with head
 1.22.2.1 18-May-2014  rmind sync with head
 1.25.2.1 10-Aug-2014  tls Rebase.
 1.26.4.1 19-Mar-2016  skrll Sync with HEAD
 1.27.24.1 29-Feb-2020  ad Sync with head.
 1.27.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.14 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.13 20-Sep-2013  pooka branches: 1.13.6;
use ioconf for mainbus
 1.12 13-Jun-2010  pooka branches: 1.12.8; 1.12.18; 1.12.22;
Move FLAWLESSCALL from rump_dev_private.h into rump_private.h
so it can be used outside of devices.
 1.11 25-Mar-2010  pooka define the incredible FLAWLESSCALL macro in one place
 1.10 01-Mar-2010  pooka branches: 1.10.2;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.9 31-Jan-2010  pooka branches: 1.9.2;
Add sysmon rump component.
 1.8 19-Jan-2010  pooka Add bpf rump component (and put in some wscons stuff i forgot to earlier).
 1.7 04-Dec-2009  haad Add initial version of RUMP based device-mapper port. libdm compile whole
device-mapper driver in userspace and allows us to test a develop new dm targets
in userspace.
 1.6 03-Oct-2009  pooka pass unit number in mainbus attach args
 1.5 01-Oct-2009  pooka add a new init-related calls
 1.4 08-Sep-2009  pooka initialize rnd if present
 1.3 06-Sep-2009  pooka Rename rump_dev_makenodes() to rump_vfs_makedevnodes() -- while it
will most likely be used devices, the implementation requires
services provided by vfs (mkdir, mknod).
 1.2 04-Sep-2009  pooka add netsmb rump component
(yes, it's functionally a device instead of a networking domain,
since it provides and is accessed through /dev/nsmb instead of
being accessed through sockets)
 1.1 20-Jul-2009  pooka branches: 1.1.2; 1.1.4;
device subroutines and autoconfig support for rump. work in progress.
 1.1.4.4 11-Mar-2010  yamt sync with head
 1.1.4.3 16-Sep-2009  yamt sync with head
 1.1.4.2 19-Aug-2009  yamt sync with head.
 1.1.4.1 20-Jul-2009  yamt file rump_dev_private.h was added on branch yamt-nfs-mp on 2009-08-19 18:48:29 +0000
 1.1.2.2 23-Jul-2009  jym Sync with HEAD.
 1.1.2.1 20-Jul-2009  jym file rump_dev_private.h was added on branch jym-xensuspend on 2009-07-23 23:32:54 +0000
 1.9.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.9.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.10.2.2 03-Jul-2010  rmind sync with head
 1.10.2.1 30-May-2010  rmind sync with head
 1.12.22.1 18-May-2014  rmind sync with head
 1.12.18.2 03-Dec-2017  jdolecek update from HEAD
 1.12.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.6.1 19-Mar-2016  skrll Sync with HEAD
 1.4 19-Sep-2013  pooka Move the bus_dma implementation that works only with ugenhc into the
ugenhc component itself.
 1.3 15-Jul-2011  dyoung branches: 1.3.2; 1.3.12; 1.3.16;
Use <sys/bus.h> not <machine/bus.h>.
 1.2 01-Mar-2010  pooka branches: 1.2.2; 1.2.6;
Free memory in unmap instead of panicking.
(this is currently not very actively called, though, as can be seen
from the previous "implementation")
 1.1 09-Feb-2010  pooka Now that there is a working bus.h for all architectures, move rump
bus dma out of a wip place and into rumpdev where it belongs.
 1.2.6.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.6.1 01-Mar-2010  uebayasi file rumpdma.c was added on branch uebayasi-xip on 2010-04-30 14:44:29 +0000
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 01-Mar-2010  yamt file rumpdma.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:37 +0000
 1.3.16.1 18-May-2014  rmind sync with head
 1.3.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2 21-Aug-2015  christos Remove KERN.ioconf, ksyms does not really need it.
 1.1 20-Aug-2015  christos generate ioconf.h for pseudo-device attach prototype
 1.3 17-Dec-2019  ad Rump is living up to its name
 1.2 16-Dec-2019  ad - Extend the per-CPU counters matt@ did to include all of the hot counters
in UVM, excluding uvmexp.free, which needs special treatment and will be
done with a separate commit. Cuts system time for a build by 20-25% on
a 48 CPU machine w/DIAGNOSTIC.

- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
 1.1 13-May-2019  bad branches: 1.1.2;
On the one thousand and ninth day rump's mainbus was moved from
rumpdev to rumpkern, liberating all rumpnet users from the need to
-lrumpdev -lrumpvfs just because a loopback interface is mandatory.

Rename rumpdev/autoconf.c to rumpkern/rump_autoconf.c to avoid
accidentally picking up e.g. sys/arch/amd64/amd64/autoconf.c through
make's .PATH.
Move rumpdev/MAINBUS.ioconf to rumpkern.
 1.1.2.2 10-Jun-2019  christos Sync with HEAD
 1.1.2.1 13-May-2019  christos file MAINBUS.ioconf was added on branch phil-wifi on 2019-06-10 22:09:53 +0000
 1.43 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.42 28-Jul-2008  pooka blkset.S is needed on vax by some macros, so include it in the build.
 1.41 20-Jul-2008  pooka You must untypo what you have typoed: rumpnode_if.h -> rumpvnode_if.h
 1.40 16-Jul-2008  pooka vfs_subr2 has lost its will to live. vfs_subr was originally split
into two parts so that some of the routines could be used by rump.
Now that rump uses both vfs_subr and vfs_subr2 and there is no
reason to keep two files lying around, re-unite them.
 1.39 02-Jul-2008  he branches: 1.39.2;
Add dependencies on the input files + Makefile for the auto-generated
files rumpdefs.h, rumpnode_if.h, and rumpvnode_if.c. This is so that
an UPDATE build has a chance of succeeding.

Discussed with pooka@, and he wasn't totally against adding this...
 1.38 01-Jul-2008  pooka Fixes to build rump utilities as host binaries on Linux by removing
sys namespace pollution which has crept in.

Submitted in private mail by takemura, domain ca2.so-net.ne.jp
 1.37 30-Jun-2008  matt Don't build rb.c anymore since it's in libc now.
 1.36 25-Jun-2008  pooka Don't compile kern_lock for rump any more, it's no longer required.
Allows us to get rid of the incorrect _RUMPKERNEL ifdefs outside sys/rump.
 1.35 05-Jun-2008  ad branches: 1.35.2;
Make it build again.
 1.34 29-May-2008  pooka Specify RUMP_WITHOUT_THREADS only in one place.
 1.33 04-May-2008  ad branches: 1.33.2;
Pull in the kernel module stuff so that rump can set up built-in modules.
 1.32 21-Mar-2008  ad branches: 1.32.2; 1.32.4;
Catch up with descriptor handling changes. See kern_descrip.c revision
1.173 for details.
 1.31 11-Mar-2008  pooka Compile rump_syscalls, use them in a few places.
 1.30 11-Mar-2008  pooka Backup some fixes for recent breakage from local tree. Also some
other improvements such as exporting the real kernel namei and
using that in ukfs instead of the homegrown heap'o hacks namei.
"etcetc".
 1.29 28-Jan-2008  pooka branches: 1.29.2; 1.29.6;
compile genfs_vfsops.c (hi dh2 ;)
 1.28 27-Jan-2008  pooka Use vfs_subr.c from sys/kern. This brings differences in the vnode
life cycle between rump and a real kernel to a minimum.
 1.27 25-Jan-2008  pooka Include vfs_getcwd.c too. It isn't used currently, but it's linked.
 1.26 24-Jan-2008  pooka Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().
 1.25 02-Jan-2008  pooka Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.24 02-Jan-2008  ad Build intr.c.
 1.23 30-Dec-2007  pooka pull in atomic ops from vmlocking2
 1.22 30-Nov-2007  dsl branches: 1.22.2; 1.22.6;
Temporarily make 'atomic_add_int()' a non-atomic add so the build suceeds.
At some point the functions will (presumably) make their way into either
libc or libutil.
 1.21 31-Oct-2007  pooka branches: 1.21.2;
Include bufq priority implementations also and link librump with
--whole-archive since the bufq priorities use link sets.
 1.20 31-Oct-2007  pooka Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.19 26-Oct-2007  pooka branches: 1.19.2;
RUMUSEROBJDIR -> RUMPUSEROBJDIR (those cold-blooded old times ...)
 1.18 17-Oct-2007  pooka branches: 1.18.2;
Compile most genfs routines directly out of the kernel sources.
Move special I/O routines to genfs_io.c to mirror kernel naming.
 1.17 11-Sep-2007  pooka branches: 1.17.2;
create generated files before running makedepend
 1.16 10-Sep-2007  pooka no need to include param.c twice in the source list
 1.15 26-Aug-2007  pooka branches: 1.15.2; 1.15.4;
split implemented lock stuff out of lock_stub.c into lock.c
 1.14 25-Aug-2007  pooka Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.
 1.13 21-Aug-2007  pooka Implement credentials. Access control is now similar to if the file
system were run in the kernel.
 1.12 20-Aug-2007  pooka branches: 1.12.2;
Hide NetBSD kernel headers completely from ukfs. This includes creating
accessors for:
* struct mount & VFS ops
* struct uio
* struct vnode
* struct vattr

and some namespace games for:
* namei flags
* VOPs
* enum vtype

Also, split rump services into two categories: library private and public
(rump_private.h and rump.h, respectively).

As a result, it is now possible to compile and use the NetBSD kernel
file systems on Linux (and probably other systems too with very
little work), although the makefiles need a bit of work to make it
a pleasureable experience.
 1.11 19-Aug-2007  pooka Namespace management: do not call VOP_FOO directly from ukfs or
p2k, but rather make the calls go through librump. This avoids
having to include NetBSD kernel headers in userspace programs.
Stay tuned for some more mods of the same sort ...
 1.10 16-Aug-2007  pooka jump through rename hoops (hi ad!)
 1.9 14-Aug-2007  pooka branches: 1.9.2;
Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.8 14-Aug-2007  pooka compile in clock_subr.c
 1.7 13-Aug-2007  pooka Use supermarket variety vfs_vnops.c instead of homecooked routines
(that's actually a good thing here).
 1.6 13-Aug-2007  pooka compile in libkern __assert.c, argument order differs from libc model
 1.5 09-Aug-2007  pooka Play catchup with ufs/ffs changes: compile subr_specificdata.c
and emulate kmem_foo() to support the prior.
 1.4 09-Aug-2007  pooka * compile subr_time.c from kern/
* some pmap stubs
 1.3 08-Aug-2007  pooka * compile param.c
* move opts to a separate directory
 1.2 07-Aug-2007  pooka flip order of includes to get NETBSDSRCDIR. from agc
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file Makefile was added on branch matt-mips64 on 2007-08-05 22:28:08 +0000
 1.9.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.9.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.9.2.1 14-Aug-2007  skrll file Makefile was added on branch nick-csl-alignment on 2007-08-15 13:50:35 +0000
 1.12.2.5 23-Oct-2007  ad Sync with head.
 1.12.2.4 12-Oct-2007  ad Fix merge errors.
 1.12.2.3 09-Oct-2007  ad Sync with head.
 1.12.2.2 20-Aug-2007  ad Sync with HEAD.
 1.12.2.1 20-Aug-2007  ad file Makefile was added on branch vmlocking on 2007-08-20 22:07:26 +0000
 1.15.4.9 24-Mar-2008  yamt sync with head.
 1.15.4.8 17-Mar-2008  yamt sync with head.
 1.15.4.7 04-Feb-2008  yamt sync with head.
 1.15.4.6 21-Jan-2008  yamt sync with head
 1.15.4.5 07-Dec-2007  yamt sync with head
 1.15.4.4 15-Nov-2007  yamt sync with head.
 1.15.4.3 27-Oct-2007  yamt sync with head.
 1.15.4.2 03-Sep-2007  yamt sync with head.
 1.15.4.1 26-Aug-2007  yamt file Makefile was added on branch yamt-lazymbuf on 2007-09-03 14:45:24 +0000
 1.15.2.3 23-Mar-2008  matt sync with HEAD
 1.15.2.2 09-Jan-2008  matt sync with HEAD
 1.15.2.1 06-Nov-2007  matt sync with HEAD
 1.17.2.1 18-Oct-2007  yamt sync with head.
 1.18.2.1 13-Nov-2007  bouyer Sync with HEAD
 1.19.2.3 03-Dec-2007  joerg Sync with HEAD.
 1.19.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.19.2.1 26-Oct-2007  joerg file Makefile was added on branch jmcneill-pm on 2007-10-31 23:14:15 +0000
 1.21.2.2 18-Feb-2008  mjf Sync with HEAD.
 1.21.2.1 08-Dec-2007  mjf Sync with HEAD.
 1.22.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.22.2.1 28-Dec-2007  ad Make rump build.
 1.29.6.6 28-Sep-2008  mjf Sync with HEAD.
 1.29.6.5 02-Jul-2008  mjf Sync with HEAD.
 1.29.6.4 29-Jun-2008  mjf Sync with HEAD.
 1.29.6.3 05-Jun-2008  mjf Sync with HEAD.

Also fix build.
 1.29.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.29.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.29.2.1 24-Mar-2008  keiichi sync with head.
 1.32.4.2 04-May-2009  yamt sync with head.
 1.32.4.1 16-May-2008  yamt sync with head.
 1.32.2.3 17-Jun-2008  yamt sync with head.
 1.32.2.2 04-Jun-2008  yamt sync with head
 1.32.2.1 18-May-2008  yamt sync with head.
 1.33.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.33.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.35.2.7 31-Jul-2008  simonb Sync with head.
 1.35.2.6 21-Jul-2008  simonb Sync with head.
 1.35.2.5 18-Jul-2008  simonb Sync with head.
 1.35.2.4 03-Jul-2008  simonb Sync with head.
 1.35.2.3 01-Jul-2008  matt More rb.c / wapbl fallout cleanup.
 1.35.2.2 27-Jun-2008  simonb Sync with head.
 1.35.2.1 10-Jun-2008  simonb Initial commit of Wasabi System's WAPBL (Write Ahead Physical Block
Logging) journaling code. Originally written by Darrin B. Jewell
while at Wasabi and updated to -current by Antti Kantee, Andy Doran,
Greg Oster and Simon Burge.

Still a number of issues - look in doc/BRANCHES for "simonb-wapbl"
for more info.
 1.39.2.1 19-Oct-2008  haad Sync with HEAD.
 1.192 22-Dec-2024  riastradh kern: Move some purely arithmetic routines to subr_time_arith.c.

Preparation for testing and fixing:

PR kern/58922: itimer(9): arithmetic overflow
PR kern/58925: itimer(9) responds erratically to clock wound back
PR kern/58926: itimer(9) integer overflow in overrun counting
PR kern/58927: itimer(9): overrun accounting is broken
 1.191 03-Jun-2023  lukem branches: 1.191.6;
bsd.own.mk: rename GCC_NO_* to CC_WNO_*

Rename compiler-warning-disable variables from
GCC_NO_warning
to
CC_WNO_warning
where warning is the full warning name as used by the compiler.

GCC_NO_IMPLICIT_FALLTHRU is CC_WNO_IMPLICIT_FALLTHROUGH

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.190 22-Apr-2023  riastradh rump: Move vnode_if.c from rumpkern to rumpvfs.

This has become increasingly less of a `fully dynamic interface', and
the need for it in the rest of sys/kern/ has been obviated, so let's
put it where it belongs in rumpvfs.
 1.189 22-Apr-2023  riastradh secmodel_extensions: Split vfs part into separate .c file.

This way we can provide weak rumpkern stubs that don't require
rumpvfs for things that are relevant to vfs, but if you do link
rumpvfs then you get the same logic in secmodel extensions.
 1.188 28-Mar-2022  christos include the extensions secmodel
 1.187 27-Aug-2020  riastradh Sort includes, nix trailing whitespace, fix comment.
 1.186 27-Aug-2020  riastradh Move address hashing from init_main.c to kern_sysctl.c.

This way rump gets it automatically. Make sure blake2s is in
librumpkern.so, not just in librumpkern_crypto.so, for this to work.
 1.185 14-Aug-2020  riastradh New system call getrandom() compatible with Linux and others.

Three ways to call:

getrandom(p, n, 0) Blocks at boot until full entropy.
Returns up to n bytes at p; guarantees
up to 256 bytes even if interrupted
after blocking. getrandom(0,0,0)
serves as an entropy barrier: return
only after system has full entropy.

getrandom(p, n, GRND_INSECURE) Never blocks. Guarantees up to 256
bytes even if interrupted. Equivalent
to /dev/urandom. Safe only after
successful getrandom(...,0),
getrandom(...,GRND_RANDOM), or read
from /dev/random.

getrandom(p, n, GRND_RANDOM) May block at any time. Returns up to n
bytes at p, but no guarantees about how
many -- may return as short as 1 byte.
Equivalent to /dev/random. Legacy.
Provided only for source compatibility
with Linux.

Can also use flags|GRND_NONBLOCK to fail with EWOULDBLOCK/EAGAIN
without producing any output instead of blocking.

- The combination GRND_INSECURE|GRND_NONBLOCK is the same as
GRND_INSECURE, since GRND_INSECURE never blocks anyway.

- The combinations GRND_INSECURE|GRND_RANDOM and
GRND_INSECURE|GRND_RANDOM|GRND_NONBLOCK are nonsensical and fail
with EINVAL.

As proposed on tech-userlevel, tech-crypto, tech-security, and
tech-kern, and subsequently adopted by core (minus the getentropy part
of the proposal, because other operating systems and participants in
the discussion couldn't come to an agreement about getentropy and
blocking semantics):

https://mail-index.netbsd.org/tech-userlevel/2020/05/02/msg012333.html
 1.184 28-Jul-2020  riastradh Rewrite cprng_fast in terms of new ChaCha API.
 1.183 30-Apr-2020  riastradh Rewrite entropy subsystem.

Primary goals:

1. Use cryptography primitives designed and vetted by cryptographers.
2. Be honest about entropy estimation.
3. Propagate full entropy as soon as possible.
4. Simplify the APIs.
5. Reduce overhead of rnd_add_data and cprng_strong.
6. Reduce side channels of HWRNG data and human input sources.
7. Improve visibility of operation with sysctl and event counters.

Caveat: rngtest is no longer used generically for RND_TYPE_RNG
rndsources. Hardware RNG devices should have hardware-specific
health tests. For example, checking for two repeated 256-bit outputs
works to detect AMD's 2019 RDRAND bug. Not all hardware RNGs are
necessarily designed to produce exactly uniform output.

ENTROPY POOL

- A Keccak sponge, with test vectors, replaces the old LFSR/SHA-1
kludge as the cryptographic primitive.

- `Entropy depletion' is available for testing purposes with a sysctl
knob kern.entropy.depletion; otherwise it is disabled, and once the
system reaches full entropy it is assumed to stay there as far as
modern cryptography is concerned.

- No `entropy estimation' based on sample values. Such `entropy
estimation' is a contradiction in terms, dishonest to users, and a
potential source of side channels. It is the responsibility of the
driver author to study the entropy of the process that generates
the samples.

- Per-CPU gathering pools avoid contention on a global queue.

- Entropy is occasionally consolidated into global pool -- as soon as
it's ready, if we've never reached full entropy, and with a rate
limit afterward. Operators can force consolidation now by running
sysctl -w kern.entropy.consolidate=1.

- rndsink(9) API has been replaced by an epoch counter which changes
whenever entropy is consolidated into the global pool.
. Usage: Cache entropy_epoch() when you seed. If entropy_epoch()
has changed when you're about to use whatever you seeded, reseed.
. Epoch is never zero, so initialize cache to 0 if you want to reseed
on first use.
. Epoch is -1 iff we have never reached full entropy -- in other
words, the old rnd_initial_entropy is (entropy_epoch() != -1) --
but it is better if you check for changes rather than for -1, so
that if the system estimated its own entropy incorrectly, entropy
consolidation has the opportunity to prevent future compromise.

- Sysctls and event counters provide operator visibility into what's
happening:
. kern.entropy.needed - bits of entropy short of full entropy
. kern.entropy.pending - bits known to be pending in per-CPU pools,
can be consolidated with sysctl -w kern.entropy.consolidate=1
. kern.entropy.epoch - number of times consolidation has happened,
never 0, and -1 iff we have never reached full entropy

CPRNG_STRONG

- A cprng_strong instance is now a collection of per-CPU NIST
Hash_DRBGs. There are only two in the system: user_cprng for
/dev/urandom and sysctl kern.?random, and kern_cprng for kernel
users which may need to operate in interrupt context up to IPL_VM.

(Calling cprng_strong in interrupt context does not strike me as a
particularly good idea, so I added an event counter to see whether
anything actually does.)

- Event counters provide operator visibility into when reseeding
happens.

INTEL RDRAND/RDSEED, VIA C3 RNG (CPU_RNG)

- Unwired for now; will be rewired in a subsequent commit.
 1.182 15-Jan-2020  ad Merge from yamt-pagecache (after much testing):

- Reduce unnecessary page scan in putpages esp. when an object has a ton of
pages cached but only a few of them are dirty.

- Reduce the number of pmap operations by tracking page dirtiness more
precisely in uvm layer.
 1.181 20-Dec-2019  ad branches: 1.181.2;
Split subr_cpu.c out of kern_cpu.c, to contain routines shared with rump.
 1.180 16-Dec-2019  ad - Extend the per-CPU counters matt@ did to include all of the hot counters
in UVM, excluding uvmexp.free, which needs special treatment and will be
done with a separate commit. Cuts system time for a build by 20-25% on
a 48 CPU machine w/DIAGNOSTIC.

- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
 1.179 15-Dec-2019  ad Merge from yamt-pagecache:

- do gang lookup of pages using radixtree.
- remove now unused uvm_object::uo_memq and vm_page::listq.queue.
 1.178 12-Dec-2019  pgoyette Eliminate per-hook duplication of common code as suggested by
(and with major contributions from) riastradh@

Welcome to 9.99.23
 1.177 13-Oct-2019  mrg introduce some common variables for use in GCC warning disables:

GCC_NO_FORMAT_TRUNCATION -Wno-format-truncation (GCC 7/8)
GCC_NO_STRINGOP_TRUNCATION -Wno-stringop-truncation (GCC 8)
GCC_NO_STRINGOP_OVERFLOW -Wno-stringop-overflow (GCC 8)
GCC_NO_CAST_FUNCTION_TYPE -Wno-cast-function-type (GCC 8)

use these to turn off warnings for most GCC-8 complaints. many
of these are false positives, most of the real bugs are already
commited, or are yet to come.


we plan to introduce versions of (some?) of these that use the
"-Wno-error=" form, which still displays the warnings but does
not make it an error, and all of the above will be re-considered
as either being "fix me" (warning still displayed) or "warning
is wrong."
 1.176 02-Sep-2019  riastradh Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:

- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (https://eprint.iacr.org/2018/349)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:

- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...

XXX pullup-7
XXX pullup-8
XXX pullup-9
 1.175 13-May-2019  bad branches: 1.175.2;
On the one thousand and ninth day rump's mainbus was moved from
rumpdev to rumpkern, liberating all rumpnet users from the need to
-lrumpdev -lrumpvfs just because a loopback interface is mandatory.

Rename rumpdev/autoconf.c to rumpkern/rump_autoconf.c to avoid
accidentally picking up e.g. sys/arch/amd64/amd64/autoconf.c through
make's .PATH.
Move rumpdev/MAINBUS.ioconf to rumpkern.
 1.174 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.173 24-Dec-2018  thorpej Add threadpool(9), an abstraction that provides shared pools of kernel
threads running at specific priorities, with support for unbound pools
and per-cpu pools.

Written by riastradh@, and based on the May 2014 draft, with a few changes
by me:
- Working on the assumption that a relative few priorities will actually
be used, reduce the memory footprint by using linked lists, rather than
2 large (and mostly empty) tables. The performance impact is essentially
nil, since these lists are consulted only when pools are created (and
destroyed, for DIAGNOSTIC checks), and the lists will have at most 225
entries.
- Make threadpool job object, which the caller must allocate storage for,
really opaque.
- Use typedefs for the threadpool types, to reduce the verbosity of the
API somewhat.
- Fix a bunch of pool / worker thread / job object lifecycle bugs.

Also include an ATF unit test, written by me, that exercises the basics
of the API by loading a kernel module that exposes several sysctls that
allow the ATF test script to create and destroy threadpools, schedule a
basic job, and verify that it ran.

And thus NetBSD 8.99.29 has arrived.
 1.172 16-Dec-2018  rmind Import thmap -- a concurrent trie-hash map, combining the elements of
hashing and radix trie. It supports lock-free lookups and concurrent
inserts/deletes. It is designed to be optimal as a general purpose
*concurrent* associative array.

Upstream: https://github.com/rmind/thmap
Discussed on tech-kern@
 1.171 14-Sep-2018  mrg retire kern_xxx.c. long live kern_xxx.c.

split it into kern_reboot.c and kern_scdebug.c. while here,
add my copyright to kern_scdebug.c as it was largely rewritten
for kernhist support.
 1.170 25-Jul-2017  ozaki-r branches: 1.170.2; 1.170.4;
Add localcount to rump kernels
 1.169 08-Apr-2017  christos branches: 1.169.4; 1.169.6;
adjust flag.
 1.168 20-Aug-2016  christos branches: 1.168.2;
need kern_ssp.c for a full SSP build.
 1.167 11-Apr-2016  ozaki-r branches: 1.167.2;
Add psref to rump kernel
 1.166 26-Jan-2016  pooka nuke a few missed -Ifactiondir CPPFLAGSitions.
 1.165 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.164 15-Sep-2015  pooka Use the more widely accepted version of alphabetical order.
 1.163 31-Aug-2015  ozaki-r Allow rumpkernel to use rw_obj_*
 1.162 21-Aug-2015  christos Remove KERN.ioconf, ksyms does not really need it.
 1.161 20-Aug-2015  christos generate ioconf.h for pseudo-device attach prototype
 1.160 17-Jun-2015  pooka Remove unreal allocators, unconditionally use subr_{kmem,pool}.

Will, with other work, allow to tighten the memory allocation hypercall
specification to page-granularity allocations in the future.
 1.159 23-Apr-2015  pooka Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.
 1.158 23-Apr-2015  pooka g/c the never-used and never-useful hyperstubs.c
 1.157 22-Apr-2015  pooka Build compat code only when specified by RUMP_COMPAT
 1.156 22-Apr-2015  pooka Include kern_clock.c in rump kernels.
 1.155 14-Apr-2015  riastradh Fix rump build: rndpseudo_50.c now needed by kernel, not rnd device.
 1.154 04-Feb-2015  pooka default newvers.sh parameters to reproducible build
 1.153 07-Jan-2015  pooka Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.152 03-Jan-2015  pooka Put all sysproxy routines to their own C module, sysproxy.c
 1.151 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.150 09-Nov-2014  pooka branches: 1.150.2;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.149 11-Aug-2014  matt Add MKCOMPAT support for aarch64 (COMPAT_MACHINE_CPU)
 1.148 10-Aug-2014  tls branches: 1.148.2; 1.148.4; 1.148.8;
Merge tls-earlyentropy branch into HEAD.
 1.147 05-Jun-2014  rmind librump: include pcq(9) interface.
 1.146 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 7:

Build component constructors which establish syscalls at boottime.
 1.145 25-Apr-2014  pooka gardenize rump.c: move data structure helper routines to accessors.c
 1.144 25-Apr-2014  pooka Move the etfs linkage from rumpvfs to rumpkern, and replace the
weak alias show with an honest pointer indirection.

No client-visible change. (apart from this version working e.g.
on musl w/ dlopen)
 1.143 04-Apr-2014  njoly branches: 1.143.2;
Add compat 50 time syscalls, needed by rump sys_linux.
 1.142 02-Apr-2014  pooka Put nanosleep() and folks in librump instead of maintaining them in
the separate rumpkern_time component. Keeping time-related routines
elsewhere lead to some illogical behavior if you didn't think of linking
in rumpkern_time (hands up everyone who checks the return value of
nanosleep()).

Add warnings if rumpkern_time is linked or used. I'll remove it in a
month or two instead of now since it was part of a buildrump.sh snapshot
and it's nicer if trying to use it gives a warning instead of an error
in the next snapshot.

"everything should be as modular as possible, but no more modular than that"
 1.141 15-Mar-2014  pooka Use uniprocessor-optimized locking in RUMP_LOCKS_UP=yes (default: no)
 1.140 13-Mar-2014  pooka Allow multiple "rumpcomp_user" source modules to be specified by
introducing RUMPCOMP_USER_SRCS. Make RUMPCOMP_USER issue a deprecation
warning, but for compat make it set RUMPCOMP_USER_SRCS=rumpcomp_user.c
for now.
 1.139 10-Mar-2014  pooka Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.
 1.138 28-Feb-2014  matt Use the new FEAT_LDREX to replace ARMV6/ARMV7
 1.137 18-Feb-2014  pooka Use same uvm_swap_shutdown() stub for !vmswap kernels and rump kernels.
 1.136 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.135 17-Jan-2014  pooka Use subr_cprng.c instead of stub implementation. Rijndael migrates from
rumpkern_crypto to rumpkern due to it being mandatory for cprng.
 1.134 09-Dec-2013  pooka Make ktrace a compile-time option
 1.133 09-Dec-2013  pooka Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.
 1.132 07-Sep-2013  pooka Add an initial console device and open fd's 0/1/2 for initproc. This is
again useful in standalone-type environments such as Xen, where all
printf/etc calls go through the rump kernel.
 1.131 03-Sep-2013  pooka + don't rename rump_syscalls.*o
+ support RUMP_KERNEL_IS_LIBC
 1.130 22-Aug-2013  matt Teach this about ARMV7
 1.129 18-Jul-2013  matt Coldfire uses atomic_cas_generic.c
 1.128 23-Jun-2013  riastradh branches: 1.128.2; 1.128.4;
Rework rndsink(9) abstraction and adapt arc4random(9) and cprng(9).

rndsink(9):
- Simplify API.
- Simplify locking scheme.
- Add a man page.
- Avoid races in destruction.
- Avoid races in requesting entropy now and scheduling entropy later.

Periodic distribution of entropy to sinks reduces the need for the
last one, but this way we don't need to rely on periodic distribution
(e.g., in a future tickless NetBSD).

rndsinks_lock should probably eventually merge with the rndpool lock,
but we'll put that off for now.

cprng(9):
- Make struct cprng_strong opaque.
- Move rndpseudo.c parts that futz with cprng guts to subr_cprng.c.
- Fix kevent locking. (Is kevent locking documented anywhere?)
- Stub out rump cprng further until we can rumpify rndsink instead.
- Strip code to grovel through struct cprng_strong in fstat.
 1.127 01-May-2013  pooka Actually, there's no point in unconditionally compiling in weak stubs
which will never be used in the NetBSD build. Comment hyperstubs.c
out from SRCS, but retain the source module as documentation.
 1.126 30-Apr-2013  pooka weak stubs for optional hypercalls
 1.125 27-Apr-2013  pooka * treat kern_malloc.c as an unreal allocator (it's so lightweight)
* get rid of the rumpuser_realloc() hypercall
* pass size to rumpuser_free()
 1.124 15-Mar-2013  pooka Allow Makefile.rump to append to SRCS.
 1.123 10-Mar-2013  pooka Use kern_malloc.c instead of the relegated allocators in memalloc.c.
Previously this didn't make sense due to the use of kmem_map, but the
new malloc is more dynamic and puts sense into using it.
 1.122 10-Mar-2013  pooka Always include subr_vmem.c, even with RUMP_UNREAL_ALLOCATORS=yes
(previously it was just missing in that case).

Record wchan to unreal pool_init() to avoid memory leak warning.
 1.121 30-Dec-2012  pooka Take into account armv6 hacks from common/lib/libc/arch/arm/atomic to
allow this to build with -march=armv6k
 1.120 04-Nov-2012  apb Add references to ${_NETBSD_VERSION_DEPENDS} for files that
need to be re-created when the NetBSD version changes. They
will also be re-created when any build settings are changed.
 1.119 20-Jul-2012  pooka branches: 1.119.2;
Make it possible to select between real and unreal allocators from
make. Plus some gratuitous renaming.
 1.118 22-Jun-2012  rmind rumpkern:
- Add subr_kcpuset.c and subr_pserialize.c modules.
- Add kcpuset_{running,attached} for RUMP env.
 1.117 29-Apr-2012  rmind G/C kern_malloc_stdtype.c
 1.116 10-Mar-2012  joerg P1003_1B_SEMAPHORE is no longer optional.
 1.115 02-Feb-2012  tls branches: 1.115.2;
Entropy-pool implementation move and cleanup.

1) Move core entropy-pool code and source/sink/sample management code
to sys/kern from sys/dev.

2) Remove use of NRND as test for presence of entropy-pool code throughout
source tree.

3) Remove use of RND_ENABLED in device drivers as microoptimization to
avoid expensive operations on disabled entropy sources; make the
rnd_add calls do this directly so all callers benefit.

4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might
have lead to slight entropy overestimation for some sources.

5) Add new source types for environmental sensors, power sensors, VM
system events, and skew between clocks, with a sample implementation
for each.

ok releng to go in before the branch due to the difficulty of later
pullup (widespread #ifdef removal and moved files). Tested with release
builds on amd64 and evbarm and live testing on amd64.
 1.114 04-Dec-2011  jym Implement the register/deregister/evaluation API for secmodel(9). It
allows registration of callbacks that can be used later for
cross-secmodel "safe" communication.

When a secmodel wishes to know a property maintained by another
secmodel, it has to submit a request to it so the other secmodel can
proceed to evaluating the request. This is done through the
secmodel_eval(9) call; example:

bool isroot;
error = secmodel_eval("org.netbsd.secmodel.suser", "is-root",
cred, &isroot);
if (error == 0 && !isroot)
result = KAUTH_RESULT_DENY;

This one asks the suser module if the credentials are assumed to be root
when evaluated by suser module. If the module is present, it will
respond. If absent, the call will return an error.

Args and command are arbitrarily defined; it's up to the secmodel(9) to
document what it expects.

Typical example is securelevel testing: when someone wants to know
whether securelevel is raised above a certain level or not, the caller
has to request this property to the secmodel_securelevel(9) module.
Given that securelevel module may be absent from system's context (thus
making access to the global "securelevel" variable impossible or
unsafe), this API can cope with this absence and return an error.

We are using secmodel_eval(9) to implement a secmodel_extensions(9)
module, which plugs with the bsd44, suser and securelevel secmodels
to provide the logic behind curtain, usermount and user_set_cpu_affinity
modes, without adding hooks to traditional secmodels. This solves a
real issue with the current secmodel(9) code, as usermount or
user_set_cpu_affinity are not really tied to secmodel_suser(9).

The secmodel_eval(9) is also used to restrict security.models settings
when securelevel is above 0, through the "is-securelevel-above"
evaluation:
- curtain can be enabled any time, but cannot be disabled if
securelevel is above 0.
- usermount/user_set_cpu_affinity can be disabled any time, but cannot
be enabled if securelevel is above 0.

Regarding sysctl(7) entries:
curtain and usermount are now found under security.models.extensions
tree. The security.curtain and vfs.generic.usermount are still
accessible for backwards compat.

Documentation is incoming, I am proof-reading my writings.

Written by elad@, reviewed and tested (anita test + interact for rights
tests) by me. ok elad@.

See also
http://mail-index.netbsd.org/tech-security/2011/11/29/msg000422.html

XXX might consider va0 mapping too.

XXX Having a secmodel(9) specific printf (like aprint_*) for reporting
secmodel(9) errors might be a good idea, but I am not sure on how
to design such a function right now.
 1.113 27-Nov-2011  tsutsui branches: 1.113.2;
Revert "stopcap fix" for rump by christos, which causes build failure on
most non-x86 ports and seems unnecessary. (caused by wrong rump_namei.h?)
 1.112 25-Nov-2011  christos Add subr_open_disk.c for getdiskinfo(). Once we get rid of getdiskinfo,
this will not be needed.
 1.111 19-Nov-2011  tls First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.110 12-Jun-2011  mrg branches: 1.110.2;
include uvm_object.c in the rump kernel for the new uvm_obj* functions.
don't build the uvm_object.c uvm_object_printit() for _RUMPKERNEL. (XXX)
add empty panic() stubs for uvm_loanbreak() and ubc_purge().

fixes some more 5.99.53 rump build issues.
 1.109 19-May-2011  joerg branches: 1.109.2;
Spell --fatal-warnings with two hyphens
 1.108 21-Mar-2011  joerg Include bsd.own.mk before making decisions based on mk.conf.
 1.107 17-Jan-2011  pooka use compat code from sys/compat/common
 1.106 06-Jan-2011  pooka branches: 1.106.2;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)
 1.105 04-Jan-2011  pooka Add SMP support for all architectures.

tested on sparc64 by martin
 1.104 17-Dec-2010  joerg Support MKREPRO
 1.103 26-Nov-2010  pooka Duh, it's x86_64, not amd64. This should make the races which
require SMP trigger in the amd64/qemu runs again.
 1.102 22-Nov-2010  pooka rename atomic_cas_up to rump_atomic_cas_up to avoid collisions
 1.101 21-Nov-2010  pooka Encode smp-capability into the makefile so that it can be used to
avoid potential screwups.
 1.100 21-Nov-2010  pooka Add a lockless uniprocessor version of atomic_cas_generic.c, which
is currently used by all the archs that previously used cas_generic.
 1.99 21-Nov-2010  pooka Realize the >1yo comment above rump_reboot and retire them to make
room for sys_reboot.
 1.98 27-Oct-2010  pooka "i build dead files". ok, so let's not.
 1.97 06-Sep-2010  pooka Use standard uvm aobj pager. Most of the kernel aobj pager complexity
comes from swap handling, but that is included only with VMSWAP.
 1.96 01-Sep-2010  pooka Implement rump_lwproc: the new lwp/proc management routines for
rump. These move the management of the pid/lwpid space from the
application into the kernel, make code more robust, and make it
possible to attach multiple lwp's to non-proc0 processes.
 1.95 30-Aug-2010  pooka Include kern_prot.c for setuid etc.
 1.94 30-Aug-2010  pooka Use one line per sys/kern source module. no functional change.
 1.93 21-Aug-2010  pgoyette Add the new kern_cfglock.c to rump.
 1.92 19-Jul-2010  pooka * move stat syscalls to newstyle compat
* implement compat for pollts
 1.91 16-Jun-2010  pooka Reinstate the blanket pmap.h for archs which do not conform to the
kernel ABI (i.e. not i386 or amd64). Due to the "half function,
half macro, all noodles" nature of pmap.h, it's too entangling and
too brittle to keep up with an ifdeffy MI implementation.
 1.90 13-Jun-2010  pooka Fix previous in emul.c -- only numbers are operands for cpp comparisons.
Apparently non-numbers logically produce arch-dependent behaviour.
 1.89 10-Jun-2010  pooka Use kern_proc.c instead of a collection of stubs. But what we
really wanted from this commit was the support for proc_specificdata.

TODO: make creating a new process actually use kern_proc and
maybe even add an interface which starts a process with
"any pid you don't like"
 1.88 06-Jun-2010  njoly Make vers.c depend on sys/param.h too, to ensure that this file is
regenerated for on kernel version bump. Avoids __NetBSD_Version__ and
osrelease out of sync problem for mkupdate builds.

ok from pooka@.
 1.87 18-May-2010  pooka Whoops, default to MP locking.
 1.86 18-May-2010  pooka Add uniprocessor versions of mutex/rw/cv. They work only on virtual
unicpu configurations (i.e. RUMP_NCPU==1), but are massively faster
than the multiprocessor versions since the fast path does not have
to perform any cache coherent operations. _Applications_ with
lock-happy kernel paths, i.e. _not_ lock microbenchmarks, measure
up to tens of percents speedup on my Core2 Duo. Every globally
atomic state required by normal locks/atomic ops implies a hideous
speed penalty even for the fast path.

While this requires a unicpu configuration, it should be noted that
we are talking about a virtual unicpu configuration. The host can
have as many processors as it desires, and the speed benefit of
virtual unicpu is still there. It's pretty obvious that in terms
of scalability simple workload partitioning and replication into
multiple kernels wins hands down over complicated locking or
locklessing algorithms which depend on globally atomic state.
 1.85 18-May-2010  pooka Move routines related to kernel locking and scheduling from
locks.c to klock.c.

No functional change.
 1.84 11-May-2010  pooka Actually, push defining _RUMPKERNEL down to libkern, since it's
not needed elsewhere.
 1.83 11-May-2010  pooka Limit visibility of _RUMPKERNEL to prevent abuse.
 1.82 30-Apr-2010  pooka Include devsw_conv0 from an i386 kernel compilation (no, we don't
care about the arch as long as all the devices we care about are
present). The file should be autogenerated, but that requires some
more changes to config(1).
 1.81 26-Apr-2010  pooka Implement kobj_renamespace() for rump. Support for a few archs is
missing, but that doesn't really matter, since they are living in
their own "everything is a macro" happyland and don't support the
native kernel ABI anyway.
 1.80 21-Apr-2010  pooka Move sys_module from vfs to kern -- while modules cannot be loaded,
there's not forbidden about querying the list of (builtin) modules
even when running without vfs.
 1.79 21-Apr-2010  pooka support kern_resource
 1.78 21-Apr-2010  pooka Move all signal-related from emul.c to signals.c. Additionally,
define a few alternate signal models for the rump kernel, including
ones where signals are ignored or sent to host processes.
 1.77 14-Apr-2010  pooka Use kern_syscall.c instead of homegrown syscall dis/establishment routines.
 1.76 14-Apr-2010  pooka Include kern_tc and use a timecounter driver instead of homerolled
kern_tc implementation.
 1.75 12-Apr-2010  pooka support lwp specificdata
 1.74 16-Feb-2010  pooka branches: 1.74.2;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.73 31-Jan-2010  pooka branches: 1.73.2;
Include newly-created subr_device.c and remove few special case
device accessor copypastes. This makes it possible to link static
binaries which use -lrumpdev.
 1.72 31-Jan-2010  pooka include kern_hook.c
 1.71 15-Jan-2010  pooka Use subr_percpu.c instead of homegrown implementation. ...except
when using malloc(3)-relegated allocators (happens in production
e.g. on Linux), since subr_percpu.c uses vmem and i don't want to
reimplement vmem.
 1.70 16-Dec-2009  pooka update to newnewvers.sh usage
 1.69 16-Dec-2009  pooka Generate vers.c and include it in the kernel component.
 1.68 14-Dec-2009  matt Make librump play with mips nicely. Define ARCH_ELFSIZE for mips to be 32.
This works for N64 kernels because objcopy them to be 32bit to the bootloaders
can handle them.
 1.67 13-Dec-2009  mrg rename LD32DIR to MLIBDIR.
 1.66 01-Dec-2009  pooka Include cpu crosscall support (instead of stubbing it out).
 1.65 27-Nov-2009  pooka Now that Makefile.rump was changed and everything gets built in
update builds too, flip the allocator define to prefer the kernel
pool/kmem instead of malloc(3). Use malloc(3) only if
RUMP_USE_UNREAL_ALLOCATORS is defined.
 1.64 26-Nov-2009  pooka include sys_pipe.c
 1.63 06-Nov-2009  pooka Enable kernel kmem/vmem/pool/pool_cache by default again instead
of malloc(3) allocators.
 1.62 04-Nov-2009  pooka misc_stub and emul have been the same thing for a looong time now,
so just move the few remaining routines in misc_stub to emul.
 1.61 04-Nov-2009  pooka Give the kthread->pthread interface emulation its own module.
 1.60 04-Nov-2009  pooka Pull all relegating memory allocators under a common roof in memalloc.c
 1.59 04-Nov-2009  pooka move copy-related routines to their own module
 1.58 04-Nov-2009  pooka Use std. uiomove() & friends.
 1.57 04-Nov-2009  pooka Use kern_mutex_obj.c directly instead of copypasting code.
 1.56 03-Nov-2009  pooka move module to SRCS where it logically belongs. no functional change.
 1.55 20-Oct-2009  pooka Actually, put uvm_readahead into rumpkern, since while it's
technically vfs stuff, sys_descrip depends on it and readahead
itself uses only the pager interface.
 1.54 19-Oct-2009  christos treat sun2 like the other losing platforms.
 1.53 16-Oct-2009  pooka Include sys_select.c for proper select()/poll() support.
 1.52 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.51 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.50 02-Oct-2009  elad First part of secmodel cleanup and other misc. changes:

- Separate the suser part of the bsd44 secmodel into its own secmodel
and directory, pending even more cleanups. For revision history
purposes, the original location of the files was

src/sys/secmodel/bsd44/secmodel_bsd44_suser.c
src/sys/secmodel/bsd44/suser.h

- Add a man-page for secmodel_suser(9) and update the one for
secmodel_bsd44(9).

- Add a "secmodel" module class and use it. Userland program and
documentation updated.

- Manage secmodel count (nsecmodels) through the module framework.
This eliminates the need for secmodel_{,de}register() calls in
secmodel code.

- Prepare for secmodel modularization by adding relevant module bits.
The secmodels don't allow auto unload. The bsd44 secmodel depends
on the suser and securelevel secmodels. The overlay secmodel depends
on the bsd44 secmodel. As the module class is only cosmetic, and to
prevent ambiguity, the bsd44 and overlay secmodels are prefixed with
"secmodel_".

- Adapt the overlay secmodel to recent changes (mainly vnode scope).

- Stop using link-sets for the sysctl node(s) creation.

- Keep sysctl variables under nodes of their relevant secmodels. In
other words, don't create duplicates for the suser/securelevel
secmodels under the bsd44 secmodel, as the latter is merely used
for "grouping".

- For the suser and securelevel secmodels, "advertise presence" in
relevant sysctl nodes (sysctl.security.models.{suser,securelevel}).

- Get rid of the LKM preprocessor stuff.

- As secmodels are now modules, there's no need for an explicit call
to secmodel_start(); it's handled by the module framework. That
said, the module framework was adjusted to properly load secmodels
early during system startup.

- Adapt rump to changes: Instead of using empty stubs for securelevel,
simply use the suser secmodel. Also replace secmodel_start() with a
call to secmodel_suser_start().

- 5.99.20.

Testing was done on i386 ("release" build). Spearated module_init()
changes were tested on sparc and sparc64 as well by martin@ (thanks!).

Mailing list reference:

http://mail-index.netbsd.org/tech-kern/2009/09/25/msg006135.html
 1.49 02-Oct-2009  pooka Include humanize and extent support in rumpkern.
 1.48 16-Sep-2009  pooka include init_sysctl_base.c
 1.47 06-Sep-2009  pooka Run rump_dev_init() where available.
 1.46 02-Jun-2009  pooka include syscalls.c
 1.45 02-May-2009  pooka branches: 1.45.2;
Do not include securelevel, it includes too many dependencies on
vfs in its current form.
 1.44 29-Apr-2009  pooka Add proof-of-concept code for enabling system calls to rump virtual
kernels running in other processes on the same machine or on an
entirely different host. I wrote this a while ago and am now
committing it mainly to avoid losing it. It works, but could do
with a little tuning here and there.

What this will hopefully eventually buy us is the ability to use
standard userland tools to configure rump kernels, e.g. ifconfig(8)
and route(8) could be used to configure the networking stack provided
by a rump kernel. Also some distributed OS implications may apply.

fun fact: a system call which just does copyin/copyout takes >1000x
longer when made over the LAN as compared to when made on the same
machine.
 1.43 16-Apr-2009  pooka When I switched to real kauth, I forgot to include a secmodel.
Fix this oversight by including bsd44. Makes permissions for p2k
work again.
 1.42 29-Mar-2009  pooka include subr_evcnt
 1.41 18-Mar-2009  pooka Support kqueue in the rump virtual kernel.
 1.40 30-Jan-2009  pooka branches: 1.40.2;
Turn of real allocators and fall back to malloc(3) for the time
being. Since we have many threads but pretend to have only one
cpu, the pool code runs into concurrency trouble for cpu-private
data.
 1.39 23-Jan-2009  pooka Add a compile-time option to use kmem/vmem/pools from the kernel
sources instead of homegrown allocators. Default to "on", even
though they appear to be a few percent slower at least on short
jobs (e.g. untar to tmpfs).
 1.38 18-Jan-2009  he Change the use of formally undocumented features, which have now been
made to fail. Specifically, change
.ifdef(SYMBOL) -> .ifdef SYMBOL or .if defined(SYMBOL),
and corresponding for .ifndef.

Also correct one error in lib/libm/Makefile (.ifdef (${MKCOMPLEX} != "no")?!?).
 1.37 14-Jan-2009  pooka Do rump kernel symbol protection for vax. All archs support it now.
 1.36 12-Jan-2009  pooka * Add adapted version of the userspace atomic_cas ops for platforms
lacking special instructions. We always use the spinlocked version
(could use RAS on UP NetBSD host, but it's not portable).
* Add platform-based symbol quirk tables for selectively not renaming
toolchain symbols for some platforms. Although, this should really
depend on the (toolchain,platform)-tuple and not just the platform.

This allows arm, hppa, mips and sh3 to build succesfully with an
isolated rump kernel namespace. ... now, one arch remains: vax.
you must compile vax. then, only then will you MI be.
 1.35 08-Jan-2009  pooka Remove vax MD source which is now brought in automatically via libkern.
 1.34 06-Jan-2009  pooka adjust LD32DIR comment. per discussion with mrg
 1.33 05-Jan-2009  pooka Rename malloc() to kern_malloc() to avoid name conflict with libc.
Now it is possible to use the kernel linker with rump.
 1.32 05-Jan-2009  pooka Assemble with _LOCORE.
 1.31 04-Jan-2009  pooka Include libkern contents in librump.
 1.30 02-Jan-2009  pooka Add kludge to allow amd64 compat to build. This is not a proper
fix which most likely requires some compat lib build infra toggle.
 1.29 02-Jan-2009  pooka Include kernel printf routines in rump instead of relying on the
magic libc symbol. This also allows to bid farewell to subr_prf2.c
and merge the contents back to subr_prf.c. The host kernel bridging
is now done via rumpuser_putchar().
 1.28 01-Jan-2009  pooka Purge multiple kernel opt files.
 1.27 01-Jan-2009  pooka Define MODULAR for rump core components. This enables module
loading via the kernel module framework (instead of dlopen()).
For now it only works on amd64 and i386, but for the rest it should
just be a matter of including the relevant kobj_machdep.c modules
from the kernel sources.
 1.26 31-Dec-2008  pooka Include rb.c instead of relying on it being in libc.
 1.25 30-Dec-2008  pooka -I${RUMPTOP}/librump/rumpkern so that build from src/lib works.

noted by Geoff Wing on current-users
 1.24 29-Dec-2008  pooka Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.
 1.23 29-Dec-2008  pooka include subr_devsw in rumpkern
 1.22 18-Dec-2008  pooka include snprintb
 1.21 18-Dec-2008  pooka .PATH maintenance
 1.20 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.19 18-Nov-2008  pooka cwd is logically a vfs concept, so take it out from the bosom of
kern_descrip and into vfs_cwd. No functional change.
 1.18 17-Nov-2008  pooka Move rump public headers to include/rump
 1.17 25-Oct-2008  apb branches: 1.17.2; 1.17.4;
Use ${TOOL_SED} instead if plain sed in Makefiles.
 1.16 15-Oct-2008  pooka branches: 1.16.2;
Add support bits necessary for rumpnet functionality.
 1.15 11-Oct-2008  pooka Move uidinfo to its own module in kern_uidinfo.c and include in rump.
No functional change to uidinfo.
 1.14 10-Oct-2008  pooka Add a simple percpu implementation (which isn't actually percpu at
all, since we don't currently have the notion of "real" cpu in
rump...but that's beyond the point).
 1.13 10-Oct-2008  pooka Support callouts and call callout_hardclock() from the timer
interrupt thread.

The sleepq implementation required for callouts is horrible, kludged
only for callouts, and generally unacceptable. It needs revisiting,
but I'm not sure yet should rump or kern_timeout be improved. It's
almost untested as of now, but committing this will give me some
maneuvering space while letting application compile.
 1.12 09-Oct-2008  pooka add kern_rate, subr_iostat and subr_once
 1.11 09-Oct-2008  pooka Reorganize SRCS+= into smaller chunks to make adding new files
easier. No functional change.
 1.10 09-Oct-2008  pooka No point in having our private atomic ops, just use the ones now
available in libc.
 1.9 30-Sep-2008  pooka Switch to std kern_auth.
 1.8 27-Sep-2008  pooka branches: 1.8.2;
Help out reinoud a bit with the challenge of adding vfs_dirhash.c here
 1.7 25-Sep-2008  pooka Move global malloc types from kern_malloc into a separate module.
 1.6 04-Aug-2008  pooka branches: 1.6.2;
Add support for using real kmem/vmem. Don't enable it by default,
though, since it a) is a lot of unnecessary indirection in rump
b) requires callouts which are so far unimplemented.
 1.5 02-Aug-2008  simonb sort sys/kern SRCS alphabetically.
 1.4 01-Aug-2008  pooka support real sysctls
 1.3 31-Jul-2008  simonb Merge the simonb-wapbl branch. From the original branch commit:

Add Wasabi System's WAPBL (Write Ahead Physical Block Logging)
journaling code. Originally written by Darrin B. Jewell while
at Wasabi and updated to -current by Antti Kantee, Andy Doran,
Greg Oster and Simon Burge.

OK'd by core@, releng@.
 1.2 30-Jul-2008  oster branches: 1.2.2;
Fix race during creation of rumpdefs.h, rumpvnode_if.h, and rumpvnode_if.c.
Patch from pooka@ with tweak from me.

Approved by: pooka
 1.1 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.2.2.2 31-Jul-2008  simonb Sync with head.
 1.2.2.1 30-Jul-2008  simonb file Makefile.rumpkern was added on branch simonb-wapbl on 2008-07-31 04:51:05 +0000
 1.6.2.3 10-Oct-2008  skrll Sync with HEAD.
 1.6.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.6.2.1 04-Aug-2008  wrstuden file Makefile.rumpkern was added on branch wrstuden-revivesa on 2008-09-18 04:37:04 +0000
 1.8.2.4 17-Jan-2009  mjf Sync with HEAD.
 1.8.2.3 05-Oct-2008  mjf Sync with HEAD.
 1.8.2.2 28-Sep-2008  mjf Sync with HEAD.
 1.8.2.1 27-Sep-2008  mjf file Makefile.rumpkern was added on branch mjf-devfs2 on 2008-09-28 10:41:03 +0000
 1.16.2.3 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.16.2.2 19-Oct-2008  haad Sync with HEAD.
 1.16.2.1 15-Oct-2008  haad file Makefile.rumpkern was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.17.4.1 15-Jul-2011  riz Pull up following revision(s) (requested by manu in ticket #1604):
sys/fs/puffs/puffs_msgif.c: revision 1.84
Apply patch from PR kern/44093 by yamt:
Interrupt server wait only on certain signals (same set at nfs -i)
instead of all signals. According to the PR this helps with
"git clone" run on a puffs file system.
 1.17.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.17.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.17.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.40.2.2 23-Jul-2009  jym Sync with HEAD.
 1.40.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.45.2.7 09-Oct-2010  yamt sync with head
 1.45.2.6 11-Aug-2010  yamt sync with head.
 1.45.2.5 11-Mar-2010  yamt sync with head
 1.45.2.4 16-Sep-2009  yamt sync with head
 1.45.2.3 20-Jun-2009  yamt sync with head
 1.45.2.2 04-May-2009  yamt sync with head.
 1.45.2.1 02-May-2009  yamt file Makefile.rumpkern was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.73.2.4 06-Nov-2010  uebayasi Sync with HEAD.
 1.73.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.73.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.73.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.74.2.5 31-May-2011  rmind sync with head
 1.74.2.4 21-Apr-2011  rmind sync with head
 1.74.2.3 05-Mar-2011  rmind sync with head
 1.74.2.2 03-Jul-2010  rmind sync with head
 1.74.2.1 30-May-2010  rmind sync with head
 1.106.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.109.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.110.2.7 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.110.2.6 23-Jan-2013  yamt sync with head
 1.110.2.5 16-Jan-2013  yamt sync with (a bit old) head
 1.110.2.4 30-Oct-2012  yamt sync with head
 1.110.2.3 23-May-2012  yamt sync with head.
 1.110.2.2 17-Apr-2012  yamt sync with head
 1.110.2.1 02-Nov-2011  yamt page cache related changes

- maintain object pages in radix tree rather than rb tree.
- reduce unnecessary page scan in putpages. esp. when an object has a ton of
pages cached but only a few of them are dirty.
- reduce the number of pmap operations by tracking page dirtiness more
precisely in uvm layer.
- fix nfs commit range tracking.
- fix nfs write clustering. XXX hack
 1.113.2.3 29-Apr-2012  mrg sync to latest -current.
 1.113.2.2 11-Mar-2012  mrg sync to latest -current
 1.113.2.1 18-Feb-2012  mrg merge to -current.
 1.115.2.1 26-Jun-2012  riz branches: 1.115.2.1.2;
Pull up following revision(s) (requested by rmind in ticket #365):
sys/rump/librump/rumpkern/rumpcpu_generic.c: revision 1.4
sys/net/npf/npf_session.c: revision 1.13
sys/net/npf/npf_tableset.c: revision 1.11
sys/net/npf/npf_state_tcp.c: revision 1.7
sys/net/npf/npf_inet.c: revision 1.12
sys/net/npf/npf.h: revision 1.17
sys/net/npf/npf_instr.c: revision 1.11
usr.sbin/npf/npftest/libnpftest/npf_table_test.c: revision 1.2
sys/net/npf/npf_state.c: revision 1.8
sys/net/npf/npf_log.c: revision 1.4
sys/net/npf/npf_alg.c: revision 1.4
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.118
sys/net/npf/npf_nat.c: revision 1.13
sys/net/npf/npf.c: revision 1.11
sys/net/npf/npf_sendpkt.c: revision 1.11
sys/net/npf/npf_impl.h: revision 1.16
sys/rump/librump/rumpkern/scheduler.c: revision 1.28
rumpkern:
- Add subr_kcpuset.c and subr_pserialize.c modules.
- Add kcpuset_{running,attached} for RUMP env.
NPF:
- Rename some functions for consistency and de-inline them.
- Fix few invalid asserts (add regressoin test).
- Use pserialize(9) for ALG interface.
- Minor fixes, sprinkle many comments.
 1.115.2.1.2.1 06-Dec-2012  matt Only add atomic_cas_generic.c to SRCS if there isn't already some
atomic_cas_* already in SRCS.
 1.119.2.5 03-Dec-2017  jdolecek update from HEAD
 1.119.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.119.2.3 23-Jun-2013  tls resync from head
 1.119.2.2 25-Feb-2013  tls resync with head
 1.119.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.128.4.1 23-Jul-2013  riastradh sync with HEAD
 1.128.2.2 18-May-2014  rmind sync with head
 1.128.2.1 28-Aug-2013  rmind sync with head
 1.143.2.2 10-Aug-2014  tls Rebase.
 1.143.2.1 09-Aug-2014  tls Replace "ccrand" ChaCha implementation of cprng_fast with Taylor's smaller
and somewhat simpler one. Fix rump builds so we can build a distribution.
 1.148.8.1 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #1705):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.13 - 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

cprng.h: use static __inline for consistency with other include
headers and remove an unused function.

-

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...
 1.148.4.1 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #1705):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.13 - 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

cprng.h: use static __inline for consistency with other include
headers and remove an unused function.

-

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...
 1.148.2.1 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #1705):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.13 - 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

cprng.h: use static __inline for consistency with other include
headers and remove an unused function.

-

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...
 1.150.2.8 28-Aug-2017  skrll Sync with HEAD
 1.150.2.7 05-Oct-2016  skrll Sync with HEAD
 1.150.2.6 22-Apr-2016  skrll Sync with HEAD
 1.150.2.5 19-Mar-2016  skrll Sync with HEAD
 1.150.2.4 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.150.2.3 22-Sep-2015  skrll Sync with HEAD
 1.150.2.2 06-Jun-2015  skrll Sync with HEAD
 1.150.2.1 06-Apr-2015  skrll Sync with HEAD
 1.167.2.2 26-Apr-2017  pgoyette Sync with HEAD
 1.167.2.1 16-Jul-2016  pgoyette Make sure we include the localcount routines in the rump libraries
 1.168.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.169.6.2 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #1365):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.13 - 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

cprng.h: use static __inline for consistency with other include
headers and remove an unused function.

-

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...
 1.169.6.1 21-Oct-2017  snj Pull up following revision(s) (requested by ozaki-r in ticket #300):
crypto/dist/ipsec-tools/src/setkey/parse.y: 1.19
crypto/dist/ipsec-tools/src/setkey/token.l: 1.20
distrib/sets/lists/tests/mi: 1.754, 1.757, 1.759
doc/TODO.smpnet: 1.12-1.13
sys/net/pfkeyv2.h: 1.32
sys/net/raw_cb.c: 1.23-1.24, 1.28
sys/net/raw_cb.h: 1.28
sys/net/raw_usrreq.c: 1.57-1.58
sys/net/rtsock.c: 1.228-1.229
sys/netinet/in_proto.c: 1.125
sys/netinet/ip_input.c: 1.359-1.361
sys/netinet/tcp_input.c: 1.359-1.360
sys/netinet/tcp_output.c: 1.197
sys/netinet/tcp_var.h: 1.178
sys/netinet6/icmp6.c: 1.213
sys/netinet6/in6_proto.c: 1.119
sys/netinet6/ip6_forward.c: 1.88
sys/netinet6/ip6_input.c: 1.181-1.182
sys/netinet6/ip6_output.c: 1.193
sys/netinet6/ip6protosw.h: 1.26
sys/netipsec/ipsec.c: 1.100-1.122
sys/netipsec/ipsec.h: 1.51-1.61
sys/netipsec/ipsec6.h: 1.18-1.20
sys/netipsec/ipsec_input.c: 1.44-1.51
sys/netipsec/ipsec_netbsd.c: 1.41-1.45
sys/netipsec/ipsec_output.c: 1.49-1.64
sys/netipsec/ipsec_private.h: 1.5
sys/netipsec/key.c: 1.164-1.234
sys/netipsec/key.h: 1.20-1.32
sys/netipsec/key_debug.c: 1.18-1.21
sys/netipsec/key_debug.h: 1.9
sys/netipsec/keydb.h: 1.16-1.20
sys/netipsec/keysock.c: 1.59-1.62
sys/netipsec/keysock.h: 1.10
sys/netipsec/xform.h: 1.9-1.12
sys/netipsec/xform_ah.c: 1.55-1.74
sys/netipsec/xform_esp.c: 1.56-1.72
sys/netipsec/xform_ipcomp.c: 1.39-1.53
sys/netipsec/xform_ipip.c: 1.50-1.54
sys/netipsec/xform_tcp.c: 1.12-1.16
sys/rump/librump/rumpkern/Makefile.rumpkern: 1.170
sys/rump/librump/rumpnet/net_stub.c: 1.27
sys/sys/protosw.h: 1.67-1.68
tests/net/carp/t_basic.sh: 1.7
tests/net/if_gif/t_gif.sh: 1.11
tests/net/if_l2tp/t_l2tp.sh: 1.3
tests/net/ipsec/Makefile: 1.7-1.9
tests/net/ipsec/algorithms.sh: 1.5
tests/net/ipsec/common.sh: 1.4-1.6
tests/net/ipsec/t_ipsec_ah_keys.sh: 1.2
tests/net/ipsec/t_ipsec_esp_keys.sh: 1.2
tests/net/ipsec/t_ipsec_gif.sh: 1.6-1.7
tests/net/ipsec/t_ipsec_l2tp.sh: 1.6-1.7
tests/net/ipsec/t_ipsec_misc.sh: 1.8-1.18
tests/net/ipsec/t_ipsec_sockopt.sh: 1.1-1.2
tests/net/ipsec/t_ipsec_tcp.sh: 1.1-1.2
tests/net/ipsec/t_ipsec_transport.sh: 1.5-1.6
tests/net/ipsec/t_ipsec_tunnel.sh: 1.9
tests/net/ipsec/t_ipsec_tunnel_ipcomp.sh: 1.1-1.2
tests/net/ipsec/t_ipsec_tunnel_odd.sh: 1.3
tests/net/mcast/t_mcast.sh: 1.6
tests/net/net/t_ipaddress.sh: 1.11
tests/net/net_common.sh: 1.20
tests/net/npf/t_npf.sh: 1.3
tests/net/route/t_flags.sh: 1.20
tests/net/route/t_flags6.sh: 1.16
usr.bin/netstat/fast_ipsec.c: 1.22
Do m_pullup before mtod

It may fix panicks of some tests on anita/sparc and anita/GuruPlug.
---
KNF
---
Enable DEBUG for babylon5
---
Apply C99-style struct initialization to xformsw
---
Tweak outputs of netstat -s for IPsec

- Get rid of "Fast"
- Use ipsec and ipsec6 for titles to clarify protocol
- Indent outputs of sub protocols

Original outputs were organized like this:

(Fast) IPsec:
IPsec ah:
IPsec esp:
IPsec ipip:
IPsec ipcomp:
(Fast) IPsec:
IPsec ah:
IPsec esp:
IPsec ipip:
IPsec ipcomp:

New outputs are organized like this:

ipsec:
ah:
esp:
ipip:
ipcomp:
ipsec6:
ah:
esp:
ipip:
ipcomp:
---
Add test cases for IPComp
---
Simplify IPSEC_OSTAT macro (NFC)
---
KNF; replace leading whitespaces with hard tabs
---
Introduce and use SADB_SASTATE_USABLE_P
---
KNF
---
Add update command for testing

Updating an SA (SADB_UPDATE) requires that a process issuing
SADB_UPDATE is the same as a process issued SADB_ADD (or SADB_GETSPI).
This means that update command must be used with add command in a
configuration of setkey. This usage is normally meaningless but
useful for testing (and debugging) purposes.
---
Add test cases for updating SA/SP

The tests require newly-added udpate command of setkey.
---
PR/52346: Frank Kardel: Fix checksumming for NAT-T
See XXX for improvements.
---
Remove codes for PACKET_TAG_IPSEC_IN_CRYPTO_DONE

It seems that PACKET_TAG_IPSEC_IN_CRYPTO_DONE is for network adapters
that have IPsec accelerators; a driver sets the mtag to a packet
when its device has already encrypted the packet.

Unfortunately no driver implements such offload features for long
years and seems unlikely to implement them soon. (Note that neither
FreeBSD nor Linux doesn't have such drivers.) Let's remove related
(unused) codes and simplify the IPsec code.
---
Fix usages of sadb_msg_errno
---
Avoid updating sav directly

On SADB_UPDATE a target sav was updated directly, which was unsafe.
Instead allocate another sav, copy variables of the old sav to
the new one and replace the old one with the new one.
---
Simplify; we can assume sav->tdb_xform cannot be NULL while it's valid
---
Rename key_alloc* functions (NFC)

We shouldn't use the term "alloc" for functions that just look up
data and actually don't allocate memory.
---
Use explicit_memset to surely zero-clear key_auth and key_enc
---
Make sure to clear keys on error paths of key_setsaval
---
Add missing KEY_FREESAV
---
Make sure a sav is inserted to a sah list after its initialization completes
---
Remove unnecessary zero-clearing codes from key_setsaval

key_setsaval is now used only for a newly-allocated sav. (It was
used to reset variables of an existing sav.)
---
Correct wrong assumption of sav->refcnt in key_delsah

A sav in a list is basically not to be sav->refcnt == 0. And also
KEY_FREESAV assumes sav->refcnt > 0.
---
Let key_getsavbyspi take a reference of a returning sav
---
Use time_mono_to_wall (NFC)
---
Separate sending message routine (NFC)
---
Simplify; remove unnecessary zero-clears

key_freesaval is used only when a target sav is being destroyed.
---
Omit NULL checks for sav->lft_c

sav->lft_c can be NULL only when initializing or destroying sav.
---
Omit unnecessary NULL checks for sav->sah
---
Omit unnecessary check of sav->state

key_allocsa_policy picks a sav of either MATURE or DYING so we
don't need to check its state again.
---
Simplify; omit unnecessary saidx passing

- ipsec_nextisr returns a saidx but no caller uses it
- key_checkrequest is passed a saidx but it can be gotton by
another argument (isr)
---
Fix splx isn't called on some error paths
---
Fix header size calculation of esp where sav is NULL
---
Fix header size calculation of ah in the case sav is NULL

This fix was also needed for esp.
---
Pass sav directly to opencrypto callback

In a callback, use a passed sav as-is by default and look up a sav
only if the passed sav is dead.
---
Avoid examining freshness of sav on packet processing

If a sav list is sorted (by lft_c->sadb_lifetime_addtime) in advance,
we don't need to examine each sav and also don't need to delete one
on the fly and send up a message. Fortunately every sav lists are sorted
as we need.

Added key_validate_savlist validates that each sav list is surely sorted
(run only if DEBUG because it's not cheap).
---
Add test cases for SAs with different SPIs
---
Prepare to stop using isr->sav

isr is a shared resource and using isr->sav as a temporal storage
for each packet processing is racy. And also having a reference from
isr to sav makes the lifetime of sav non-deterministic; such a reference
is removed when a packet is processed and isr->sav is overwritten by
new one. Let's have a sav locally for each packet processing instead of
using shared isr->sav.

However this change doesn't stop using isr->sav yet because there are
some users of isr->sav. isr->sav will be removed after the users find
a way to not use isr->sav.
---
Fix wrong argument handling
---
fix printf format.
---
Don't validate sav lists of LARVAL or DEAD states

We don't sort the lists so the validation will always fail.

Fix PR kern/52405
---
Make sure to sort the list when changing the state by key_sa_chgstate
---
Rename key_allocsa_policy to key_lookup_sa_bysaidx
---
Separate test files
---
Calculate ah_max_authsize on initialization as well as esp_max_ivlen
---
Remove m_tag_find(PACKET_TAG_IPSEC_PENDING_TDB) because nobody sets the tag
---
Restore a comment removed in previous

The comment is valid for the below code.
---
Make tests more stable

sleep command seems to wait longer than expected on anita so
use polling to wait for a state change.
---
Add tests that explicitly delete SAs instead of waiting for expirations
---
Remove invalid M_AUTHIPDGM check on ESP isr->sav

M_AUTHIPDGM flag is set to a mbuf in ah_input_cb. An sav of ESP can
have AH authentication as sav->tdb_authalgxform. However, in that
case esp_input and esp_input_cb are used to do ESP decryption and
AH authentication and M_AUTHIPDGM never be set to a mbuf. So
checking M_AUTHIPDGM of a mbuf on isr->sav of ESP is meaningless.
---
Look up sav instead of relying on unstable sp->req->sav

This code is executed only in an error path so an additional lookup
doesn't matter.
---
Correct a comment
---
Don't release sav if calling crypto_dispatch again
---
Remove extra KEY_FREESAV from ipsec_process_done

It should be done by the caller.
---
Don't bother the case of crp->crp_buf == NULL in callbacks
---
Hold a reference to an SP during opencrypto processing

An SP has a list of isr (ipsecrequest) that represents a sequence
of IPsec encryption/authentication processing. One isr corresponds
to one opencrypto processing. The lifetime of an isr follows its SP.

We pass an isr to a callback function of opencrypto to continue
to a next encryption/authentication processing. However nobody
guaranteed that the isr wasn't freed, i.e., its SP wasn't destroyed.

In order to avoid such unexpected destruction of isr, hold a reference
to its SP during opencrypto processing.
---
Don't make SAs expired on tests that delete SAs explicitly
---
Fix a debug message
---
Dedup error paths (NFC)
---
Use pool to allocate tdb_crypto

For ESP and AH, we need to allocate an extra variable space in addition
to struct tdb_crypto. The fixed size of pool items may be larger than
an actual requisite size of a buffer, but still the performance
improvement by replacing malloc with pool wins.
---
Don't use unstable isr->sav for header size calculations

We may need to optimize to not look up sav here for users that
don't need to know an exact size of headers (e.g., TCP segmemt size
caclulation).
---
Don't use sp->req->sav when handling NAT-T ESP fragmentation

In order to do this we need to look up a sav however an additional
look-up degrades performance. A sav is later looked up in
ipsec4_process_packet so delay the fragmentation check until then
to avoid an extra look-up.
---
Don't use key_lookup_sp that depends on unstable sp->req->sav

It provided a fast look-up of SP. We will provide an alternative
method in the future (after basic MP-ification finishes).
---
Stop setting isr->sav on looking up sav in key_checkrequest
---
Remove ipsecrequest#sav
---
Stop setting mtag of PACKET_TAG_IPSEC_IN_DONE because there is no users anymore
---
Skip ipsec_spi_*_*_preferred_new_timeout when running on qemu

Probably due to PR 43997
---
Add localcount to rump kernels
---
Remove unused macro
---
Fix key_getcomb_setlifetime

The fix adjusts a soft limit to be 80% of a corresponding hard limit.

I'm not sure the fix is really correct though, at least the original
code is wrong. A passed comb is zero-cleared before calling
key_getcomb_setlifetime, so
comb->sadb_comb_soft_addtime = comb->sadb_comb_soft_addtime * 80 / 100;
is meaningless.
---
Provide and apply key_sp_refcnt (NFC)

It simplifies further changes.
---
Fix indentation

Pointed out by knakahara@
---
Use pslist(9) for sptree
---
Don't acquire global locks for IPsec if NET_MPSAFE

Note that the change is just to make testing easy and IPsec isn't MP-safe yet.
---
Let PF_KEY socks hold their own lock instead of softnet_lock

Operations on SAD and SPD are executed via PF_KEY socks. The operations
include deletions of SAs and SPs that will use synchronization mechanisms
such as pserialize_perform to wait for references to SAs and SPs to be
released. It is known that using such mechanisms with holding softnet_lock
causes a dead lock. We should avoid the situation.
---
Make IPsec SPD MP-safe

We use localcount(9), not psref(9), to make the sptree and secpolicy (SP)
entries MP-safe because SPs need to be referenced over opencrypto
processing that executes a callback in a different context.

SPs on sockets aren't managed by the sptree and can be destroyed in softint.
localcount_drain cannot be used in softint so we delay the destruction of
such SPs to a thread context. To do so, a list to manage such SPs is added
(key_socksplist) and key_timehandler_spd deletes dead SPs in the list.

For more details please read the locking notes in key.c.

Proposed on tech-kern@ and tech-net@
---
Fix updating ipsec_used

- key_update_used wasn't called in key_api_spddelete2 and key_api_spdflush
- key_update_used wasn't called if an SP had been added/deleted but
a reply to userland failed
---
Fix updating ipsec_used; turn on when SPs on sockets are added
---
Add missing IPsec policy checks to icmp6_rip6_input

icmp6_rip6_input is quite similar to rip6_input and the same checks exist
in rip6_input.
---
Add test cases for setsockopt(IP_IPSEC_POLICY)
---
Don't use KEY_NEWSP for dummy SP entries

By the change KEY_NEWSP is now not called from softint anymore
and we can use kmem_zalloc with KM_SLEEP for KEY_NEWSP.
---
Comment out unused functions
---
Add test cases that there are SPs but no relevant SAs
---
Don't allow sav->lft_c to be NULL

lft_c of an sav that was created by SADB_GETSPI could be NULL.
---
Clean up clunky eval strings

- Remove unnecessary \ at EOL
- This allows to omit ; too
- Remove unnecessary quotes for arguments of atf_set
- Don't expand $DEBUG in eval
- We expect it's expanded on execution

Suggested by kre@
---
Remove unnecessary KEY_FREESAV in an error path

sav should be freed (unreferenced) by the caller.
---
Use pslist(9) for sahtree
---
Use pslist(9) for sah->savtree
---
Rename local variable newsah to sah

It may not be new.
---
MP-ify SAD slightly

- Introduce key_sa_mtx and use it for some list operations
- Use pserialize for some list iterations
---
Introduce KEY_SA_UNREF and replace KEY_FREESAV with it where sav will never be actually freed in the future

KEY_SA_UNREF is still key_freesav so no functional change for now.

This change reduces diff of further changes.
---
Remove out-of-date log output

Pointed out by riastradh@
---
Use KDASSERT instead of KASSERT for mutex_ownable

Because mutex_ownable is too heavy to run in a fast path
even for DIAGNOSTIC + LOCKDEBUG.

Suggested by riastradh@
---
Assemble global lists and related locks into cache lines (NFCI)

Also rename variable names from *tree to *list because they are
just lists, not trees.

Suggested by riastradh@
---
Move locking notes
---
Update the locking notes

- Add locking order
- Add locking notes for misc lists such as reglist
- Mention pserialize, key_sp_ref and key_sp_unref on SP operations

Requested by riastradh@
---
Describe constraints of key_sp_ref and key_sp_unref

Requested by riastradh@
---
Hold key_sad.lock on SAVLIST_WRITER_INSERT_TAIL
---
Add __read_mostly to key_psz

Suggested by riastradh@
---
Tweak wording (pserialize critical section => pserialize read section)

Suggested by riastradh@
---
Add missing mutex_exit
---
Fix setkey -D -P outputs

The outputs were tweaked (by me), but I forgot updating libipsec
in my local ATF environment...
---
MP-ify SAD (key_sad.sahlist and sah entries)

localcount(9) is used to protect key_sad.sahlist and sah entries
as well as SPD (and will be used for SAD sav).

Please read the locking notes of SAD for more details.
---
Introduce key_sa_refcnt and replace sav->refcnt with it (NFC)
---
Destroy sav only in the loop for DEAD sav
---
Fix KASSERT(solocked(sb->sb_so)) failure in sbappendaddr that is called eventually from key_sendup_mbuf

If key_sendup_mbuf isn't passed a socket, the assertion fails.
Originally in this case sb->sb_so was softnet_lock and callers
held softnet_lock so the assertion was magically satisfied.
Now sb->sb_so is key_so_mtx and also softnet_lock isn't always
held by callers so the assertion can fail.

Fix it by holding key_so_mtx if key_sendup_mbuf isn't passed a socket.

Reported by knakahara@
Tested by knakahara@ and ozaki-r@
---
Fix locking notes of SAD
---
Fix deadlock between key_sendup_mbuf called from key_acquire and localcount_drain

If we call key_sendup_mbuf from key_acquire that is called on packet
processing, a deadlock can happen like this:
- At key_acquire, a reference to an SP (and an SA) is held
- key_sendup_mbuf will try to take key_so_mtx
- Some other thread may try to localcount_drain to the SP with
holding key_so_mtx in say key_api_spdflush
- In this case localcount_drain never return because key_sendup_mbuf
that has stuck on key_so_mtx never release a reference to the SP

Fix the deadlock by deferring key_sendup_mbuf to the timer
(key_timehandler).
---
Fix that prev isn't cleared on retry
---
Limit the number of mbufs queued for deferred key_sendup_mbuf

It's easy to be queued hundreds of mbufs on the list under heavy
network load.
---
MP-ify SAD (savlist)

localcount(9) is used to protect savlist of sah. The basic design is
similar to MP-ifications of SPD and SAD sahlist. Please read the
locking notes of SAD for more details.
---
Simplify ipsec_reinject_ipstack (NFC)
---
Add per-CPU rtcache to ipsec_reinject_ipstack

It reduces route lookups and also reduces rtcache lock contentions
when NET_MPSAFE is enabled.
---
Use pool_cache(9) instead of pool(9) for tdb_crypto objects

The change improves network throughput especially on multi-core systems.
---
Update

ipsec(4), opencrypto(9) and vlan(4) are now MP-safe.
---
Write known issues on scalability
---
Share a global dummy SP between PCBs

It's never be changed so it can be pre-allocated and shared safely between PCBs.
---
Fix race condition on the rawcb list shared by rtsock and keysock

keysock now protects itself by its own mutex, which means that
the rawcb list is protected by two different mutexes (keysock's one
and softnet_lock for rtsock), of course it's useless.

Fix the situation by having a discrete rawcb list for each.
---
Use a dedicated mutex for rt_rawcb instead of softnet_lock if NET_MPSAFE
---
fix localcount leak in sav. fixed by ozaki-r@n.o.

I commit on behalf of him.
---
remove unnecessary comment.
---
Fix deadlock between pserialize_perform and localcount_drain

A typical ussage of localcount_drain looks like this:

mutex_enter(&mtx);
item = remove_from_list();
pserialize_perform(psz);
localcount_drain(&item->localcount, &cv, &mtx);
mutex_exit(&mtx);

This sequence can cause a deadlock which happens for example on the following
situation:

- Thread A calls localcount_drain which calls xc_broadcast after releasing
a specified mutex
- Thread B enters the sequence and calls pserialize_perform with holding
the mutex while pserialize_perform also calls xc_broadcast
- Thread C (xc_thread) that calls an xcall callback of localcount_drain tries
to hold the mutex

xc_broadcast of thread B doesn't start until xc_broadcast of thread A
finishes, which is a feature of xcall(9). This means that pserialize_perform
never complete until xc_broadcast of thread A finishes. On the other hand,
thread C that is a callee of xc_broadcast of thread A sticks on the mutex.
Finally the threads block each other (A blocks B, B blocks C and C blocks A).

A possible fix is to serialize executions of the above sequence by another
mutex, but adding another mutex makes the code complex, so fix the deadlock
by another way; the fix is to release the mutex before pserialize_perform
and instead use a condvar to prevent pserialize_perform from being called
simultaneously.

Note that the deadlock has happened only if NET_MPSAFE is enabled.
---
Add missing ifdef NET_MPSAFE
---
Take softnet_lock on pr_input properly if NET_MPSAFE

Currently softnet_lock is taken unnecessarily in some cases, e.g.,
icmp_input and encap4_input from ip_input, or not taken even if needed,
e.g., udp_input and tcp_input from ipsec4_common_input_cb. Fix them.

NFC if NET_MPSAFE is disabled (default).
---
- sanitize key debugging so that we don't print extra newlines or unassociated
debugging messages.
- remove unused functions and make internal ones static
- print information in one line per message
---
humanize printing of ip addresses
---
cast reduction, NFC.
---
Fix typo in comment
---
Pull out ipsec_fill_saidx_bymbuf (NFC)
---
Don't abuse key_checkrequest just for looking up sav

It does more than expected for example key_acquire.
---
Fix SP is broken on transport mode

isr->saidx was modified accidentally in ipsec_nextisr.

Reported by christos@
Helped investigations by christos@ and knakahara@
---
Constify isr at many places (NFC)
---
Include socketvar.h for softnet_lock
---
Fix buffer length for ipsec_logsastr
 1.169.4.1 27-Apr-2017  pgoyette Restore all work from the former pgoyette-localcount branch (which is
now abandoned doe to cvs merge botch).

The branch now builds, and installs via anita. There are still some
problems (cgd is non-functional and all atf tests time-out) but they
will get resolved soon.
 1.170.4.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.170.4.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.170.4.1 10-Jun-2019  christos Sync with HEAD
 1.170.2.3 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.170.2.2 30-Sep-2018  pgoyette Ssync with HEAD
 1.170.2.1 20-Mar-2018  pgoyette Initial implementation of sys/kern/kern_stup.c as discussed on tech-kern

For now, we only handle the dev/ccd and NTP needs; more to follow.
 1.175.2.1 03-Sep-2019  martin Pull up following revision(s) (requested by riastradh in ticket #173):

sys/crypto/nist_hash_drbg/nist_hash_drbg.c: revision 1.1
sys/crypto/nist_hash_drbg/nist_hash_drbg.h: revision 1.1
sys/rump/kern/lib/libcrypto/Makefile: revision 1.5
sys/crypto/nist_hash_drbg/files.nist_hash_drbg: revision 1.1
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.176
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes256.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_config.h: file removal
sys/conf/files: revision 1.1238
sys/dev/rndpseudo.c: revision 1.38
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.c: file removal
sys/sys/cprng.h: revision 1.15
sys/crypto/nist_ctr_drbg/nist_ctr_drbg.h: file removal
sys/crypto/nist_ctr_drbg/nist_ctr_aes_rijndael.h: file removal
sys/crypto/nist_ctr_drbg/files.nist_ctr_drbg: file removal
sys/kern/subr_cprng.c: revision 1.31
sys/crypto/nist_ctr_drbg/nist_ctr_drbg_aes128.h: file removal

Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.

Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security'
- better resistance to timing side channels than AES
- a better-understood security story (<a rel="nofollow" href="https://eprint.iacr.org/2018/349">https://eprint.iacr.org/2018/349</a>)
- no loss in compliance with US government standards that nobody ever
got fired for choosing, at least in the US-dominated western world
- no dirty endianness tricks
- self-tests

Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements
=> possible to mitigate by using hardware SHA-256 instructions
=> all you really need is 32 bytes to seed a userland PRNG anyway
=> if we just used ChaCha this would go away...

XXX pullup-7
XXX pullup-8
XXX pullup-9
 1.181.2.1 17-Jan-2020  ad Sync with head.
 1.191.6.1 02-Aug-2025  perseant Sync with HEAD
 1.3 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 03-Apr-2015  pooka Use vmspace of calling [rump kernel] process instead of sysspace.
 1.1 25-Apr-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10; 1.1.12;
gardenize rump.c: move data structure helper routines to accessors.c
 1.1.12.2 19-Mar-2016  skrll Sync with HEAD
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 25-Apr-2014  tls file accessors.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 25-Apr-2014  tls file accessors.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 25-Apr-2014  yamt file accessors.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 25-Apr-2014  rmind file accessors.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.6 09-Oct-2008  pooka No point in having our private atomic ops, just use the ones now
available in libc.
 1.5 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.4 02-Jul-2008  he branches: 1.4.2;
Don't rely on <sys/mutex.h> being implicitly included, because on
some ports (mvme68k for example) that's not happening.
 1.3 28-Apr-2008  martin branches: 1.3.2; 1.3.4;
Remove clause 3 and 4 from TNF licenses
 1.2 30-Dec-2007  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.14; 1.2.16; 1.2.18;
pull in atomic ops from vmlocking2
 1.1 28-Dec-2007  ad branches: 1.1.2;
file atomic.c was initially added on branch vmlocking2.
 1.1.2.1 28-Dec-2007  ad Make rump build.
 1.2.18.2 04-May-2009  yamt sync with head.
 1.2.18.1 16-May-2008  yamt sync with head.
 1.2.16.1 18-May-2008  yamt sync with head.
 1.2.14.3 17-Jan-2009  mjf Sync with HEAD.
 1.2.14.2 28-Sep-2008  mjf Sync with HEAD.
 1.2.14.1 02-Jun-2008  mjf Sync with HEAD.
 1.2.8.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.8.1 30-Dec-2007  mjf file atomic.c was added on branch mjf-devfs on 2008-02-18 21:07:22 +0000
 1.2.6.2 21-Jan-2008  yamt sync with head
 1.2.6.1 30-Dec-2007  yamt file atomic.c was added on branch yamt-lazymbuf on 2008-01-21 09:47:41 +0000
 1.2.4.2 09-Jan-2008  matt sync with HEAD
 1.2.4.1 30-Dec-2007  matt file atomic.c was added on branch matt-armv6 on 2008-01-09 01:57:59 +0000
 1.2.2.2 02-Jan-2008  bouyer Sync with HEAD
 1.2.2.1 30-Dec-2007  bouyer file atomic.c was added on branch bouyer-xeni386 on 2008-01-02 21:57:51 +0000
 1.3.4.2 31-Jul-2008  simonb Sync with head.
 1.3.4.1 03-Jul-2008  simonb Sync with head.
 1.3.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.3.2.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.4.2.1 19-Oct-2008  haad Sync with HEAD.
 1.3 14-Mar-2021  christos provide generic cas for _LP64
 1.2 18-Dec-2009  pooka branches: 1.2.76;
I got a report about this not compiling on mips64. While I could
not repeat the problem and while this should not be used at all on
mips64, the real fix is a little diablo in the details. So hack
around it for now (yes, it results in only half of the locks being
used on 64bit platforms. no biggie for a hack).
 1.1 12-Jan-2009  pooka branches: 1.1.2; 1.1.4; 1.1.8;
* Add adapted version of the userspace atomic_cas ops for platforms
lacking special instructions. We always use the spinlocked version
(could use RAS on UP NetBSD host, but it's not portable).
* Add platform-based symbol quirk tables for selectively not renaming
toolchain symbols for some platforms. Although, this should really
depend on the (toolchain,platform)-tuple and not just the platform.

This allows arm, hppa, mips and sh3 to build succesfully with an
isolated rump kernel namespace. ... now, one arch remains: vax.
you must compile vax. then, only then will you MI be.
 1.1.8.3 11-Mar-2010  yamt sync with head
 1.1.8.2 04-May-2009  yamt sync with head.
 1.1.8.1 12-Jan-2009  yamt file atomic_cas_generic.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.1.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.4.1 12-Jan-2009  skrll file atomic_cas_generic.c was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.1.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.1 12-Jan-2009  mjf file atomic_cas_generic.c was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.2.76.1 03-Apr-2021  thorpej Sync with HEAD.
 1.2 22-Nov-2010  pooka rename atomic_cas_up to rump_atomic_cas_up to avoid collisions
 1.1 21-Nov-2010  pooka Add a lockless uniprocessor version of atomic_cas_generic.c, which
is currently used by all the archs that previously used cas_generic.
 1.11 30-Sep-2008  pooka Switch to std kern_auth.
 1.10 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.9 01-Jul-2008  pooka branches: 1.9.2;
Fixes to build rump utilities as host binaries on Linux by removing
sys namespace pollution which has crept in.

Submitted in private mail by takemura, domain ca2.so-net.ne.jp
 1.8 23-Jun-2008  pooka Allow KAUTH_SYSTEM_MKNOD in kauth_authorize_generic() to make it
possible to execute sys_mknod().

from Arnaud Ysmal
 1.7 11-Mar-2008  pooka branches: 1.7.4; 1.7.6; 1.7.8;
Backup some fixes for recent breakage from local tree. Also some
other improvements such as exporting the real kernel namei and
using that in ukfs instead of the homegrown heap'o hacks namei.
"etcetc".
 1.6 24-Jan-2008  pooka branches: 1.6.2; 1.6.6;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().
 1.5 03-Jan-2008  pooka Theoretically this is supposed to be interchangeable with real
kernel code. Use kmem_alloc/free instead of some wily homerolled
rump interfaces for memory allocation.
 1.4 02-Jan-2008  pooka Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.3 08-Dec-2007  pooka branches: 1.3.4;
Remove cn_lwp from struct componentname. curlwp should be used
from on. The NDINIT() macro no longer takes the lwp parameter and
associates the credentials of the calling thread with the namei
structure.
 1.2 25-Aug-2007  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.10; 1.2.14; 1.2.16; 1.2.18;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.
 1.1 21-Aug-2007  pooka Implement credentials. Access control is now similar to if the file
system were run in the kernel.
 1.2.18.1 26-Dec-2007  ad Sync with head.
 1.2.16.1 18-Feb-2008  mjf Sync with HEAD.
 1.2.14.3 09-Dec-2007  jmcneill Sync with HEAD.
 1.2.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.2.14.1 25-Aug-2007  joerg file auth.c was added on branch jmcneill-pm on 2007-11-02 12:43:50 +0000
 1.2.10.2 09-Oct-2007  ad Sync with head.
 1.2.10.1 25-Aug-2007  ad file auth.c was added on branch vmlocking on 2007-10-09 13:45:03 +0000
 1.2.6.5 17-Mar-2008  yamt sync with head.
 1.2.6.4 04-Feb-2008  yamt sync with head.
 1.2.6.3 21-Jan-2008  yamt sync with head
 1.2.6.2 03-Sep-2007  yamt sync with head.
 1.2.6.1 25-Aug-2007  yamt file auth.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:25 +0000
 1.2.4.2 03-Sep-2007  skrll Sync with HEAD.
 1.2.4.1 25-Aug-2007  skrll file auth.c was added on branch nick-csl-alignment on 2007-09-03 10:23:54 +0000
 1.2.2.2 23-Mar-2008  matt sync with HEAD
 1.2.2.1 09-Jan-2008  matt sync with HEAD
 1.3.4.2 08-Jan-2008  bouyer Sync with HEAD
 1.3.4.1 02-Jan-2008  bouyer Sync with HEAD
 1.6.6.5 05-Oct-2008  mjf Sync with HEAD.
 1.6.6.4 28-Sep-2008  mjf Sync with HEAD.
 1.6.6.3 02-Jul-2008  mjf Sync with HEAD.
 1.6.6.2 29-Jun-2008  mjf Sync with HEAD.
 1.6.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.6.2.1 24-Mar-2008  keiichi sync with head.
 1.7.8.3 31-Jul-2008  simonb Sync with head.
 1.7.8.2 03-Jul-2008  simonb Sync with head.
 1.7.8.1 27-Jun-2008  simonb Sync with head.
 1.7.6.2 10-Oct-2008  skrll Sync with HEAD.
 1.7.6.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.7.4.1 04-May-2009  yamt sync with head.
 1.9.2.1 19-Oct-2008  haad Sync with HEAD.
 1.4 14-Aug-2007  pooka Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.3 09-Aug-2007  pooka fool some KASSERTs
 1.2 09-Aug-2007  pooka Add some stubs for lfs.
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file buffercache.c was added on branch matt-mips64 on 2007-08-05 22:28:08 +0000
 1.3 17-Jan-2011  pooka use compat code from sys/compat/common
 1.2 26-Jul-2010  pooka branches: 1.2.2; 1.2.4; 1.2.6;
Add select to list on compat syscalls. Makes some code work for
me with a nb5 userland without having to compile with -g ;)
 1.1 19-Jul-2010  pooka * move stat syscalls to newstyle compat
* implement compat for pollts
 1.2.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.2.4.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.2.4.1 26-Jul-2010  uebayasi file compat.c was added on branch uebayasi-xip on 2010-08-17 06:48:00 +0000
 1.2.2.2 11-Aug-2010  yamt sync with head.
 1.2.2.1 26-Jul-2010  yamt file compat.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.9 02-Jan-2020  thorpej - Eliminate the global "boottime" variable, which was being accessed
without any synchronization against changes by e.g. clock_settime().
- Replace with new getbinboottime() / getnanoboottime() / getmicroboottime()
functions (naming mirrors that of other time access functions in kern_tc.c).
It returns the (maybe-converted) value of timebasebin, which also tracks
our estimate of when the system was booted (i.e. the legacy "boottime" was
redundant).

XXX There needs to be a lockless synchronization mechanism for reading
timebasebin, but this is a problem in kern_tc.c that pre-existed these
"boottime" changes. At least now the problem is centralized in one location.
 1.8 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.7 30-Nov-2017  christos branches: 1.7.2; 1.7.4;
add fo_name so we can identify the fileops in a simple way.
 1.6 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.5 26-May-2015  pooka Implement fo_poll so that rump_sys_poll(stdout) works
more or less as expected.

from Martin Lucina <martin@lucina.net> via rumpkernel-users
 1.4 25-Aug-2014  pooka branches: 1.4.2;
No longer create a special process context to fork remote clients off
of, simply always rfork off of proc1 closing all descriptors, and have
the rump kernel open 0/1/2 if the parent process is "1".

Fixes tests/rump/rumpkernel/t_sp, which was failing since the
abovementioned special process change due to attempting to deliver a
signal to the special process and the special process was not equipped
to handle one.
 1.3 08-Sep-2013  pooka branches: 1.3.4; 1.3.6; 1.3.8; 1.3.10;
Fool isatty() into thinking we're a tty.
 1.2 07-Sep-2013  pooka fix -Wuninitialized
 1.1 07-Sep-2013  pooka Add an initial console device and open fd's 0/1/2 for initproc. This is
again useful in standalone-type environments such as Xen, where all
printf/etc calls go through the rump kernel.
 1.3.10.3 03-Dec-2017  jdolecek update from HEAD
 1.3.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.10.1 08-Sep-2013  tls file cons.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.3.8.1 09-Dec-2014  martin Pull up following revision(s) (requested by gson in ticket #299):
sys/rump/librump/rumpkern/cons.c: revision 1.4
sys/rump/librump/rumpkern/rump.c: revision 1.311
lib/librumpuser/rumpuser_sp.c: revision 1.67
No longer create a special process context to fork remote clients off
of, simply always rfork off of proc1 closing all descriptors, and have
the rump kernel open 0/1/2 if the parent process is "1".
Fixes tests/rump/rumpkernel/t_sp, which was failing since the
abovementioned special process change due to attempting to deliver a
signal to the special process and the special process was not equipped
to handle one.
 1.3.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.6.1 08-Sep-2013  yamt file cons.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.3.4.2 18-May-2014  rmind sync with head
 1.3.4.1 08-Sep-2013  rmind file cons.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.4.2.2 19-Mar-2016  skrll Sync with HEAD
 1.4.2.1 06-Jun-2015  skrll Sync with HEAD
 1.7.4.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.7.4.1 10-Jun-2019  christos Sync with HEAD
 1.7.2.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.9 17-Jan-2014  pooka Use subr_cprng.c instead of stub implementation. Rijndael migrates from
rumpkern_crypto to rumpkern due to it being mandatory for cprng.
 1.8 01-Jul-2013  riastradh Remove now-needless rump cprng_strong_deplete stub.

These rump stubs need to go away at some point...
 1.7 23-Jun-2013  riastradh branches: 1.7.2;
Rework rndsink(9) abstraction and adapt arc4random(9) and cprng(9).

rndsink(9):
- Simplify API.
- Simplify locking scheme.
- Add a man page.
- Avoid races in destruction.
- Avoid races in requesting entropy now and scheduling entropy later.

Periodic distribution of entropy to sinks reduces the need for the
last one, but this way we don't need to rely on periodic distribution
(e.g., in a future tickless NetBSD).

rndsinks_lock should probably eventually merge with the rndpool lock,
but we'll put that off for now.

cprng(9):
- Make struct cprng_strong opaque.
- Move rndpseudo.c parts that futz with cprng guts to subr_cprng.c.
- Fix kevent locking. (Is kevent locking documented anywhere?)
- Stub out rump cprng further until we can rumpify rndsink instead.
- Strip code to grovel through struct cprng_strong in fstat.
 1.6 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.5 27-Apr-2013  pooka make the random hypercall more generic
 1.4 17-Dec-2011  tls branches: 1.4.4; 1.4.8;

Separate /dev/random pseudodevice implemenation from kernel entropy pool
implementation. Rewrite pseudodevice code to use cprng_strong(9).

The new pseudodevice is cloning, so each caller gets bits from a stream
generated with its own key. Users of /dev/urandom get their generators
keyed on a "best effort" basis -- the kernel will rekey generators
whenever the entropy pool hits the high water mark -- while users of
/dev/random get their generators rekeyed every time key-length bits
are output.

The underlying cprng_strong API can use AES-256 or AES-128, but we use
AES-128 because of concerns about related-key attacks on AES-256. This
improves performance (and reduces entropy pool depletion) significantly
for users of /dev/urandom but does cause users of /dev/random to rekey
twice as often.

Also fixes various bugs (including some missing locking and a reseed-counter
overflow in the CTR_DRBG code) found while testing this.

For long reads, this generator is approximately 20 times as fast as the
old generator (dd with bs=64K yields 53MB/sec on 2Ghz Core2 instead of
2.5MB/sec) and also uses a separate mutex per instance so concurrency
is greatly improved. For reads of typical key sizes for modern
cryptosystems (16-32 bytes) performance is about the same as the old
code: a little better for 32 bytes, a little worse for 16 bytes.
 1.3 28-Nov-2011  tls branches: 1.3.2;
Remove arc4random() and arc4randbytes() from the kernel API. Replace
arc4random() hacks in rump with stubs that call the host arc4random() to
get numbers that are hopefully actually random (arc4random() keyed with
stack junk is not). This should fix some of the currently failing anita
tests -- we should no longer generate duplicate "random" MAC addresses in
the test environment.
 1.2 21-Nov-2011  tsutsui No need to include MD <machine/cpu_counter.h> here.
 1.1 19-Nov-2011  tls First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.3.2.1 18-Feb-2012  mrg merge to -current.
 1.4.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.8.1 23-Jun-2013  tls resync from head
 1.4.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.2 17-Apr-2012  yamt sync with head
 1.4.4.1 17-Dec-2011  yamt file cprng_stub.c was added on branch yamt-pagecache on 2012-04-17 00:08:49 +0000
 1.7.2.2 18-May-2014  rmind sync with head
 1.7.2.1 28-Aug-2013  rmind sync with head
 1.11 29-Jun-2021  nia Remove uscanner(4) driver

This exists for compatibility with a Linux interface which was apparently
deprecated in Linux 2.6. There are various mailing list threads going
back to 2004 where the usefulness of this driver is discussed, but
the conclusion is that scanner software has all moved to using ugen(4)
instead, and enabling this driver will not help you scan things.
 1.10 27-Jan-2019  maxv branches: 1.10.16;
Remove the satlink driver. It was disabled everywhere, had no man page and
no use either. Spotted by thorpej in PR/21345, ok christos.
 1.9 19-Dec-2018  maxv Remove compat_svr4 and compat_svr4_32, as discussed on tech-kern@ recently,
but also as discussed several times in the past.
 1.8 14-Jan-2017  pgoyette branches: 1.8.14; 1.8.16;
Don't call the drvctl module's initialization code during rump component
initialization. Instead, temporarily attach the drvctl's cdevsw to
determine its device c-major, create the /dev/drvctl node using that
c-major, and then detach. This leaves things in a state where normal
module initialization can run.

Since we're now creating the /dev/drvctl device node correctly, we don't
need to create it again. So mark the device as DEVNODE_DONTBOTHER in
the devsw_conv0 conversion table.

This bug was introduced more than a year ago (src/sys/kern/kern_drvctl.c
rev 1.40), but was silently ignored except when running a rump_server
built with LOCKDEBUG.
 1.7 25-Feb-2011  pooka branches: 1.7.14; 1.7.32; 1.7.36;
Don't autogenerate a large number of unnecessary device nodes, just
slows bootstrap.
 1.6 10-Feb-2011  pooka support /dev/zero
 1.5 22-Nov-2010  pooka branches: 1.5.2; 1.5.4;
"regen": /dev/md*
 1.4 07-Jul-2010  pooka branches: 1.4.2; 1.4.4;
Borrow /dev/mem major from i386 for /dev/null and autogenerate node.
 1.3 07-Jul-2010  pooka add /dev/putter to "devfs" (forgot to commit this earlier)
 1.2 21-Jun-2010  pooka regen for vnd (or at least something like that since this file
still isn't really generated, just copypasted)
 1.1 30-Apr-2010  pooka branches: 1.1.2;
Include devsw_conv0 from an i386 kernel compilation (no, we don't
care about the arch as long as all the devices we care about are
present). The file should be autogenerated, but that requires some
more changes to config(1).
 1.1.2.4 05-Mar-2011  rmind sync with head
 1.1.2.3 03-Jul-2010  rmind sync with head
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 30-Apr-2010  rmind file devsw.c was added on branch rmind-uvmplock on 2010-05-30 05:18:06 +0000
 1.4.4.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.4.4.1 07-Jul-2010  uebayasi file devsw.c was added on branch uebayasi-xip on 2010-08-17 06:48:00 +0000
 1.4.2.2 11-Aug-2010  yamt sync with head.
 1.4.2.1 07-Jul-2010  yamt file devsw.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.5.4.2 05-Mar-2011  bouyer Sync with HEAD
 1.5.4.1 17-Feb-2011  bouyer Sync with HEAD
 1.5.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.7.36.1 20-Mar-2017  pgoyette Sync with HEAD
 1.7.32.1 05-Feb-2017  skrll Sync with HEAD
 1.7.14.1 03-Dec-2017  jdolecek update from HEAD
 1.8.16.1 10-Jun-2019  christos Sync with HEAD
 1.8.14.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.10.16.1 01-Aug-2021  thorpej Sync with HEAD.
 1.202 28-Jul-2024  bad initialize {sys,max}_{cb}devsws next to what they refer to

e.g. {sys,max}_cdevsws next to the definition of cdevsw.
 1.201 15-Oct-2023  riastradh branches: 1.201.6;
rump: Sprinkle sys/syncobj.h here too.
 1.200 28-Sep-2023  manu Fix root search in RAID 1 sets

We use the wedge information given by bootstrap, where the kernel was
found. This requires src/sys/arch/i386/stand/i386/lib/biosdisk.c 1.59
to work in all cases.
 1.199 22-Apr-2023  riastradh rumpkern: Provide stub pnbuf_cache weak alias.

Needed only by sys_module.c handle_modctl_load, which won't work if
there's no rumpvfs linked in anyway.
 1.198 22-Apr-2023  riastradh rumpkern: Provide fs_filtops weak alias.

We should introduce a link set for sys_kfilters, but this works
around the problem for now -- librump's dependency on librumpvfs
symbols.
 1.197 26-Feb-2023  skrll nkmempages should be size_t
 1.196 30-Apr-2020  riastradh branches: 1.196.20;
Rewrite entropy subsystem.

Primary goals:

1. Use cryptography primitives designed and vetted by cryptographers.
2. Be honest about entropy estimation.
3. Propagate full entropy as soon as possible.
4. Simplify the APIs.
5. Reduce overhead of rnd_add_data and cprng_strong.
6. Reduce side channels of HWRNG data and human input sources.
7. Improve visibility of operation with sysctl and event counters.

Caveat: rngtest is no longer used generically for RND_TYPE_RNG
rndsources. Hardware RNG devices should have hardware-specific
health tests. For example, checking for two repeated 256-bit outputs
works to detect AMD's 2019 RDRAND bug. Not all hardware RNGs are
necessarily designed to produce exactly uniform output.

ENTROPY POOL

- A Keccak sponge, with test vectors, replaces the old LFSR/SHA-1
kludge as the cryptographic primitive.

- `Entropy depletion' is available for testing purposes with a sysctl
knob kern.entropy.depletion; otherwise it is disabled, and once the
system reaches full entropy it is assumed to stay there as far as
modern cryptography is concerned.

- No `entropy estimation' based on sample values. Such `entropy
estimation' is a contradiction in terms, dishonest to users, and a
potential source of side channels. It is the responsibility of the
driver author to study the entropy of the process that generates
the samples.

- Per-CPU gathering pools avoid contention on a global queue.

- Entropy is occasionally consolidated into global pool -- as soon as
it's ready, if we've never reached full entropy, and with a rate
limit afterward. Operators can force consolidation now by running
sysctl -w kern.entropy.consolidate=1.

- rndsink(9) API has been replaced by an epoch counter which changes
whenever entropy is consolidated into the global pool.
. Usage: Cache entropy_epoch() when you seed. If entropy_epoch()
has changed when you're about to use whatever you seeded, reseed.
. Epoch is never zero, so initialize cache to 0 if you want to reseed
on first use.
. Epoch is -1 iff we have never reached full entropy -- in other
words, the old rnd_initial_entropy is (entropy_epoch() != -1) --
but it is better if you check for changes rather than for -1, so
that if the system estimated its own entropy incorrectly, entropy
consolidation has the opportunity to prevent future compromise.

- Sysctls and event counters provide operator visibility into what's
happening:
. kern.entropy.needed - bits of entropy short of full entropy
. kern.entropy.pending - bits known to be pending in per-CPU pools,
can be consolidated with sysctl -w kern.entropy.consolidate=1
. kern.entropy.epoch - number of times consolidation has happened,
never 0, and -1 iff we have never reached full entropy

CPRNG_STRONG

- A cprng_strong instance is now a collection of per-CPU NIST
Hash_DRBGs. There are only two in the system: user_cprng for
/dev/urandom and sysctl kern.?random, and kern_cprng for kernel
users which may need to operate in interrupt context up to IPL_VM.

(Calling cprng_strong in interrupt context does not strike me as a
particularly good idea, so I added an event counter to see whether
anything actually does.)

- Event counters provide operator visibility into when reseeding
happens.

INTEL RDRAND/RDSEED, VIA C3 RNG (CPU_RNG)

- Unwired for now; will be rewired in a subsequent commit.
 1.195 02-Jan-2020  thorpej - Eliminate the global "boottime" variable, which was being accessed
without any synchronization against changes by e.g. clock_settime().
- Replace with new getbinboottime() / getnanoboottime() / getmicroboottime()
functions (naming mirrors that of other time access functions in kern_tc.c).
It returns the (maybe-converted) value of timebasebin, which also tracks
our estimate of when the system was booted (i.e. the legacy "boottime" was
redundant).

XXX There needs to be a lockless synchronization mechanism for reading
timebasebin, but this is a problem in kern_tc.c that pre-existed these
"boottime" changes. At least now the problem is centralized in one location.
 1.194 02-Jan-2020  martin Add shutting_down variable for rump.
 1.193 16-Dec-2019  ad - Extend the per-CPU counters matt@ did to include all of the hot counters
in UVM, excluding uvmexp.free, which needs special treatment and will be
done with a separate commit. Cuts system time for a build by 20-25% on
a 48 CPU machine w/DIAGNOSTIC.

- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
 1.192 26-Sep-2019  bad Provide a weak alias for vnode_to_path to be used unless librumpvfs is present.
 1.191 02-Jun-2019  kre branches: 1.191.2;

Apply a patch from hannken@ which adds a weak alias for rump_getcwd_common()
allowing -lrump to be used without -lrumpvfs.

This is an alternate fix to the earluer one which added -lrumvfs to
many rump based tests (and the rump server) which might be undone soon.

This also fixes the sun2 build.
 1.190 09-Mar-2019  hannken Rumpkernel has its own thread deallocation. Add missing fstrans_lwp_dtor()
to lwproc_freelwp().

PR bin/50350: rump/rumpkern/t_sp/stress_{long,short} fail on Core 2 Quad
 1.189 05-Dec-2018  christos no more need for get_expose_address() here.
 1.188 06-Oct-2018  christos add get_expose_address()
 1.187 05-Oct-2018  hannken Bring back three state file system suspension:

NORMAL -> SUSPENDING -> SUSPENDED

and add operation fstrans_start_lazy() that only blocks while SUSPENDED.

Change vndthread() support operation handle_with_rdwr() to bracket
its file system operations by fstrans_start_lazy() and fstrans_done().

PR kern/53624 (dom0 freeze on domU exit)
 1.186 10-Aug-2018  pgoyette Allow syscall_establish() to install new syscalls when the existing
entry-point is either sys_nomodule or sys_nosys. Update the
makesyscalls.sh script to create a const array of bits to allow
syscall_disestablish() to properly restore the original entry-point.
Update all the initializers of struct emul to initialize the pointer
to the bit array struct emul.

XXX Regen of all files created by makesyscalls.sh will come soon,
XXX followed by a kernel version bump (since struct emul is being
XXX modified).

This commit should address PR kern/45781 and also removes the need
for the work-around for that PR in file

sys/arch/usermode/modules/syscallemu/syscallemu.c
 1.185 21-Nov-2017  ozaki-r branches: 1.185.2; 1.185.4;
Add missing inclusion of pserialize.h (fix build)
 1.184 21-Nov-2017  ozaki-r Implement debugging feature for pserialize(9)

The debugging feature detects violations of pserialize constraints.
It causes a panic:
- if a context switch happens in a read section, or
- if a sleepable function is called in a read section.

The feature is enabled only if LOCKDEBUG is on.

Discussed on tech-kern@
 1.183 09-Nov-2017  christos added booted_method
 1.182 04-Jun-2017  hannken Operations fstrans_start() and fstrans_start_nowait() now always
use FSTRANS_SHARED as lock type so remove the lock type argument.

File system state FSTRANS_SUSPENDING is now unused so remove it.

Regen vnode_if files.

Ride 8.99.1 less than a hour ago.
 1.181 22-Feb-2017  hannken branches: 1.181.6;
Add weak aliases for _fstrans_start() and fstrans_done().
 1.180 22-Dec-2016  cherry branches: 1.180.2;
physmem should be of type psize_t

Also, use PRIxPSIZE when printf(9)ing physmem.
 1.179 26-Jan-2016  pooka branches: 1.179.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.178 22-Jan-2016  ozaki-r Fix build with RUMP_LOCKDEBUG=yes
 1.177 18-Jan-2016  pooka put lwp/proc stuff into the same source module (emul.c -> lwproc.c)
 1.176 18-Jan-2016  pooka massively reduce header pollution from times prehistoric
 1.175 18-Jan-2016  pooka boottime is a timespec, not timeval
 1.174 29-Dec-2015  pgoyette Now that the table of auto-loadable syscalls is per-emulation, make sure
that the rump-kernel has its own list. Otherwise, missing syscalls won't
trigger a module auto-load.

This commit finishes the work to get tests/lib/librumphijack/t_tcpip
nfs_autoload test case working again after 16 months of failures! (see
PR bin/49153).
 1.173 25-Aug-2015  pooka add cpu_getmodel()
 1.172 24-Jul-2015  pooka Since the rump kernel does not know when the container it's running in
actually halts, print "halted" in the hypercall.
 1.171 22-Apr-2015  pooka Include kern_clock.c in rump kernels.
 1.170 18-Apr-2015  pooka Give remote clients struct pmap storage. Although the pmap is unused,
that way we can sure that the pmap macro framework doesn't access all
the wrong places.
 1.169 03-Jan-2015  pooka Put all sysproxy routines to their own C module, sysproxy.c
 1.168 18-Nov-2014  pooka branches: 1.168.2;
delay() can't use rumpuser_clock_sleep(), because that may unschedule().

Instead, busyloop with calls to rumpuser_clock_gettime(). Fixing delay()
properly should addressed in hypercall rev.18 by introducing a nowrap
variant/flag for rumpuser_clock_sleep().
 1.167 18-Nov-2014  pooka Attempt to make sure that DELAY()/delay() is available in all MD names.
 1.166 28-May-2014  justin Add missing __diagused in rump code
 1.165 25-Apr-2014  pooka cpu_reboot() is more of an emul.c thing than a rump.c thing
 1.164 11-Mar-2014  pooka branches: 1.164.2;
Put the syncobjs in emul.c instead of locks.c so that they are
present for both locks.c and locks_up.c alike.
 1.163 20-Feb-2014  pooka + resettodr
 1.162 29-Jan-2014  pooka lwp0 needs l_proc set for panic->cpu_reboot to dump core the right way
 1.161 17-Jan-2014  pooka Use subr_cprng.c instead of stub implementation. Rijndael migrates from
rumpkern_crypto to rumpkern due to it being mandatory for cprng.
 1.160 16-Dec-2013  pooka Translate return values for emulations, e.g. Linux. For ports without
__HAVE_MINIMAL_EMUL, we simply look up the values from p->p_emul->e_errno.
For ports which cannot afford to keep an extra pointer per emul structure
around, we hope there is __HAVE_SYSCALL_INTERN support and thread the
errno values through p_emuldata. Notably, we cannot alter the syscall
method like most ports do with syscall_intern, since they do it via
p_mdproc, so MI code is not possible there.
 1.159 09-Dec-2013  pooka Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.
 1.158 30-Apr-2013  pooka branches: 1.158.4;
Flip parameter order in the clock hypercalls to make them consistent
with everything else wrt in/out parameters.
 1.157 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.156 28-Apr-2013  pooka Improve the time-related hypercalls so that's it's possible to
sleep until an absolute time on the host's monotonic clock (should
something like that be supported).
 1.155 18-Mar-2013  para calculate vnode cache size based on the resource it gets allocated from
this stops setting kern.maxvnodes to high so it exhausts available space in kmem

http://mail-index.netbsd.org/tech-kern/2013/03/08/msg015095.html
 1.154 07-Mar-2013  pooka set e_nsysent
 1.153 19-Feb-2013  martin Stopgap fix to make rump cooperate with pserialize, may be revisited later.
Patch from pooka, ok: rmind. No related regressions in a complete atf test
run (which works again with this, even on non x86 SMP machines).
 1.152 20-Jan-2013  rmind Provide xc_send_ipi() routine in RUMP, which is required for high-priority
xcall(9) mechanism. It is emulated using low-priority xcall(9).
 1.151 27-Oct-2012  chs split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.150 21-Mar-2011  pooka branches: 1.150.4; 1.150.10; 1.150.14;
Update copyright statements.

no functional change.
 1.149 21-Jan-2011  pooka Since "physmem" is largely unused except for zfs wanting to know
if it has enough memory available, just pick a number which makes
zfs happy.

We *could* use a MIN() of available host mem and rump_memlimit,
though ...
 1.148 06-Jan-2011  pooka branches: 1.148.2; 1.148.4;
Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)
 1.147 21-Nov-2010  pooka Realize the >1yo comment above rump_reboot and retire them to make
room for sys_reboot.
 1.146 15-Oct-2010  tsutsui Make common kernel module binaries work on both sun3 and sun3x.
Tested on 3/160 (on TME) and (real) 3/80.

XXX: module files can be loaded only on single user?
 1.145 01-Sep-2010  pooka Implement rump_lwproc: the new lwp/proc management routines for
rump. These move the management of the pid/lwpid space from the
application into the kernel, make code more robust, and make it
possible to attach multiple lwp's to non-proc0 processes.
 1.144 23-Jun-2010  pooka As normal, fix breakage from untested commits by rmind.
 1.143 14-Jun-2010  pooka Remove comment which wasn't supposed to get committed.
 1.142 14-Jun-2010  pooka Make some stubby tty routines used by printf weak aliases, so that
the full ones will be used if we have the upcoming tty component
loaded.
 1.141 13-Jun-2010  pooka Fix previous in emul.c -- only numbers are operands for cpp comparisons.
Apparently non-numbers logically produce arch-dependent behaviour.
 1.140 13-Jun-2010  pooka deal with sun3's module disability
 1.139 13-Jun-2010  pooka add rest of sparc pagesize variables
 1.138 10-Jun-2010  pooka Use kern_proc.c instead of a collection of stubs. But what we
really wanted from this commit was the support for proc_specificdata.

TODO: make creating a new process actually use kern_proc and
maybe even add an interface which starts a process with
"any pid you don't like"
 1.137 11-May-2010  pooka adjust comment in previous.
XXX: should make that (and physmem) mean something here
 1.136 11-May-2010  pooka remove unnecessary #ifdef
 1.135 01-May-2010  pooka Now that we have a big devsw_conv0, need at least as many entries
in devsw as the highest device number in the conv table. Do a
"good for a hundred years" guess now, fix properly later.
 1.134 30-Apr-2010  pooka Include devsw_conv0 from an i386 kernel compilation (no, we don't
care about the arch as long as all the devices we care about are
present). The file should be autogenerated, but that requires some
more changes to config(1).
 1.133 28-Apr-2010  pooka Make initial devsw a little more believable. Especially adjust
max_sys_devsw, since it was previously a bit too much, given that
the correct value is 0.
 1.132 21-Apr-2010  pooka remove stuff which now comes via std. kernel source modules
 1.131 21-Apr-2010  pooka support kern_resource
 1.130 21-Apr-2010  pooka Move all signal-related from emul.c to signals.c. Additionally,
define a few alternate signal models for the rump kernel, including
ones where signals are ignored or sent to host processes.
 1.129 19-Apr-2010  pooka no \n in panic
 1.128 17-Apr-2010  pooka One emul is enough and since we need emul_netbsd, retire emul_rump.
 1.127 17-Apr-2010  pooka Move scheduling related routines from emul.c to scheduler.c
 1.126 14-Apr-2010  pooka Use kern_syscall.c instead of homegrown syscall dis/establishment routines.
 1.125 14-Apr-2010  pooka Include kern_tc and use a timecounter driver instead of homerolled
kern_tc implementation.
 1.124 31-Mar-2010  pooka We don't have a real rootdev (by default at least), so set it to NODEV.
 1.123 01-Mar-2010  pooka branches: 1.123.2;
add signal stubs required by mfs
 1.122 08-Feb-2010  joerg Remove separate mb_map. The nmbclusters is computed at boot time based
on the amount of physical memory and limited by NMBCLUSTERS if present.
Architectures without direct mapping also limit it based on the kmem_map
size, which is used as backing store. On i386 and ARM, the maximum KVA
used for mbuf clusters is limited to 64MB by default.

The old default limits and limits based on GATEWAY have been removed.
key_registered_sb_max is hard-wired to a value derived from 2048
clusters.
 1.121 31-Jan-2010  pooka branches: 1.121.2;
Include newly-created subr_device.c and remove few special case
device accessor copypastes. This makes it possible to link static
binaries which use -lrumpdev.
 1.120 31-Jan-2010  pooka include kern_hook.c
 1.119 15-Jan-2010  pooka Use subr_percpu.c instead of homegrown implementation. ...except
when using malloc(3)-relegated allocators (happens in production
e.g. on Linux), since subr_percpu.c uses vmem and i don't want to
reimplement vmem.
 1.118 13-Jan-2010  pooka Minimize unnecessary differences in rump.
 1.117 13-Jan-2010  pooka Add a few symbols used by the tty code.
 1.116 09-Jan-2010  pooka Include kern_pmf.c in rumpdev.
 1.115 08-Jan-2010  dyoung Expand PMF_FN_* macros.
 1.114 25-Dec-2009  elad allow rump to build
 1.113 16-Dec-2009  pooka Generate vers.c and include it in the kernel component.
 1.112 03-Dec-2009  pooka Decide it's not worth the fuss to have rumpfs as a module and just
hardcode attach into rump_vfs_init(). Saves us from a lot of
pingpong init bouncing from one component to another to get the order
right.
 1.111 01-Dec-2009  pooka Include cpu crosscall support (instead of stubbing it out).
 1.110 26-Nov-2009  pooka For rumpfs, do mountroot instead of the bunch of homegrown hacks
currently there. Still needs a little massage to get the kernel
interfaces right and avoid copypaste especially from main().

Also, move it a bit more into the direction of a real file system
(finally!) by giving it a vfsops. Most ops are still unimplemented,
though.
 1.109 04-Nov-2009  pooka misc_stub and emul have been the same thing for a looong time now,
so just move the few remaining routines in misc_stub to emul.
 1.108 04-Nov-2009  pooka Give the kthread->pthread interface emulation its own module.
 1.107 04-Nov-2009  pooka Pull all relegating memory allocators under a common roof in memalloc.c
 1.106 04-Nov-2009  pooka move copy-related routines to their own module
 1.105 04-Nov-2009  pooka Use std. uiomove() & friends.
 1.104 21-Oct-2009  rmind Sync rump with kernel changes.
 1.103 16-Oct-2009  pooka Include sys_select.c for proper select()/poll() support.
 1.102 15-Oct-2009  pooka Give lwp usage some much-needed love: stop treating lwp0 as the
all-sink and make sure each separate thread in rump has its own
lwp. Happy-go-lucky callers will get scheduled a temporary lwp
on entry, while true lwp connoisseurs may request a stable lwp
for their purposes. Some more love may be required later down the
road, but for now different threads will stepping on each others
toes.
 1.101 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.100 14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.99 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.98 09-Oct-2009  pooka Provide an interface for reboot.
 1.97 03-Oct-2009  christos Need proc_uidmatch
 1.96 24-Sep-2009  pooka remove a no longer necessary hack
 1.95 20-Sep-2009  pooka default to AB_SILENT
 1.94 07-Sep-2009  pooka provide pmf stubs
 1.93 06-Sep-2009  pooka move hppa cpp kludge to the end of the file
 1.92 04-Sep-2009  pooka add a few global symbols required by kernel code
 1.91 20-Jul-2009  pooka realloc works much better if it actually uses realloc instead of malloc
 1.90 09-Jun-2009  pooka Nuke some bss stuff which is coming from vfs_bio via rumpvfs.
 1.89 07-May-2009  pooka Don't create unpgc thread if RUMP_THREADS is 0. The benefit is the
usual: possible to run programs using AF_LOCAL without threads.
 1.88 29-Apr-2009  pooka Add proof-of-concept code for enabling system calls to rump virtual
kernels running in other processes on the same machine or on an
entirely different host. I wrote this a while ago and am now
committing it mainly to avoid losing it. It works, but could do
with a little tuning here and there.

What this will hopefully eventually buy us is the ability to use
standard userland tools to configure rump kernels, e.g. ifconfig(8)
and route(8) could be used to configure the networking stack provided
by a rump kernel. Also some distributed OS implications may apply.

fun fact: a system call which just does copyin/copyout takes >1000x
longer when made over the LAN as compared to when made on the same
machine.
 1.87 26-Apr-2009  pooka Fix getnano/microuptime to report actual uptime.
 1.86 26-Apr-2009  pgoyette Catch up with recent changes to sys/proc.h (Hello, rmind!)
 1.85 30-Mar-2009  christos we want microuptime too.
 1.84 30-Mar-2009  christos need getnanouptime not getmicrouptime
 1.83 30-Mar-2009  christos one more timeval -> timespec line
 1.82 29-Mar-2009  christos Catch up with kernel changes
 1.81 18-Mar-2009  pooka Support kqueue in the rump virtual kernel.
 1.80 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.79 27-Feb-2009  pooka decouple rumpuser gettime from struct timeval
 1.78 26-Feb-2009  pooka Make rumpuser stat and nanosleep independent of the host system
stat and timespec definitions.
 1.77 07-Feb-2009  pooka branches: 1.77.2;
Make the clock interrupt tick based on absolute time instead of
relative time. This prevents drifting. Also, keep track of time
within userspace, so we do not have to make a syscall to get the
clock value. This is approximately 7 times cheaper, but on the
negative side is limited to the clock interrupt frequency.
 1.76 13-Jan-2009  pooka Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.75 12-Jan-2009  pooka Shove in some hppa love to help with spcopy.S (why does that need
to be in libkern?).
 1.74 11-Jan-2009  pooka Protect against nfssilly in RUMP_THREADS=0
 1.73 11-Jan-2009  christos merge christos-time_t
 1.72 07-Jan-2009  pooka provide kern_realloc
 1.71 05-Jan-2009  pooka Rename malloc() to kern_malloc() to avoid name conflict with libc.
Now it is possible to use the kernel linker with rump.
 1.70 04-Jan-2009  pooka Include libkern contents in librump.
 1.69 02-Jan-2009  pooka Sauce with some kludges:
* revert rev 1.68 of emul.c: delay() is hopelessly MD and needs
whipping (not the fun kind)
* #undef DELAY in cpu.h

This will hopefully fix build for all archs and give me time to
hop through our 46521 fine archs and edit the headers.
 1.68 02-Jan-2009  pooka Export delay, _delay and delay_func symbols to attempt to appease
the macro mania set over all architectures.
 1.67 02-Jan-2009  pooka Include kernel printf routines in rump instead of relying on the
magic libc symbol. This also allows to bid farewell to subr_prf2.c
and merge the contents back to subr_prf.c. The host kernel bridging
is now done via rumpuser_putchar().
 1.66 01-Jan-2009  pooka Define MODULAR for rump core components. This enables module
loading via the kernel module framework (instead of dlopen()).
For now it only works on amd64 and i386, but for the rest it should
just be a matter of including the relevant kobj_machdep.c modules
from the kernel sources.
 1.65 30-Dec-2008  pooka properly handle kthread_exit()
 1.64 29-Dec-2008  pooka include subr_devsw in rumpkern
 1.63 21-Dec-2008  cegger branches: 1.63.2;
undo turn malloc flags to enums.
Requested by christos.

Keep malloc flag defines in kernel section.
 1.62 20-Dec-2008  cegger Turn malloc flags into an enum. Fixes build breakage.
 1.61 18-Dec-2008  pooka __KERNEL_RCSID
 1.60 17-Dec-2008  pooka If available (__NetBSD__), use pthread_setname_np() to set the
thread name for kthread_create().
 1.59 14-Dec-2008  pooka If the arch uses __BSWAP_RENAME, provide non-namespaced kernel
symbols which just call the libc symbols. Allows to get rid of
rump machine/bswap.h.

XXX:
1) this is unlikely to work on non-NetBSD
==>
2) should look into including libkern in librump
 1.58 10-Dec-2008  pooka Make non-mpsafe threads KERNEL_LOCK() before starting execution.
 1.57 27-Nov-2008  pooka Remove the whole magic ubc window thingie. All file systems use
ubc_uiomove() now, so we can hook ourselves there.
 1.56 26-Nov-2008  pooka Add a few symbols required by nfsd
 1.55 17-Nov-2008  pooka Add more verbose commentage to the module thread non-creation.
 1.54 17-Nov-2008  pooka Ignore the module unload thread.
 1.53 14-Oct-2008  pooka branches: 1.53.2; 1.53.4; 1.53.8;
Add some more trivial emulations.
 1.52 13-Oct-2008  pooka Provide psignal() so that we don't get linked against psignal(3).
As there is no real process model currently, just "trap" the signals
appropriately.
 1.51 10-Oct-2008  pooka Support callouts and call callout_hardclock() from the timer
interrupt thread.

The sleepq implementation required for callouts is horrible, kludged
only for callouts, and generally unacceptable. It needs revisiting,
but I'm not sure yet should rump or kern_timeout be improved. It's
almost untested as of now, but committing this will give me some
maneuvering space while letting application compile.
 1.50 02-Oct-2008  pooka Remove rumpuser_yield(). Not only doesn't it really make sense
here, some kind soul made it completely empty.
 1.49 30-Sep-2008  pooka Switch to std kern_auth.
 1.48 25-Sep-2008  pooka Move global malloc types from kern_malloc into a separate module.
 1.47 12-Aug-2008  pooka Make it possible to control starting of threads per env variable
instead of only at compile-time.
 1.46 04-Aug-2008  pooka Add support for using real kmem/vmem. Don't enable it by default,
though, since it a) is a lot of unnecessary indirection in rump
b) requires callouts which are so far unimplemented.
 1.45 01-Aug-2008  pooka support real sysctls
 1.44 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.43 21-Jul-2008  pooka Repeat after me: do not pollute sys with #ifdef _RUMPKERNEL
 1.42 18-Jul-2008  pooka emulate vlog()
 1.41 25-Jun-2008  pooka branches: 1.41.2;
Don't compile kern_lock for rump any more, it's no longer required.
Allows us to get rid of the incorrect _RUMPKERNEL ifdefs outside sys/rump.
 1.40 24-Jun-2008  pooka Make kpause() use nanosleep() instead of usleep(). Fixes >=1s sleeps
to actually sleep a bit too.

from Arnaud Ysmal
 1.39 29-May-2008  pooka branches: 1.39.2;
Also fake the namecache g/c thread in kthread_create() so that file
systems can again be run without threads (and hence gdb can be used
on them).
 1.38 24-Apr-2008  ad branches: 1.38.2; 1.38.4;
Catch up with process locking changes.
 1.37 06-Apr-2008  matt branches: 1.37.2;
Add a device_xname() stub.
 1.36 25-Mar-2008  yamt - for some ports, especially for ones without pmap_growkernel,
buf_memcalc is used by bootstrap as well. fix NULL dereference for them.
- limit kva usage for each cache to 20% of vm_map. XXX a bit arbitrary.
- add a comment.
 1.35 24-Mar-2008  martin Adapt to sel* changes
 1.34 23-Mar-2008  yamt when calculating some cache sizes, consider the amount of available kva.
PR/33185.
 1.33 21-Mar-2008  ad Catch up with descriptor handling changes. See kern_descrip.c revision
1.173 for details.
 1.32 19-Mar-2008  bjs Add lwp_unsleep from kern/kern_lwp.c so that this builds. ok ad@
 1.31 12-Mar-2008  pooka Support multiple file systems within one process with ukfs by using
a "chroot" for each file system.
 1.30 11-Mar-2008  pooka Backup some fixes for recent breakage from local tree. Also some
other improvements such as exporting the real kernel namei and
using that in ukfs instead of the homegrown heap'o hacks namei.
"etcetc".
 1.29 15-Feb-2008  ad branches: 1.29.2; 1.29.6;
Implement yield().
 1.28 15-Feb-2008  ad Add dummy hardclock_ticks.
 1.27 27-Jan-2008  pooka Use vfs_subr.c from sys/kern. This brings differences in the vnode
life cycle between rump and a real kernel to a minimum.
 1.26 24-Jan-2008  pooka Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().
 1.25 24-Jan-2008  pooka Don't use PAGE_SIZE when faking physmem, as it's not always available
at compile-time. We could init it runtime, but it's just a random
number anyway.
 1.24 24-Jan-2008  pooka Default physmem was too tight, increase to 256megs from 0 bytes.
 1.23 22-Jan-2008  pooka Until debugging threaded programs in NetBSD is fixed, supply the
cpp option RUMP_WITHOUT_THREADS as a workaround. If defined, it
makes rump itself operate single-threaded and prevents kthread_create()
from working.
 1.22 20-Jan-2008  joerg Now that __HAVE_TIMECOUNTER and __HAVE_GENERIC_TODR are invariants,
remove the conditionals and the code associated with the undef case.
 1.21 04-Jan-2008  pooka Print "panic: " before panicstr when panicking.
 1.20 02-Jan-2008  pooka Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.19 11-Nov-2007  pooka branches: 1.19.6;
fix build (hi rmind!)
 1.18 04-Nov-2007  pooka branches: 1.18.2;
* sprinkle some locking into the vm code
* avoid extra insert+search+remove step in file systems using
ubc_uiomove() instead of standard uiomove()
 1.17 31-Oct-2007  pooka Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.16 24-Oct-2007  pooka branches: 1.16.2;
"flags * (M_CANFAIL | M_NOWAIT)" is probably not correct. Use & instead.
And while committing, add other random cruft I've needed recently.
 1.15 19-Oct-2007  ad machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.14 24-Sep-2007  pooka branches: 1.14.2;
Don't whine about wakeup() not being implemented every time it's
called. Nobody cares unless ltsleep() is called (and it panics).
 1.13 11-Sep-2007  briggs branches: 1.13.2;
If !_HAVE_TIMECOUNTER, initialize 'time' instead of 'time_second.'
 1.12 10-Sep-2007  pooka Provide errno from rumpuser_{gettimeofday,close}() to be consistent.
 1.11 26-Aug-2007  pooka branches: 1.11.2; 1.11.4;
few panicky functions
 1.10 20-Aug-2007  pooka branches: 1.10.2;
Hide NetBSD kernel headers completely from ukfs. This includes creating
accessors for:
* struct mount & VFS ops
* struct uio
* struct vnode
* struct vattr

and some namespace games for:
* namei flags
* VOPs
* enum vtype

Also, split rump services into two categories: library private and public
(rump_private.h and rump.h, respectively).

As a result, it is now possible to compile and use the NetBSD kernel
file systems on Linux (and probably other systems too with very
little work), although the makefiles need a bit of work to make it
a pleasureable experience.
 1.9 15-Aug-2007  pooka Wrap malloc() so that we catch the kernel arguments (namely M_ZERO)
properly. It's fairly amusing that this wasn't noticed until now.
 1.8 14-Aug-2007  pooka branches: 1.8.2;
Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.7 13-Aug-2007  pooka Use supermarket variety vfs_vnops.c instead of homecooked routines
(that's actually a good thing here).
 1.6 13-Aug-2007  pooka compile in libkern __assert.c, argument order differs from libc model
 1.5 09-Aug-2007  pooka Add some stubs for lfs.
 1.4 08-Aug-2007  pooka Provide rumpmachine bswap.h, which makes bswapxx() call rumpuser
directly instead of relying on a symbol in rumpkern. I would like
to make it call the libc symbol directly, but I don't currently know
how to make it do that MI.

Makes hfs work (on i386), as it avoids endless recursion in bswap64().
Thanks to dillo for the image!
 1.3 08-Aug-2007  pooka * compile param.c
* move opts to a separate directory
 1.2 08-Aug-2007  pooka add microtime
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file emul.c was added on branch matt-mips64 on 2007-08-05 22:28:08 +0000
 1.8.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.8.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.8.2.1 14-Aug-2007  skrll file emul.c was added on branch nick-csl-alignment on 2007-08-15 13:50:35 +0000
 1.10.2.4 23-Oct-2007  ad Sync with head.
 1.10.2.3 09-Oct-2007  ad Sync with head.
 1.10.2.2 20-Aug-2007  ad Sync with HEAD.
 1.10.2.1 20-Aug-2007  ad file emul.c was added on branch vmlocking on 2007-08-20 22:07:26 +0000
 1.11.4.9 24-Mar-2008  yamt sync with head.
 1.11.4.8 17-Mar-2008  yamt sync with head.
 1.11.4.7 27-Feb-2008  yamt sync with head.
 1.11.4.6 04-Feb-2008  yamt sync with head.
 1.11.4.5 21-Jan-2008  yamt sync with head
 1.11.4.4 15-Nov-2007  yamt sync with head.
 1.11.4.3 27-Oct-2007  yamt sync with head.
 1.11.4.2 03-Sep-2007  yamt sync with head.
 1.11.4.1 26-Aug-2007  yamt file emul.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:26 +0000
 1.11.2.3 23-Mar-2008  matt sync with HEAD
 1.11.2.2 09-Jan-2008  matt sync with HEAD
 1.11.2.1 06-Nov-2007  matt sync with HEAD
 1.13.2.1 06-Oct-2007  yamt sync with head.
 1.14.2.2 13-Nov-2007  bouyer Sync with HEAD
 1.14.2.1 25-Oct-2007  bouyer Sync with HEAD.
 1.16.2.4 14-Nov-2007  joerg Sync with HEAD.
 1.16.2.3 04-Nov-2007  jmcneill Sync with HEAD.
 1.16.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.16.2.1 24-Oct-2007  joerg file emul.c was added on branch jmcneill-pm on 2007-10-31 23:14:16 +0000
 1.18.2.2 18-Feb-2008  mjf Sync with HEAD.
 1.18.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.19.6.3 23-Jan-2008  bouyer Sync with HEAD.
 1.19.6.2 08-Jan-2008  bouyer Sync with HEAD
 1.19.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.29.6.6 17-Jan-2009  mjf Sync with HEAD.
 1.29.6.5 05-Oct-2008  mjf Sync with HEAD.
 1.29.6.4 28-Sep-2008  mjf Sync with HEAD.
 1.29.6.3 29-Jun-2008  mjf Sync with HEAD.
 1.29.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.29.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.29.2.1 24-Mar-2008  keiichi sync with head.
 1.37.2.2 04-Jun-2008  yamt sync with head
 1.37.2.1 18-May-2008  yamt sync with head.
 1.38.4.3 10-Oct-2008  skrll Sync with HEAD.
 1.38.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.38.4.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.38.2.8 09-Oct-2010  yamt sync with head
 1.38.2.7 11-Aug-2010  yamt sync with head.
 1.38.2.6 11-Mar-2010  yamt sync with head
 1.38.2.5 16-Sep-2009  yamt sync with head
 1.38.2.4 19-Aug-2009  yamt sync with head.
 1.38.2.3 20-Jun-2009  yamt sync with head
 1.38.2.2 16-May-2009  yamt sync with head
 1.38.2.1 04-May-2009  yamt sync with head.
 1.39.2.3 31-Jul-2008  simonb Sync with head.
 1.39.2.2 21-Jul-2008  simonb Sync with head.
 1.39.2.1 27-Jun-2008  simonb Sync with head.
 1.41.2.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.41.2.1 19-Oct-2008  haad Sync with HEAD.
 1.53.8.1 15-Feb-2014  matt Add vpanic
 1.53.4.1 15-Jul-2011  riz Pull up following revision(s) (requested by manu in ticket #1604):
sys/fs/puffs/puffs_msgif.c: revision 1.84
Apply patch from PR kern/44093 by yamt:
Interrupt server wait only on certain signals (same set at nfs -i)
instead of all signals. According to the PR this helps with
"git clone" run on a puffs file system.
 1.53.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.53.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.53.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.63.2.5 10-Jan-2009  christos merge diffs
 1.63.2.4 04-Jan-2009  christos merge diffs.
 1.63.2.3 30-Dec-2008  christos sync with head.
 1.63.2.2 28-Dec-2008  christos missing const
 1.63.2.1 21-Dec-2008  christos file emul.c was added on branch christos-time_t on 2008-12-28 22:22:12 +0000
 1.77.2.2 23-Jul-2009  jym Sync with HEAD.
 1.77.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.121.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.121.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.121.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.123.2.4 21-Apr-2011  rmind sync with head
 1.123.2.3 05-Mar-2011  rmind sync with head
 1.123.2.2 03-Jul-2010  rmind sync with head
 1.123.2.1 30-May-2010  rmind sync with head
 1.148.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.148.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.150.14.5 03-Dec-2017  jdolecek update from HEAD
 1.150.14.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.150.14.3 23-Jun-2013  tls resync from head
 1.150.14.2 25-Feb-2013  tls resync with head
 1.150.14.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.150.10.1 08-Feb-2013  riz Pull up following revision(s) (requested by rmind in ticket #794):
sys/rump/librump/rumpkern/emul.c: revision 1.152
Provide xc_send_ipi() routine in RUMP, which is required for high-priority
xcall(9) mechanism. It is emulated using low-priority xcall(9).
 1.150.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.150.4.2 23-Jan-2013  yamt sync with head
 1.150.4.1 30-Oct-2012  yamt sync with head
 1.158.4.1 18-May-2014  rmind sync with head
 1.164.2.1 10-Aug-2014  tls Rebase.
 1.168.2.6 28-Aug-2017  skrll Sync with HEAD
 1.168.2.5 05-Feb-2017  skrll Sync with HEAD
 1.168.2.4 19-Mar-2016  skrll Sync with HEAD
 1.168.2.3 22-Sep-2015  skrll Sync with HEAD
 1.168.2.2 06-Jun-2015  skrll Sync with HEAD
 1.168.2.1 06-Apr-2015  skrll Sync with HEAD
 1.179.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.179.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.180.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.181.6.3 09-Oct-2018  martin Pull up following revision(s) (requested by hannken in ticket #1052):

sys/kern/vfs_trans.c: revision 1.51
distrib/sets/lists/comp/mi: revision 1.2233
share/man/man9/fstrans.9: revision 1.27
share/man/man9/Makefile: revision 1.431
sys/sys/fstrans.h: revision 1.12
sys/rump/librump/rumpkern/emul.c: revision 1.187
sys/dev/vnd.c: revision 1.266
sys/miscfs/genfs/genfs_vfsops.c: revision 1.8

Bring back three state file system suspension:

NORMAL -> SUSPENDING -> SUSPENDED

and add operation fstrans_start_lazy() that only blocks while SUSPENDED.

Change vndthread() support operation handle_with_rdwr() to bracket
its file system operations by fstrans_start_lazy() and fstrans_done().

PR kern/53624 (dom0 freeze on domU exit)
 1.181.6.2 30-Nov-2017  martin Pull up following revision(s) (requested by ozaki-r in ticket #405):
sys/sys/pserialize.h: revision 1.2
sys/kern/kern_lock.c: revision 1.160
sys/kern/subr_pserialize.c: revision 1.9
sys/rump/librump/rumpkern/emul.c: revision 1.184
sys/rump/librump/rumpkern/emul.c: revision 1.185
sys/rump/librump/rumpkern/rump.c: revision 1.330
Implement debugging feature for pserialize(9)
The debugging feature detects violations of pserialize constraints.
It causes a panic:
- if a context switch happens in a read section, or
- if a sleepable function is called in a read section.
The feature is enabled only if LOCKDEBUG is on.
Discussed on tech-kern@
Add missing inclusion of pserialize.h (fix build)
 1.181.6.1 04-Jun-2017  bouyer pullup the following revisions, requested by hannken in ticket #2:
src/share/man/man9/fstrans.9 1.25
src/sys/kern/vfs_mount.c 1.66
src/sys/kern/vfs_subr.c 1.468
src/sys/kern/vfs_trans.c 1.46
src/sys/kern/vfs_vnode.c 1.94, 1.95, 1.96
src/sys/kern/vnode_if.c 1.105, 1.106
src/sys/kern/vnode_if.sh 1.65, 1.66
src/sys/kern/vnode_if.src 1.76
src/sys/miscfs/genfs/genfs_io.c 1.69
src/sys/miscfs/genfs/genfs_vnops.c 1.196, 1.197
src/sys/miscfs/genfs/layer_extern.h 1.40
src/sys/miscfs/genfs/layer_vfsops.c 1.51
src/sys/miscfs/genfs/layer_vnops.c 1.67
src/sys/miscfs/nullfs/null_vnops.c 1.42
src/sys/miscfs/overlay/overlay_vnops.c 1.24
src/sys/miscfs/umapfs/umap_vnops.c 1.60
src/sys/rump/include/rump/rumpvnode_if.h 1.29, 1.30
src/sys/rump/librump/rumpkern/emul.c 1.182
src/sys/rump/librump/rumpvfs/rumpvnode_if.c 1.29, 1.30
src/sys/sys/fstrans.h 1.11
src/sys/sys/vnode.h 1.278
src/sys/sys/vnode_if.h 1.100, 1.101
src/sys/sys/vnode_impl.h 1.14, 1.15
src/sys/ufs/lfs/lfs_pages.c 1.12

Vnode state, lock and fstrans cleanup:
- Rename vnode state "VS_ACTIVE" to "VS_LOADED" and add synthetic
state "VS_ACTIVE" to assert a loaded vnode with usecount > 0.

- Redo FSTRANS in vnode_if.c and use it for VOP_LOCK and VOP_UNLOCK.

- Cleanup the genfs lock operations.

- Make "struct vnode_impl" member "vi_lock" a krwlock_t again.

- Remove the lock type argument from fstrans_start and
fstrans_start_nowait,
remove now unused FSTRANS state "FSTRANS_SUSPENDING".
 1.185.4.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.185.4.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.185.4.1 10-Jun-2019  christos Sync with HEAD
 1.185.2.3 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.185.2.2 20-Oct-2018  pgoyette Sync with head
 1.185.2.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.191.2.1 18-Oct-2023  martin Pull up following revision(s) (requested by manu in ticket #1751):

sys/dev/raidframe/rf_netbsdkintf.c: revision 1.383
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.385
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.402
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.403
sys/arch/i386/stand/lib/biosdisk.c: revision 1.59
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.377
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.378
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.379
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.392
sys/rump/librump/rumpkern/emul.c: revision 1.200
sys/arch/i386/stand/lib/biosdisk.c: revision 1.60
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.416
(all via patch)

Get &rsc->sc_dksc only when we know 'rsc' is not NULL. This was actually
harmless because we didn't use the pointer then.

Gcc -Os on landisk is not smart enough to follow the conditional
initialization and warns, unconditionaly initialize dksc at declaration
with a XXX gcc comment.

Improve wording in comments in raid_dumpblock().

in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.

Nix trailing whitespace.

if raidframe sets booted_device, log a debug message about it.
merge two debug lines in auto-root selection.
convert non-config-handled "DEBUG_ROOT" to aprint_debug().
now it's possible to get boot-time info about raidframe root
device selection with simple "boot -x".

Align the behavior of different boot methods in RAIDframe

We enforce the documented and paritally implemented behavior when
looking for the kernel in RAID 1 sets without a partition name given.

We search for:
- A GPT partition with bootme attribute set
- A FFS or LFS patititon
- The first partition

Fix root search in RAID 1 sets

We use the wedge information given by bootstrap, where the kernel was
found. This requires src/sys/arch/i386/stand/i386/lib/biosdisk.c 1.59
to work in all cases.

Fix build with -DNO_GPT
 1.196.20.1 18-Oct-2023  martin Pull up following revision(s) (requested by manu in ticket #418):

sys/arch/i386/stand/lib/biosdisk.c: revision 1.59
sys/rump/librump/rumpkern/emul.c: revision 1.200
sys/arch/i386/stand/lib/biosdisk.c: revision 1.60
sys/dev/raidframe/rf_netbsdkintf.c: revision 1.416

Align the behavior of different boot methods in RAIDframe

We enforce the documented and paritally implemented behavior when
looking for the kernel in RAID 1 sets without a partition name given.

We search for:
- A GPT partition with bootme attribute set
- A FFS or LFS patititon
- The first partition

Fix root search in RAID 1 sets

We use the wedge information given by bootstrap, where the kernel was
found. This requires src/sys/arch/i386/stand/i386/lib/biosdisk.c 1.59
to work in all cases.

Fix build with -DNO_GPT
 1.201.6.1 02-Aug-2025  perseant Sync with HEAD
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 25-Apr-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Move the etfs linkage from rumpvfs to rumpkern, and replace the
weak alias show with an honest pointer indirection.

No client-visible change. (apart from this version working e.g.
on musl w/ dlopen)
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 25-Apr-2014  tls file etfs_wrap.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.1.6.2 10-Aug-2014  tls Rebase.
 1.1.6.1 25-Apr-2014  tls file etfs_wrap.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 25-Apr-2014  yamt file etfs_wrap.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.2.2 18-May-2014  rmind sync with head
 1.1.2.1 25-Apr-2014  rmind file etfs_wrap.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.7 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.6 21-Jul-2008  pooka branches: 1.6.2;
Have a COW with fscow_run(). Fixes problem of allocating files
on ffs with indirect blocks.

found by simonb
 1.5 02-Jan-2008  pooka branches: 1.5.6; 1.5.10; 1.5.12; 1.5.14; 1.5.16;
Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.4 02-Jan-2008  ad Merge vmlocking2 to head.
 1.3 02-Dec-2007  hannken branches: 1.3.2; 1.3.6;
Make it compile again.
 1.2 07-Oct-2007  hannken branches: 1.2.4; 1.2.6;
Update the file system copy-on-write handler.

- Instead of hooking the handler on the specdev of a mounted file system
hook directly on the `struct mount'.

- Rename from `vn_cow_*' to `fscow_*' and move to `kern/vfs_trans.c'. Use
`mount_*specific' instead of clobbering `struct mount' or `struct specinfo'.

- Replace the hand-made reader/writer lock with a krwlock.

- Keep `vn_cow_*' functions and mark as obsolete.

- Welcome to NetBSD 4.99.32 - `struct specinfo' changed size.

Reviewed by: Jason Thorpe <thorpej@netbsd.org>
 1.1 05-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.10; 1.1.12;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.12.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.12.1 05-Aug-2007  pooka file fstrans_stub.c was added on branch matt-mips64 on 2007-08-05 22:28:08 +0000
 1.1.10.1 14-Oct-2007  yamt sync with head.
 1.1.8.5 21-Jan-2008  yamt sync with head
 1.1.8.4 07-Dec-2007  yamt sync with head
 1.1.8.3 27-Oct-2007  yamt sync with head.
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 05-Aug-2007  yamt file fstrans_stub.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:27 +0000
 1.1.6.2 09-Jan-2008  matt sync with HEAD
 1.1.6.1 06-Nov-2007  matt sync with HEAD
 1.1.4.3 09-Oct-2007  ad Sync with head.
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 05-Aug-2007  ad file fstrans_stub.c was added on branch vmlocking on 2007-08-20 22:07:27 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 05-Aug-2007  skrll file fstrans_stub.c was added on branch nick-csl-alignment on 2007-08-15 13:50:36 +0000
 1.2.6.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.6.1 08-Dec-2007  mjf Sync with HEAD.
 1.2.4.3 03-Dec-2007  joerg Sync with HEAD.
 1.2.4.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.2.4.1 07-Oct-2007  joerg file fstrans_stub.c was added on branch jmcneill-pm on 2007-11-02 12:43:51 +0000
 1.3.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.3.2.1 28-Dec-2007  ad Make rump build.
 1.5.16.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.5.16.1 19-Oct-2008  haad Sync with HEAD.
 1.5.14.1 21-Jul-2008  simonb Sync with head.
 1.5.12.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.5.10.1 04-May-2009  yamt sync with head.
 1.5.6.2 17-Jan-2009  mjf Sync with HEAD.
 1.5.6.1 28-Sep-2008  mjf Sync with HEAD.
 1.6.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.20 17-Oct-2007  pooka Compile most genfs routines directly out of the kernel sources.
Move special I/O routines to genfs_io.c to mirror kernel naming.
 1.19 10-Oct-2007  ad Merge from vmlocking:

- Split vnode::v_flag into three fields, depending on field locking.
- simple_lock -> kmutex in a few places.
- Fix some simple locking problems.
 1.18 01-Sep-2007  pooka branches: 1.18.2; 1.18.4;
* fill struct buf a little better
* hop, skip & jump to make uvm_pageratop work
 1.17 20-Aug-2007  pooka branches: 1.17.2;
g/c comment invalidated by previous
 1.16 20-Aug-2007  pooka * in getpages, make sure we always align our buffer size to the page size
* in putpages, make sure we don't try attempt to push data in a page
after eof. also, skip blocks which bmap can't locate (see comment
in code).

the effect: file systems with fs_bsize < PAGE_SIZE now work r/w
 1.15 20-Aug-2007  pooka branches: 1.15.2;
Hide NetBSD kernel headers completely from ukfs. This includes creating
accessors for:
* struct mount & VFS ops
* struct uio
* struct vnode
* struct vattr

and some namespace games for:
* namei flags
* VOPs
* enum vtype

Also, split rump services into two categories: library private and public
(rump_private.h and rump.h, respectively).

As a result, it is now possible to compile and use the NetBSD kernel
file systems on Linux (and probably other systems too with very
little work), although the makefiles need a bit of work to make it
a pleasureable experience.
 1.14 14-Aug-2007  pooka branches: 1.14.2;
Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.13 13-Aug-2007  pooka Use supermarket variety vfs_vnops.c instead of homecooked routines
(that's actually a good thing here).
 1.12 11-Aug-2007  pooka * move rump_vopwrite_fault() into history - we now support the file
system faulting in pages if it does e.g. fragment reallocation
* get rid of rumpvm_findpage() and always use uvm_pagelookup()
* determine a vnode's cleanness by flagging it as being on the work
list if we "take" a write fault and removing it from the worklist
once pages are flushed. There is no work list here, but at least
there is symmetry with the kernel.
 1.11 09-Aug-2007  pooka Fix it a bit & wait for the dust to settle. Also, enable UBC by default.

ffs in userspace on top of puffs/p2k/rump is now stable enough to
host a make -j4 kernel build (well, at least my kernel build ...
but, yes, I am currently running that kernel on my desktop)
 1.10 09-Aug-2007  pooka * fix symlink
* actually call a couple of VOPs
 1.9 09-Aug-2007  pooka deal with holes in getpages()
 1.8 09-Aug-2007  pooka fool some KASSERTs
 1.7 09-Aug-2007  pooka Add some stubs for lfs.
 1.6 07-Aug-2007  pooka * adjust device block number based on if we're putting pages to a
fs block boudary or not
* round writes to DEV_BSIZE, just to be kosher
 1.5 07-Aug-2007  pooka remove the allocstorage param from makepage - not needed
 1.4 07-Aug-2007  pooka track dirty vm objects
 1.3 07-Aug-2007  pooka offset orgies, part n+1. this is still not right, but at least it's better
 1.2 06-Aug-2007  pooka branches: 1.2.2;
Instead of going for a PAGE_SIZE nuke, do getpages() in a more
sniper style. Makes efs (& other file systems with bsize < PAGE_SIZE)
work better.
 1.1 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.2.2.2 06-Aug-2007  pooka Instead of going for a PAGE_SIZE nuke, do getpages() in a more
sniper style. Makes efs (& other file systems with bsize < PAGE_SIZE)
work better.
 1.2.2.1 06-Aug-2007  pooka file genfs.c was added on branch matt-mips64 on 2007-08-06 20:46:29 +0000
 1.14.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.14.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.14.2.1 14-Aug-2007  skrll file genfs.c was added on branch nick-csl-alignment on 2007-08-15 13:50:37 +0000
 1.15.2.3 09-Oct-2007  ad Sync with head.
 1.15.2.2 20-Aug-2007  ad Sync with HEAD.
 1.15.2.1 20-Aug-2007  ad file genfs.c was added on branch vmlocking on 2007-08-20 22:07:27 +0000
 1.17.2.1 06-Nov-2007  matt sync with HEAD
 1.18.4.2 18-Oct-2007  yamt sync with head.
 1.18.4.1 14-Oct-2007  yamt sync with head.
 1.18.2.3 27-Oct-2007  yamt sync with head.
 1.18.2.2 03-Sep-2007  yamt sync with head.
 1.18.2.1 01-Sep-2007  yamt file genfs.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:29 +0000
 1.17 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.16 16-Nov-2008  pooka explicitly include <sys/buf.h> since we explicitly use it
 1.15 14-Nov-2008  pooka Clearly state that VOP_BMAP panic in putpages is because I'm a lazy bum.
(although I can't really think of any scenario where VOP_BMAP could
legally fail)
 1.14 30-Sep-2008  pooka branches: 1.14.2; 1.14.4;
When paging in data, do not try to read past "disk" EOF. This
fixes reads for file systems which are not bound by such mundane
limitations as block size (example: nfs).
 1.13 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.12 20-Jul-2008  pooka assert -> KASSERT
 1.11 15-Jul-2008  pooka Honor PGO_FREE in putpages.

Fixes cp-then-rm ukfs panic reported by Arnaud Ysmal.
 1.10 04-Jun-2008  ad branches: 1.10.2; 1.10.4;
Make it build.
 1.9 14-May-2008  reinoud Make rump compile UDF correctly. Note that it won't work though since rump
needs to be compiled with thread support.
 1.8 02-Jan-2008  pooka branches: 1.8.6; 1.8.8; 1.8.10; 1.8.12;
fix vmlocking2 fallout:

* I heard a wild rumor that vp_interlock is a mutex these days (hi ad!)
* init new locks (hi ad)
* observe that with simple_locks only deadlocks would be caught while
releasing unlocked locks would go unnoticed. make locking work (hi pooka)
 1.7 02-Jan-2008  ad Merge vmlocking2 to head.
 1.6 07-Nov-2007  pooka branches: 1.6.2; 1.6.6;
Execute I/O in a separate thread for async I/O where previously
everything was written/read in caller context.

Also, make the "kernel" lock recursive. It works better that way ...
 1.5 06-Nov-2007  pooka branches: 1.5.2;
yank out extra debug printf
 1.4 06-Nov-2007  pooka Sprinkle some more locking, especially to the vm. Due to some
additional fixes, it's now possible to run file systems with
spinlocks actually enabled. The genfs_putpages() locking is still
working only due to greater powers, but I'll eventually get around to
fixing it.
 1.3 04-Nov-2007  pooka branches: 1.3.2;
Allocate buf using getiobuf() instead of abusing the stack.
 1.2 31-Oct-2007  pooka branches: 1.2.2;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.1 17-Oct-2007  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8;
Compile most genfs routines directly out of the kernel sources.
Move special I/O routines to genfs_io.c to mirror kernel naming.
 1.1.8.4 21-Jan-2008  yamt sync with head
 1.1.8.3 15-Nov-2007  yamt sync with head.
 1.1.8.2 27-Oct-2007  yamt sync with head.
 1.1.8.1 17-Oct-2007  yamt file genfs_io.c was added on branch yamt-lazymbuf on 2007-10-27 11:36:22 +0000
 1.1.6.2 23-Oct-2007  ad Sync with head.
 1.1.6.1 17-Oct-2007  ad file genfs_io.c was added on branch vmlocking on 2007-10-23 20:36:44 +0000
 1.1.4.2 18-Oct-2007  yamt sync with head.
 1.1.4.1 17-Oct-2007  yamt file genfs_io.c was added on branch yamt-x86pmap on 2007-10-18 08:33:14 +0000
 1.1.2.1 13-Nov-2007  bouyer Sync with HEAD
 1.2.2.6 11-Nov-2007  joerg Sync with HEAD.
 1.2.2.5 06-Nov-2007  joerg Sync with HEAD.
 1.2.2.4 04-Nov-2007  jmcneill Sync with HEAD.
 1.2.2.3 02-Nov-2007  joerg Remove the rest of the unintentional diff in sys/rump.
 1.2.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.2.2.1 31-Oct-2007  joerg file genfs_io.c was added on branch jmcneill-pm on 2007-10-31 23:14:16 +0000
 1.3.2.2 18-Feb-2008  mjf Sync with HEAD.
 1.3.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.5.2.4 09-Jan-2008  matt sync with HEAD
 1.5.2.3 08-Nov-2007  matt sync with -HEAD
 1.5.2.2 06-Nov-2007  matt sync with HEAD
 1.5.2.1 06-Nov-2007  matt file genfs_io.c was added on branch matt-armv6 on 2007-11-06 23:34:35 +0000
 1.6.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.6.2.1 28-Dec-2007  ad Make rump build.
 1.8.12.3 10-Oct-2008  skrll Sync with HEAD.
 1.8.12.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.8.12.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.8.10.2 04-May-2009  yamt sync with head.
 1.8.10.1 16-May-2008  yamt sync with head.
 1.8.8.2 17-Jun-2008  yamt sync with head.
 1.8.8.1 18-May-2008  yamt sync with head.
 1.8.6.5 17-Jan-2009  mjf Sync with HEAD.
 1.8.6.4 05-Oct-2008  mjf Sync with HEAD.
 1.8.6.3 28-Sep-2008  mjf Sync with HEAD.
 1.8.6.2 05-Jun-2008  mjf Sync with HEAD.

Also fix build.
 1.8.6.1 02-Jun-2008  mjf Sync with HEAD.
 1.10.4.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.10.4.1 19-Oct-2008  haad Sync with HEAD.
 1.10.2.3 31-Jul-2008  simonb Sync with head.
 1.10.2.2 21-Jul-2008  simonb Sync with head.
 1.10.2.1 18-Jul-2008  simonb Sync with head.
 1.14.4.1 16-Jan-2009  snj Pull up the following revision(s) (requested by pooka in ticket #253):
sys/rump/librump/rumpvfs/genfs_io.c: revision 1.2 via patch
Make sure we write a positive length of data.
 1.14.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.17 30-Apr-2020  riastradh No need for a lock around rnd_add_data any more.
 1.16 30-Apr-2020  riastradh rnd_attach_source calls the callback itself now.

No need for every driver to explicitly call it to prime the pool.

Eliminate now-unused <sys/rndpool.h>.
 1.15 21-May-2016  riastradh Actually get as many bytes as requested from rumpuser_random.

rumpuser_random is limited to 32 bytes at a time -- which would be
reasonable, except that there are too many buffers in the way between
entropy sources and users of the entropy pool.

Partial fix for PR kern/51135.
 1.14 17-Feb-2016  riastradh Need <sys/mutex.h> for mutex(9).
 1.13 17-Feb-2016  riastradh Caller must have exclusive access to rndsource for rnd_add_data(_sync).
 1.12 17-Feb-2016  riastradh Make hyperentropy rndsource work synchronously, again.

This time for real! *crosses fingers*
 1.11 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.10 21-Apr-2015  riastradh Revert previous -- a little too quick on the commit trigger.

Ran some tests but not enough. There is a deadlock against myself:

rndsink_request acquires rndsinks_lock
-> rnd_getmore
-> hyperentropy feedrandom (or any other rndsource callback)
-> rnd_add_data
-> rndsinks_distribute acquires rndsinks_lock

Need to break this cycle before rndsource callbacks can invoke
rnd_add_data.
 1.9 21-Apr-2015  riastradh Restore simplicity of rump hyperentropy `hardware RNG'.
 1.8 13-Apr-2015  riastradh Convert remaining MI <sys/rnd.h> stragglers. Many MD ones left.
 1.7 15-Aug-2014  riastradh branches: 1.7.2; 1.7.4;
<sys/param.h> comes first, per /usr/share/misc/style.
 1.6 15-Aug-2014  justin Fix header ordering
 1.5 15-Aug-2014  justin add sys/atomic.h and order headers correctly
 1.4 15-Aug-2014  riastradh Call rnd_add_data asynchronously for the rump hyperentropy callback.

Avoids recursion rnd_getmore -> rnd_add_data -> rnd_getmore, which is
silly but I don't have time to fix it properly right now.
 1.3 10-Aug-2014  tls branches: 1.3.2;
Merge tls-earlyentropy branch into HEAD.
 1.2 17-Jan-2014  pooka branches: 1.2.2; 1.2.4; 1.2.6;
don't use temp buffer from the stack, fix the constants
 1.1 17-Jan-2014  pooka Use subr_cprng.c instead of stub implementation. Rijndael migrates from
rumpkern_crypto to rumpkern due to it being mandatory for cprng.
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 17-Jan-2014  yamt file hyperentropy.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 17-Jan-2014  rmind file hyperentropy.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.2.2.1 07-Apr-2014  tls Be a little more clear and consistent about harvesting entropy from devices:

1) deprecate RND_FLAG_NO_ESTIMATE

2) define RND_FLAG_COLLECT_TIME, RND_FLAG_COLLECT_VALUE

3) define RND_FLAG_ESTIMATE_TIME, RND_FLAG_ESTIMATE_VALUE

4) define RND_FLAG_DEFAULT: RND_FLAG_COLLECT_TIME|
RND_FLAG_COLLECT_VALUE|RND_FLAG_ESTIMATE_TIME

5) Make entropy harvesting from environmental sensors a little more generic
and remove it from individual sensor drivers.

6) Remove individual open-coded delta-estimators for values from a few
places in the tree (uvm, environmental drivers).

7) 0 -> RND_FLAG_DEFAULT, actually gather entropy from various drivers
that had stubbed out code, other minor cleanups.
 1.3.2.1 18-Aug-2014  martin Pull up following revision(s) (requested by riastradh in ticket #35):
sys/rump/librump/rumpkern/hyperentropy.c: revision 1.6
sys/rump/librump/rumpkern/hyperentropy.c: revision 1.7
sys/rump/librump/rumpkern/hyperentropy.c: revision 1.4
sys/rump/librump/rumpkern/hyperentropy.c: revision 1.5
Call rnd_add_data asynchronously for the rump hyperentropy callback.
Avoids recursion rnd_getmore -> rnd_add_data -> rnd_getmore, which is
silly but I don't have time to fix it properly right now.
add sys/atomic.h and order headers correctly
Fix header ordering
<sys/param.h> comes first, per /usr/share/misc/style.
 1.7.4.3 29-May-2016  skrll Sync with HEAD
 1.7.4.2 19-Mar-2016  skrll Sync with HEAD
 1.7.4.1 06-Jun-2015  skrll Sync with HEAD
 1.7.2.3 03-Dec-2017  jdolecek update from HEAD
 1.7.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.2.1 15-Aug-2014  tls file hyperentropy.c was added on branch tls-maxphys on 2014-08-20 00:04:40 +0000
 1.3 23-Apr-2015  pooka g/c the never-used and never-useful hyperstubs.c
 1.2 30-Apr-2013  pooka branches: 1.2.4; 1.2.12; 1.2.16;
Stub out anonmmap too.

This is a clever trick to enable me to avoid having to document
that interface. I seriously doubt it's relevant beyond a POSIX
env where it's required by the proplib client-side implementation
which expects it can do munmap() on a return value from a proplib
call.
 1.1 30-Apr-2013  pooka weak stubs for optional hypercalls
 1.2.16.1 06-Jun-2015  skrll Sync with HEAD
 1.2.12.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.12.1 30-Apr-2013  yamt file hyperstubs.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.4.3 03-Dec-2017  jdolecek update from HEAD
 1.2.4.2 23-Jun-2013  tls resync from head
 1.2.4.1 30-Apr-2013  tls file hyperstubs.c was added on branch tls-maxphys on 2013-06-23 06:20:28 +0000
 1.2 16-Dec-2009  pooka update to newnewvers.sh usage
 1.1 16-Dec-2009  pooka Generate vers.c and include it in the kernel component.
 1.57 06-Apr-2025  riastradh rump: Set up the softint CPU bouncer only once, not once per CPU.

This is used for softint_schedule_cpu to schedule softints on other
CPUs. There is one global lock, and one global condition variable,
and really there only needs to be one thread to handle the requests.
Without this change, we reinitialize the lock and condition variable,
leaking them (and possibly leave some threads confused if they are
currently taking the lock or waiting on the condition variable as
they get reinitialized).

Leak found by lsan while investigating:

PR misc/59252: tests/rump/rumpkern/t_sp:sigsafe: out of memory
 1.56 01-Nov-2020  christos branches: 1.56.24;
PR/55664: Ruslan Nikolaev: Fix:

1. A race condition (bug) in sys/rump/librump/rumpkern/intr.c since
rumpuser_cv_signal() is called without holding a mutex
2. sleepq is implemented using a single (global) conditional
variable; that should be done per each sleepq separately
 1.55 16-Dec-2019  ad branches: 1.55.8;
- Extend the per-CPU counters matt@ did to include all of the hot counters
in UVM, excluding uvmexp.free, which needs special treatment and will be
done with a separate commit. Cuts system time for a build by 20-25% on
a 48 CPU machine w/DIAGNOSTIC.

- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
 1.54 26-Jan-2016  pooka branches: 1.54.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.53 16-Aug-2015  pooka Don't use KASSERT() to test for external return values, use panic()

from Robert Millan <rmh@freebsd.org>
 1.52 22-Apr-2015  pooka Apparently not all ports define struct clockframe in cpu.h, so we cannot
provide our definition that way. Instead, generate the struct clockframe
passed to hardclock() in MD code.
 1.51 22-Apr-2015  pooka Include kern_clock.c in rump kernels.
 1.50 21-Apr-2015  pooka Use hardclock_ticks instead of a homegrown variable.

... not that I understand how various kernel algorithms can work
after enough uptime with hardclock_ticks being a signed int.
 1.49 16-Apr-2015  pooka "extern int hz" was written in a very aesthetically pleasing way in this
file, but let's just be happy with the sys/kernel.h style of writing it.
 1.48 14-Jan-2015  pooka Execute softints in the order in which they are scheduled (per level).
 1.47 14-Jan-2015  pooka Implement softint_schedule_cpu() for rump kernels.

While distributing processing all over the place is not relevant for
high-performance rump kernel I/O stacks (and downright counterproductive),
the mechanism is used e.g. to reach a quiescent state when detaching
an interface, and therefore a semantically correct implementation is
required.

Fixes at least an uncommon race in the ifconfig destroy case.
reported & patch tested by Justin Cormack.
 1.46 22-Jun-2014  pooka branches: 1.46.4;
Initialize cpu_softcpu before creating softint threads. Fixes things
with rump kernel hypervisors which wrap the thread creation hypercall.

pointed out by Justin Cormack
 1.45 09-Jun-2014  rmind Restore the assert in RUMP's softint_schedule_cpu() and just ensure
curcpu() in the caller.
 1.44 08-Jun-2014  rmind RUMP's softint_schedule_cpu: comment out an assert for now.
 1.43 05-Jun-2014  rmind librump: add kpreempt_disabled(9) and softint_schedule_cpu(9).
 1.42 11-Nov-2013  pooka branches: 1.42.2;
Avoid calling curcpu() when we know the result is constant.
 1.41 11-Nov-2013  pooka Defer softint thread creation to first softint_establish() for that level.
Speeds up rump kernel bootstrap and saves memory -- very rarely are all
softint levels in a rump kernel used.
 1.40 02-May-2013  pooka branches: 1.40.4;
Ok, maybe using int64 for nanoseconds in the (sec,nsec) tuple was
a bit too future-proof. I think long is enough there (let's just
hope nobody redefines "nano"). Also, make seconds signed just in
case someone wants their clock to be in 1901.
 1.39 30-Apr-2013  pooka Flip parameter order in the clock hypercalls to make them consistent
with everything else wrt in/out parameters.
 1.38 28-Apr-2013  pooka Improve the time-related hypercalls so that's it's possible to
sleep until an absolute time on the host's monotonic clock (should
something like that be supported).
 1.37 27-Apr-2013  pooka roll mutex init hypercalls into one (one of them already took a flag anyway)
 1.36 21-Mar-2011  pooka branches: 1.36.4; 1.36.14;
Update copyright statements.

no functional change.
 1.35 01-Dec-2010  pooka branches: 1.35.2;
Track lwp as the rumpuser mutex owner instead of pthread_t (this
is done in rumpuser for simplicity, since on the kernel side things
we assume we have only one pointer of space). As a side-effect,
we can no longer know if the current thread is holding on to a
mutex locked without curlwp context (basically all mutexes inited
outside of mutex_init()). The only thing that called rumpuser_mutex_held()
for a non-kmutex was the giant lock. So, instead implement recursive
locking for the giant lock in the rump kernel and get rid of the
now-unused recursive pthread mutex in the hypercall interface.
 1.34 07-Sep-2010  pooka Allocate softint vectors for the final number of CPUs, not the
number currently attached. Deals with a SNAFU in my commit earlier
today which would cause softints established early to lack a
softint context on non-bootstrap CPUs.
 1.33 07-Sep-2010  pooka update comments. no code change.
 1.32 15-Aug-2010  pooka Implement softints properly: they need to have a schedulable entity
per cpu.
 1.31 10-Aug-2010  pooka Don't create the percpu clock interrupt threads as softint threads
because they aren't softint threads. This fixes callouts in
situations where there is nothing else happening in the rump kernel
(i.e. no threads executed which would trigger the softints when
they unschedule).
 1.30 10-Aug-2010  pooka Use correct indices for clock threads and more descriptive ones
for the softint threads.
 1.29 18-May-2010  martin Add missing include
 1.28 18-May-2010  pooka Make it possible to use the scheduler lock as the rumpuser condvar
interlock. This is applicable in cases where the actual interlock
is the CPU the currently running thread is scheduled on. Borrowing
the scheduler lock as the mutex mandated by pthread_cond_wait()
does away with need to have an additional mutex. This both optimizes
runtime execution and simplifies code, as the extra lock typically
lead to quite some trickeries to avoid the dungeon collapsing due
to zaps from the wand of deadlock.
 1.27 12-May-2010  pooka fix inversion: advance clock on cpu0, not the complement of cpu0
 1.26 28-Apr-2010  pooka Fix snafu which caused the clock to travel lightspeed.
 1.25 27-Apr-2010  pooka Fix multiple virtual cpu support.

... or at least on x86. CPU_INFO_FOREACH() still isn't MI, and I
don't want to support 2^n different versions.
 1.24 14-Apr-2010  pooka Include kern_tc and use a timecounter driver instead of homerolled
kern_tc implementation.
 1.23 05-Dec-2009  pooka branches: 1.23.2; 1.23.4;
Cast Oh Kath Ra once every second.
 1.22 01-Dec-2009  pooka Almost there for virtual CPU MP support:
* support bound kernel threads
* bind softint threads to specific virtual cpus
+ remove now-unnecessary locks from softint code

Now, if we only had MI CPU_INFO_FOREACH() .... (hi rmind ;)
 1.21 11-Nov-2009  pooka Make rumpuser_cv_timedwait take two int64's instead timespec to
uncouple it from the timespec layout. Also, change return value
to zero for "timeout didn't expire" and non-zero for "timeout
expired". This decouples the interface from errno assignments.
 1.20 09-Nov-2009  pooka Hash out soft interrupts to be a little closer to real softints:
* split them into levels
* allow only one per level to be active at a time
* fire softints only when we are unscheduling from a CPU instead
of immediately in softint_schedule(). this will later morph
into return from interrupt, but that part isn't done yet.
 1.19 06-Nov-2009  pooka lie that we are never in a softintr (i.e. add stub)
 1.18 19-Sep-2009  pooka arrr, implement softint_disestablish(). this code be needin' an enema, matey.
 1.17 26-Apr-2009  pooka fix uninitialized
 1.16 26-Apr-2009  pooka Fix getnano/microuptime to report actual uptime.
 1.15 27-Feb-2009  pooka decouple rumpuser gettime from struct timeval
 1.14 07-Feb-2009  pooka branches: 1.14.2;
Make the clock interrupt tick based on absolute time instead of
relative time. This prevents drifting. Also, keep track of time
within userspace, so we do not have to make a syscall to get the
clock value. This is approximately 7 times cheaper, but on the
negative side is limited to the clock interrupt frequency.
 1.13 04-Feb-2009  pooka Create the clock interrupt and soft interrupt workers as MPSAFE
 1.12 13-Jan-2009  pooka misc cleanup, mainly header polish
 1.11 18-Dec-2008  pooka __KERNEL_RCSID
 1.10 18-Dec-2008  pooka Separate the timer thread and soft interrut workers. Use a dynamic
size pool of workers to make sure there are enough for processing
the scheduled soft interrupts.
 1.9 30-Oct-2008  christos fix compilation and lint warnings.
 1.8 10-Oct-2008  pooka branches: 1.8.2;
Provide time_uptime and push it forward every now and then if we happen
to have the timer thread. rump uptime - woohoo.
 1.7 10-Oct-2008  pooka fix brainfart: kthread_create() sets curlwp
 1.6 10-Oct-2008  pooka Support callouts and call callout_hardclock() from the timer
interrupt thread.

The sleepq implementation required for callouts is horrible, kludged
only for callouts, and generally unacceptable. It needs revisiting,
but I'm not sure yet should rump or kern_timeout be improved. It's
almost untested as of now, but committing this will give me some
maneuvering space while letting application compile.
 1.5 09-Oct-2008  pooka Rewrite interrupts to provide better softintr support, i.e. not
execute them simply in the context of the scheduling code, as this
does not work for all applications (e.g. networking soft interrupts).
Rather, schedule them and execute them from a separate context.

Also provide a timer which for now executes just hardclock_callout()
(well, at least after callouts are included in librump, which is
soon).
 1.4 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.3 28-Apr-2008  martin branches: 1.3.2; 1.3.4; 1.3.6;
Remove clause 3 and 4 from TNF licenses
 1.2 02-Jan-2008  ad branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.14; 1.2.16; 1.2.18;
Merge vmlocking2 to head.
 1.1 28-Dec-2007  ad branches: 1.1.2;
file intr.c was initially added on branch vmlocking2.
 1.1.2.1 28-Dec-2007  ad Make rump build.
 1.2.18.5 09-Oct-2010  yamt sync with head
 1.2.18.4 11-Aug-2010  yamt sync with head.
 1.2.18.3 11-Mar-2010  yamt sync with head
 1.2.18.2 04-May-2009  yamt sync with head.
 1.2.18.1 16-May-2008  yamt sync with head.
 1.2.16.1 18-May-2008  yamt sync with head.
 1.2.14.3 17-Jan-2009  mjf Sync with HEAD.
 1.2.14.2 28-Sep-2008  mjf Sync with HEAD.
 1.2.14.1 02-Jun-2008  mjf Sync with HEAD.
 1.2.8.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.8.1 02-Jan-2008  mjf file intr.c was added on branch mjf-devfs on 2008-02-18 21:07:22 +0000
 1.2.6.2 21-Jan-2008  yamt sync with head
 1.2.6.1 02-Jan-2008  yamt file intr.c was added on branch yamt-lazymbuf on 2008-01-21 09:47:42 +0000
 1.2.4.2 09-Jan-2008  matt sync with HEAD
 1.2.4.1 02-Jan-2008  matt file intr.c was added on branch matt-armv6 on 2008-01-09 01:58:00 +0000
 1.2.2.2 02-Jan-2008  bouyer Sync with HEAD
 1.2.2.1 02-Jan-2008  bouyer file intr.c was added on branch bouyer-xeni386 on 2008-01-02 21:57:53 +0000
 1.3.6.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.3.6.1 19-Oct-2008  haad Sync with HEAD.
 1.3.4.1 31-Jul-2008  simonb Sync with head.
 1.3.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.3.2.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.8.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.8.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.8.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.14.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.23.4.3 21-Apr-2011  rmind sync with head
 1.23.4.2 05-Mar-2011  rmind sync with head
 1.23.4.1 30-May-2010  rmind sync with head
 1.23.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.23.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.23.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.35.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.36.14.3 03-Dec-2017  jdolecek update from HEAD
 1.36.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.36.14.1 23-Jun-2013  tls resync from head
 1.36.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.40.4.1 18-May-2014  rmind sync with head
 1.42.2.1 10-Aug-2014  tls Rebase.
 1.46.4.4 19-Mar-2016  skrll Sync with HEAD
 1.46.4.3 22-Sep-2015  skrll Sync with HEAD
 1.46.4.2 06-Jun-2015  skrll Sync with HEAD
 1.46.4.1 06-Apr-2015  skrll Sync with HEAD
 1.54.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.55.8.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.56.24.1 02-Aug-2025  perseant Sync with HEAD
 1.2 21-Aug-2007  pooka Implement credentials. Access control is now similar to if the file
system were run in the kernel.
 1.1 05-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.6.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.6.1 05-Aug-2007  pooka file kauth_stub.c was added on branch matt-mips64 on 2007-08-05 22:28:09 +0000
 1.1.4.3 09-Oct-2007  ad Sync with head.
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 05-Aug-2007  ad file kauth_stub.c was added on branch vmlocking on 2007-08-20 22:07:27 +0000
 1.1.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 05-Aug-2007  skrll file kauth_stub.c was added on branch nick-csl-alignment on 2007-08-15 13:50:37 +0000
 1.11 23-Jun-2023  riastradh rump: KASSERT(x && y) -> KASSERT(x); KASSERT(y)

Add some KASSERTMSG while here.
 1.10 07-Jul-2016  msaitoh KNF. Remove extra spaces. No functional change.
 1.9 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.8 30-Apr-2013  pooka branches: 1.8.12;
Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.7 29-Apr-2013  pooka remove routine not meant to be committed
 1.6 29-Apr-2013  pooka Make the rump kernel upcalls which were previous available only to
the sysproxy module available for the entire hypervisor.
 1.5 09-Oct-2012  pooka Gather some statistics about biglock usage.
 1.4 20-Feb-2012  mrg branches: 1.4.2;
add a _kernel_locked_p().
 1.3 01-Dec-2010  pooka branches: 1.3.8; 1.3.12; 1.3.14; 1.3.18; 1.3.20;
Track lwp as the rumpuser mutex owner instead of pthread_t (this
is done in rumpuser for simplicity, since on the kernel side things
we assume we have only one pointer of space). As a side-effect,
we can no longer know if the current thread is holding on to a
mutex locked without curlwp context (basically all mutexes inited
outside of mutex_init()). The only thing that called rumpuser_mutex_held()
for a non-kmutex was the giant lock. So, instead implement recursive
locking for the giant lock in the rump kernel and get rid of the
now-unused recursive pthread mutex in the hypercall interface.
 1.2 18-May-2010  pooka branches: 1.2.2; 1.2.4; 1.2.6;
Namespace rump-only kernel biglock routines appropriately.

No functional change.
 1.1 18-May-2010  pooka Move routines related to kernel locking and scheduling from
locks.c to klock.c.

No functional change.
 1.2.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.2.6.1 18-May-2010  uebayasi file klock.c was added on branch uebayasi-xip on 2010-08-17 06:48:01 +0000
 1.2.4.2 11-Aug-2010  yamt sync with head.
 1.2.4.1 18-May-2010  yamt file klock.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.2.2.3 05-Mar-2011  rmind sync with head
 1.2.2.2 30-May-2010  rmind sync with head
 1.2.2.1 18-May-2010  rmind file klock.c was added on branch rmind-uvmplock on 2010-05-30 05:18:06 +0000
 1.3.20.1 18-Jun-2014  msaitoh Pull up following revision(s) (requested by bouyer in ticket #1067):
sys/dist/ipf/netinet/ip_fil_netbsd.c 1.9 via patch
sys/net/if_ethersubr.c 1.197 via patch
sys/net/if_loop.c 1.77 via patch
sys/net/if_vlan.c 1.70 via patch
sys/netinet/if_arp.c 1.158
sys/netinet/ip_carp.c 1.54 via patch
sys/netinet6/ip6_flow.c 1.23 via patch
sys/netinet6/nd6.c 1.150 via patch
sys/rump/librump/rumpkern/klock.c 1.4

Make sure *(if_output)() is called with KERNEL_LOCK held to avoid mbuf leak.
See http://mail-index.netbsd.org/tech-net/2014/04/09/msg004511.html
for details. For netinet6, the problem report, fix and test were done
by njoly@ on current-users@
 1.3.18.1 18-Jun-2014  msaitoh Pull up following revision(s) (requested by bouyer in ticket #1067):
sys/dist/ipf/netinet/ip_fil_netbsd.c 1.9 via patch
sys/net/if_ethersubr.c 1.197 via patch
sys/net/if_loop.c 1.77 via patch
sys/net/if_vlan.c 1.70 via patch
sys/netinet/if_arp.c 1.158
sys/netinet/ip_carp.c 1.54 via patch
sys/netinet6/ip6_flow.c 1.23 via patch
sys/netinet6/nd6.c 1.150 via patch
sys/rump/librump/rumpkern/klock.c 1.4

Make sure *(if_output)() is called with KERNEL_LOCK held to avoid mbuf leak.
See http://mail-index.netbsd.org/tech-net/2014/04/09/msg004511.html
for details. For netinet6, the problem report, fix and test were done
by njoly@ on current-users@
 1.3.14.1 03-Jun-2014  msaitoh Pull up following revision(s) (requested by bouyer in ticket #1067):
sys/dist/ipf/netinet/ip_fil_netbsd.c 1.9 via patch
sys/net/if_ethersubr.c 1.197 via patch
sys/net/if_loop.c 1.77 via patch
sys/net/if_vlan.c 1.70 via patch
sys/netinet/if_arp.c 1.158
sys/netinet/ip_carp.c 1.54 via patch
sys/netinet6/ip6_flow.c 1.23 via patch
sys/netinet6/nd6.c 1.150 via patch
sys/rump/librump/rumpkern/klock.c 1.4

Make sure *(if_output)() is called with KERNEL_LOCK held to avoid mbuf leak.
See http://mail-index.netbsd.org/tech-net/2014/04/09/msg004511.html
for details. For netinet6, the problem report, fix and test were done
by njoly@ on current-users@
 1.3.12.1 20-Feb-2012  mrg pull across from -current:
>add a _kernel_locked_p().
 1.3.8.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.8.2 30-Oct-2012  yamt sync with head
 1.3.8.1 17-Apr-2012  yamt sync with head
 1.4.2.3 03-Dec-2017  jdolecek update from HEAD
 1.4.2.2 23-Jun-2013  tls resync from head
 1.4.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.8.12.2 09-Jul-2016  skrll Sync with HEAD
 1.8.12.1 19-Mar-2016  skrll Sync with HEAD
 1.3 20-Feb-2020  joerg The global offset table is spelled .TOC. on PPC64, so preserve that symbol.
 1.2 25-Apr-2014  pooka branches: 1.2.28; 1.2.34;
gardenize: function calls over #ifdefs
 1.1 26-Apr-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24; 1.1.28; 1.1.38;
Implement kobj_renamespace() for rump. Support for a few archs is
missing, but that doesn't really matter, since they are living in
their own "everything is a macro" happyland and don't support the
native kernel ABI anyway.
 1.1.38.1 10-Aug-2014  tls Rebase.
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 26-Apr-2010  yamt file kobj_rename.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 26-Apr-2010  rmind file kobj_rename.c was added on branch rmind-uvmplock on 2010-05-30 05:18:06 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 26-Apr-2010  uebayasi file kobj_rename.c was added on branch uebayasi-xip on 2010-04-30 14:44:30 +0000
 1.2.34.1 29-Feb-2020  ad Sync with head.
 1.2.28.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.3 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.2 01-Jan-2009  pooka branches: 1.2.2; 1.2.4; 1.2.8; 1.2.20; 1.2.30; 1.2.34;
fix format
 1.1 01-Jan-2009  pooka missed cvs add in previous commit:

Define MODULAR for rump core components. This enables module
loading via the kernel module framework (instead of dlopen()).
For now it only works on amd64 and i386, but for the rest it should
just be a matter of including the relevant kobj_machdep.c modules
from the kernel sources.
 1.2.34.1 18-May-2014  rmind sync with head
 1.2.30.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.20.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.8.2 04-May-2009  yamt sync with head.
 1.2.8.1 01-Jan-2009  yamt file kobj_stubs.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.2.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.2.4.1 01-Jan-2009  skrll file kobj_stubs.c was added on branch nick-hppapmap on 2009-01-19 13:20:25 +0000
 1.2.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.2.1 01-Jan-2009  mjf file kobj_stubs.c was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.4 31-Oct-2007  pooka Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.3 11-Oct-2007  ad branches: 1.3.2;
Merge from vmlocking:

- G/C spinlockmgr() and simple_lock debugging.
- Always include the kernel_lock functions, for LKMs.
- Slightly improved subr_lockdebug code.
- Keep sizeof(struct lock) the same if LOCKDEBUG.
 1.2 10-Oct-2007  ad transferlockers() is gone.
 1.1 26-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.10;
split implemented lock stuff out of lock_stub.c into lock.c
 1.1.10.2 09-Oct-2007  ad Sync with head.
 1.1.10.1 26-Aug-2007  ad file lock.c was added on branch vmlocking on 2007-10-09 13:45:04 +0000
 1.1.8.1 14-Oct-2007  yamt sync with head.
 1.1.6.4 15-Nov-2007  yamt sync with head.
 1.1.6.3 27-Oct-2007  yamt sync with head.
 1.1.6.2 03-Sep-2007  yamt sync with head.
 1.1.6.1 26-Aug-2007  yamt file lock.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:29 +0000
 1.1.4.2 03-Sep-2007  skrll Sync with HEAD.
 1.1.4.1 26-Aug-2007  skrll file lock.c was added on branch nick-csl-alignment on 2007-09-03 10:23:55 +0000
 1.1.2.1 06-Nov-2007  matt sync with HEAD
 1.3.2.1 13-Nov-2007  bouyer Sync with HEAD
 1.10 31-Oct-2007  pooka Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.9 22-Sep-2007  pooka branches: 1.9.4;
add rw_tryenter() and rw_lock_held(), inspired by Adam Hamsik
 1.8 26-Aug-2007  pooka branches: 1.8.2; 1.8.4;
split implemented lock stuff out of lock_stub.c into lock.c
 1.7 26-Aug-2007  pooka very rudimentary recursive lock support
 1.6 16-Aug-2007  pooka branches: 1.6.2;
tweaks
 1.5 12-Aug-2007  pooka branches: 1.5.2;
track lockmgr lock status. makes lfs work again
 1.4 09-Aug-2007  pooka fool some KASSERTs
 1.3 09-Aug-2007  pooka Add some stubs for lfs.
 1.2 07-Aug-2007  pooka mutex_pwned - needed for kassert
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file lock_stub.c was added on branch matt-mips64 on 2007-08-05 22:28:09 +0000
 1.5.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.5.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.5.2.1 12-Aug-2007  skrll file lock_stub.c was added on branch nick-csl-alignment on 2007-08-15 13:50:38 +0000
 1.6.2.3 09-Oct-2007  ad Sync with head.
 1.6.2.2 20-Aug-2007  ad Sync with HEAD.
 1.6.2.1 16-Aug-2007  ad file lock_stub.c was added on branch vmlocking on 2007-08-20 22:07:28 +0000
 1.8.4.4 15-Nov-2007  yamt sync with head.
 1.8.4.3 27-Oct-2007  yamt sync with head.
 1.8.4.2 03-Sep-2007  yamt sync with head.
 1.8.4.1 26-Aug-2007  yamt file lock_stub.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:30 +0000
 1.8.2.1 06-Nov-2007  matt sync with HEAD
 1.9.4.1 13-Nov-2007  bouyer Sync with HEAD
 1.88 02-Nov-2023  martin Back out the following revisions on behalf of core:

sys/sys/lwp.h: revision 1.228
sys/sys/pipe.h: revision 1.40
sys/kern/uipc_socket.c: revision 1.306
sys/kern/kern_sleepq.c: revision 1.84
sys/rump/librump/rumpkern/locks_up.c: revision 1.13
sys/kern/sys_pipe.c: revision 1.165
usr.bin/fstat/fstat.c: revision 1.119
sys/rump/librump/rumpkern/locks.c: revision 1.87
sys/ddb/db_xxx.c: revision 1.78
sys/ddb/db_command.c: revision 1.187
sys/sys/condvar.h: revision 1.18
sys/ddb/db_interface.h: revision 1.42
sys/sys/socketvar.h: revision 1.166
sys/kern/uipc_syscalls.c: revision 1.209
sys/kern/kern_condvar.c: revision 1.60

Add cv_fdrestart() [...]
Use cv_fdrestart() to implement fo_restart.
Simplify/streamline pipes a little bit [...]

This changes have caused regressions and need to be debugged.
The cv_fdrestart() addition needs more discussion.
 1.87 13-Oct-2023  ad Add cv_fdrestart() (better name suggestions welcome):

Like cv_broadcast(), but make any LWPs that share the same file descriptor
table as the caller return ERESTART when resuming. Used to dislodge LWPs
waiting for I/O that prevent a file descriptor from being closed, without
upsetting access to the file (not descriptor) made from another direction.
 1.86 16-Jul-2023  riastradh rump: Fix comment to reflect l_private -> l_sched.info.

Comment was misspelled `l->private', hence didn't come up in grep.
 1.85 16-Jul-2023  riastradh rump: Use l_sched.info, not l_private, for cv waits.

- l_sched is scheduler-private, used only by sched_m2.c, should be safe
- l_private is lwp-private, used by tls in user threads, would like to
reuse for kthreads too
 1.84 12-Apr-2023  riastradh kern: Nix mutex_owner.

There is no valid reason to use this except in assertions of the form

KASSERT(mutex_owner(lock) == curlwp),

which is more obviously spelled as

KASSERT(mutex_owned(lock)).

Exception: There's one horrible kludge in zfs that abuses this, which
should be eliminated.

XXX kernel revbump -- deleting symbol

PR kern/47114
 1.83 26-Oct-2022  riastradh rwlock(9): Nix extern _rw_init in .c; use sys/rwlock.h.
 1.82 26-Oct-2022  riastradh mutex(9): Properly declare _mutex_init in sys/mutex.h.
 1.81 22-Feb-2020  ad rump rw_lock_op
 1.80 05-Feb-2018  ozaki-r branches: 1.80.4; 1.80.10;
Obtain proper initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc

Initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc
were not useful because the addresses were mutex_obj_alloc or rw_obj_alloc
itself. What we want to know are callers of them.

(forgot to commit)
 1.79 27-Dec-2017  ozaki-r rump: check if the mutex is surely owned by the caller in mutex_exit

Unlocking a not-owned mutex wasn't detected well (it could detect if the mutex
is not held by anyone but that's not enough). Let's check it (the check is the
same as normal kernel's mutex).

If LOCKDEBUG is enabled, give the check over LOCKDEBUG because it can provide
better debugging information.
 1.78 27-Dec-2017  ozaki-r Distinguish spin mutex and adaptive mutex on rump kernels for LOCKDEBUG

Formerly rump kernels treated the two types of mutexes as both adaptive for
LOCKDEBUG for some reasons.

Now we can detect violations of mutex restrictions on rump kernels such as
taking an adaptive mutex with holding a spin mutex as well as normal kernels.
 1.77 27-Dec-2017  ozaki-r Tweak LOCKDEBUG macros (NFC)
 1.76 25-Dec-2017  ozaki-r Apply C99-style struct initialization to lockops_t
 1.75 17-Sep-2017  kre As if rump wasn't constipated enough...

Add some more blockages, hopefully allow the build to find a
path all the way to the other end...
 1.74 01-May-2017  pgoyette branches: 1.74.2;
Introduce mutex_ownable() to determine if it is possible for the current
process to acquire a mutex.
 1.73 27-Jan-2017  ozaki-r branches: 1.73.4;
Unbreak builds of rump libraries with RUMP_LOCKDEBUG
 1.72 26-Jan-2016  pooka branches: 1.72.2; 1.72.4;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.71 30-Sep-2015  ozaki-r Add lockdebug_barrier

ok pooka@
 1.70 30-Sep-2015  ozaki-r Remove redundant UNLOCKED and LOCKED

UNLOCKED and LOCKED are done inside mutex_exit and mutex_enter respectively
so we don't need to do them outside mutex_exit and mutex_enter.

Reviewed by pooka@
 1.69 25-Apr-2014  pooka branches: 1.69.4;
gardenizing rump.c: move rump_lockdebug to locks.c
 1.68 11-Mar-2014  pooka branches: 1.68.2;
Put the syncobjs in emul.c instead of locks.c so that they are
present for both locks.c and locks_up.c alike.
 1.67 09-Dec-2013  pooka make !LOCKDEBUG work too
 1.66 09-Dec-2013  pooka Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.
 1.65 03-Jul-2013  njoly Make RUMP_LOCKDEBUG work again.
With some help from pooka@.
 1.64 15-May-2013  pooka branches: 1.64.2;
Pass enums over the hypercall interface as ints to avoid some
pathological scenarios from arising in setups where enums might be
of a different size in the rump kernel and hypervisor.
 1.63 02-May-2013  pooka Push rwlock upgrade and downgrade into the hypervisor where there's
at least a chance to implement them with minimal fuss.
 1.62 02-May-2013  pooka g/c stale comment
 1.61 02-May-2013  pooka Retry enabling spin mutexes. We should be able to avoid poking the
scheduler by just making wakeup from cv_wait() honor the same locking
order as when a spin mutex is acquired though mutex_enter().
*fingers crossed*
 1.60 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.59 29-Apr-2013  pooka Disable spin mutexes for now. They need some more work in the case
where a spin mutex is used as an argument to cv_wait(). Plus, it
would be good to sprinkle some asserts to make sure that the cpu
context is not released while holding on to a spin mutex. All in
all, should not be difficult, but needs careful testing and bravery
(the scheduler will bite your legs off).
 1.58 28-Apr-2013  pooka Change rumpuser_cv_timedwait() from absolute time to relative time.
It's then the hypervisor's problem to translate it accordingly.
Now we no longer have to worry about the kernel having to know the
hypervisor's time and vice versa.
 1.57 27-Apr-2013  pooka roll mutex init hypercalls into one (one of them already took a flag anyway)
 1.56 27-Apr-2013  pooka Try to make sure that the appropriate calls to mutex_enter() takes
a spin mutex (i.e. does not relinquish cpu context while trying to
take the mutex).

Bump the hypercall interface version number. I'll be doing a bunch
of other cleanups to simplify the interface for the benefit of
alternative hypervisor implementations. I'll be riding this bump
and doing a second one only after I'm finished with all of the
changes.
 1.55 06-Dec-2011  njoly branches: 1.55.6;
Do not protect wrong KASSERT by LOCKEDBUG ifdef/endif, the latter uses
its own mecanism. Kill them both.
From discussion with pooka@.
 1.54 21-Mar-2011  pooka branches: 1.54.4; 1.54.8;
Update copyright statements.

no functional change.
 1.53 09-Mar-2011  pooka track lockdebug data even in the special path
 1.52 09-Mar-2011  pooka Mark cv_wait mutex as locked before doing any further dances.
Fixes a LOCKDEBUG panic in case the uncommon condition is hit.
 1.51 08-Mar-2011  pooka Nuke all threads belonging to a process calling exec before allowing
the exec handshake to return.

In addition to being The Right Thing To Do, fixes some nasty
conditions for CLOEXEC fd's (or at least does so in theory, I
couldn't create any problems although I tried).
 1.50 28-Jan-2011  pooka If we are "unsleepable" due to a dying proc, yield() instead of
returning directly. This allows other threads to run possible
setting a condition we are waiting on.

Fixes a busyloop condition which could be entered from vfs_unmountall()
where we were waiting for vrele_pending and the vrele thread could
not run since we were hogging the CPU.
 1.49 28-Jan-2011  pooka Some lwp-walkers expect the correct value for l_stat, so use a flag
in l_flag instead of l_stat for the purpose of flagging lwps in a
dying proc.
 1.48 18-Jan-2011  haad branches: 1.48.2;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.47 12-Jan-2011  pooka branches: 1.47.2;
When the client and the rump kernel are the same host process, all
threads blocking in the kernel automatically exit when the process
exists. However, for the sysproxy case this does not hold.
Typically it's ~harmless, but e.g. in the case of socket binding
following by poll it gets annoying.

Introduce sysproxy procexit, which wakes up all threads blocking
on a condition when a process's communication socket is closed.
The code is a little different from the regular kernel simply
because in a rump kernel l_mutex is not available at all times
(this is because scheduling happens on every kernel entry and exit,
and that path must be kept lockless for any reasonable performance).
Instead, use gating which makes sure all threads are either out of
the cv code or suspended in a well-known state. Then, wake up the
threads and tell them to get the hell out of our galaxy.
 1.46 06-Jan-2011  pooka antipasto
 1.45 06-Jan-2011  pooka Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)
 1.44 01-Dec-2010  pooka implement mutex_owner()
 1.43 01-Dec-2010  pooka Track lwp as the rumpuser mutex owner instead of pthread_t (this
is done in rumpuser for simplicity, since on the kernel side things
we assume we have only one pointer of space). As a side-effect,
we can no longer know if the current thread is holding on to a
mutex locked without curlwp context (basically all mutexes inited
outside of mutex_init()). The only thing that called rumpuser_mutex_held()
for a non-kmutex was the giant lock. So, instead implement recursive
locking for the giant lock in the rump kernel and get rid of the
now-unused recursive pthread mutex in the hypercall interface.
 1.42 09-Jun-2010  pooka Similarly to cv_wait, fail if trying to cv_wait_sig() without threads.
 1.41 18-May-2010  pooka Move routines related to kernel locking and scheduling from
locks.c to klock.c.

No functional change.
 1.40 18-May-2010  pooka Make it possible to use the scheduler lock as the rumpuser condvar
interlock. This is applicable in cases where the actual interlock
is the CPU the currently running thread is scheduled on. Borrowing
the scheduler lock as the mutex mandated by pthread_cond_wait()
does away with need to have an additional mutex. This both optimizes
runtime execution and simplifies code, as the extra lock typically
lead to quite some trickeries to avoid the dungeon collapsing due
to zaps from the wand of deadlock.
 1.39 14-Apr-2010  pooka Add comment about clock mismatch.
 1.38 31-Jan-2010  snj branches: 1.38.2; 1.38.4;
Some might argue that it is benefi_c_ial to spell words correctly.
 1.37 03-Dec-2009  pooka Remove last remnants of the long-ago-properly-fixed RUMP_LMUTEX_MAGIC hack.
 1.36 01-Dec-2009  pooka Almost there for virtual CPU MP support:
* support bound kernel threads
* bind softint threads to specific virtual cpus
+ remove now-unnecessary locks from softint code

Now, if we only had MI CPU_INFO_FOREACH() .... (hi rmind ;)
 1.35 26-Nov-2009  pooka Provide some sort of cv_is_valid(). What a silly routine.
 1.34 11-Nov-2009  pooka Make rumpuser_cv_timedwait take two int64's instead timespec to
uncouple it from the timespec layout. Also, change return value
to zero for "timeout didn't expire" and non-zero for "timeout
expired". This decouples the interface from errno assignments.
 1.33 04-Nov-2009  pooka Use kern_mutex_obj.c directly instead of copypasting code.
 1.32 16-Oct-2009  pooka Include sys_select.c for proper select()/poll() support.
 1.31 15-Oct-2009  pooka When allocating the temporary lwp we must have an lwp context. So
take turns using lwp0 for this purpose, nothing else uses it.
 1.30 15-Oct-2009  pooka Give lwp usage some much-needed love: stop treating lwp0 as the
all-sink and make sure each separate thread in rump has its own
lwp. Happy-go-lucky callers will get scheduled a temporary lwp
on entry, while true lwp connoisseurs may request a stable lwp
for their purposes. Some more love may be required later down the
road, but for now different threads will stepping on each others
toes.
 1.29 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.28 02-Oct-2009  pooka panic if cv_wait() is called in non-threaded mode
 1.27 07-Feb-2009  pooka Make the clock interrupt tick based on absolute time instead of
relative time. This prevents drifting. Also, keep track of time
within userspace, so we do not have to make a syscall to get the
clock value. This is approximately 7 times cheaper, but on the
negative side is limited to the clock interrupt frequency.
 1.26 13-Jan-2009  pooka misc cleanup, mainly header polish
 1.25 19-Dec-2008  pooka CTASSERT kcondvar size
 1.24 19-Dec-2008  pooka fix build

(hi thorpej! the first one is always free ;)
 1.23 18-Dec-2008  pooka __KERNEL_RCSID
 1.22 13-Dec-2008  pooka Get rid of local machine/{mutex,rwlock}.h files by treating the
object storage as a single pointer (all archs have at least one
uintptr_t in the objects).
 1.21 10-Dec-2008  pooka Make kernel biglock recursecount volatile.
 1.20 10-Oct-2008  pooka branches: 1.20.2;
Support callouts and call callout_hardclock() from the timer
interrupt thread.

The sleepq implementation required for callouts is horrible, kludged
only for callouts, and generally unacceptable. It needs revisiting,
but I'm not sure yet should rump or kern_timeout be improved. It's
almost untested as of now, but committing this will give me some
maneuvering space while letting application compile.
 1.19 09-Oct-2008  pooka Rewrite kernel lockus maximus handling to be correct.
 1.18 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.17 18-Jul-2008  pooka support cv_has_waiters()
 1.16 31-May-2008  ad branches: 1.16.2; 1.16.4;
Turn off DIAGNOSTIC so it builds.
 1.15 28-Apr-2008  martin branches: 1.15.2;
Remove clause 3 and 4 from TNF licenses
 1.14 11-Apr-2008  ad branches: 1.14.2; 1.14.4;
More stubs.
 1.13 01-Apr-2008  drochner remove useless passing of the lwp from the KERNEL_LOCK() ABI
(not the API; this would be easy as well)
agreed (a while ago) by ad
 1.12 11-Mar-2008  pooka Backup some fixes for recent breakage from local tree. Also some
other improvements such as exporting the real kernel namei and
using that in ukfs instead of the homegrown heap'o hacks namei.
"etcetc".
 1.11 30-Jan-2008  ad branches: 1.11.2; 1.11.6;
Fix pasto. Spotted by pooka@
 1.10 30-Jan-2008  ad Replace struct lock on vnodes with a simpler lock object built on
krwlock_t. This is a step towards removing lockmgr and simplifying
vnode locking. Discussed on tech-kern.
 1.9 21-Jan-2008  pooka In case cv_timedwait() gets ticks == 0, make sure we sleep eternally
(or at least until wakeup) instead of immediately waking up.

In other words, fix this after it broke when another piece of the
code was fixed. Ain't programming fun?
 1.8 02-Jan-2008  ad Fix merge error.
 1.7 02-Jan-2008  ad Merge vmlocking2 to head.
 1.6 01-Jan-2008  pooka emulate a couple more locking interfaces
 1.5 30-Dec-2007  pooka steal 1.4.2.1 from vmlocking2: cv_xwait_sig()
 1.4 19-Nov-2007  pooka branches: 1.4.2; 1.4.6;
support cv_broadcast()
 1.3 17-Nov-2007  pooka Implement cv_timedwait(), requested by Reinoud.
 1.2 07-Nov-2007  pooka branches: 1.2.2; 1.2.4;
implement _kernel_lock{,_unlock}()
 1.1 31-Oct-2007  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.1.6.5 23-Mar-2008  matt sync with HEAD
 1.1.6.4 09-Jan-2008  matt sync with HEAD
 1.1.6.3 08-Nov-2007  matt sync with -HEAD
 1.1.6.2 06-Nov-2007  matt sync with HEAD
 1.1.6.1 31-Oct-2007  matt file locks.c was added on branch matt-armv6 on 2007-11-06 23:34:36 +0000
 1.1.4.3 18-Feb-2008  mjf Sync with HEAD.
 1.1.4.2 08-Dec-2007  mjf Sync with HEAD.
 1.1.4.1 19-Nov-2007  mjf Sync with HEAD.
 1.1.2.4 21-Nov-2007  joerg Sync with HEAD.
 1.1.2.3 11-Nov-2007  joerg Sync with HEAD.
 1.1.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.1.2.1 31-Oct-2007  joerg file locks.c was added on branch jmcneill-pm on 2007-10-31 23:14:16 +0000
 1.2.4.6 17-Mar-2008  yamt sync with head.
 1.2.4.5 04-Feb-2008  yamt sync with head.
 1.2.4.4 21-Jan-2008  yamt sync with head
 1.2.4.3 07-Dec-2007  yamt sync with head
 1.2.4.2 15-Nov-2007  yamt sync with head.
 1.2.4.1 07-Nov-2007  yamt file locks.c was added on branch yamt-lazymbuf on 2007-11-15 11:45:26 +0000
 1.2.2.4 21-Nov-2007  bouyer Sync with HEAD
 1.2.2.3 18-Nov-2007  bouyer Sync with HEAD
 1.2.2.2 13-Nov-2007  bouyer Sync with HEAD
 1.2.2.1 07-Nov-2007  bouyer file locks.c was added on branch bouyer-xenamd64 on 2007-11-13 16:03:14 +0000
 1.4.6.2 23-Jan-2008  bouyer Sync with HEAD.
 1.4.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.4.2.1 28-Dec-2007  ad Make rump build.
 1.11.6.4 17-Jan-2009  mjf Sync with HEAD.
 1.11.6.3 28-Sep-2008  mjf Sync with HEAD.
 1.11.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.11.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.11.2.1 24-Mar-2008  keiichi sync with head.
 1.14.4.4 11-Aug-2010  yamt sync with head.
 1.14.4.3 11-Mar-2010  yamt sync with head
 1.14.4.2 04-May-2009  yamt sync with head.
 1.14.4.1 16-May-2008  yamt sync with head.
 1.14.2.2 04-Jun-2008  yamt sync with head
 1.14.2.1 18-May-2008  yamt sync with head.
 1.15.2.3 10-Oct-2008  skrll Sync with HEAD.
 1.15.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.15.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.16.4.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.16.4.1 19-Oct-2008  haad Sync with HEAD.
 1.16.2.2 31-Jul-2008  simonb Sync with head.
 1.16.2.1 21-Jul-2008  simonb Sync with head.
 1.20.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.20.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.38.4.4 21-Apr-2011  rmind sync with head
 1.38.4.3 05-Mar-2011  rmind sync with head
 1.38.4.2 03-Jul-2010  rmind sync with head
 1.38.4.1 30-May-2010  rmind sync with head
 1.38.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.38.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.47.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.48.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.54.8.1 18-Feb-2012  mrg merge to -current.
 1.54.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.54.4.1 17-Apr-2012  yamt sync with head
 1.55.6.3 03-Dec-2017  jdolecek update from HEAD
 1.55.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.55.6.1 23-Jun-2013  tls resync from head
 1.64.2.2 18-May-2014  rmind sync with head
 1.64.2.1 28-Aug-2013  rmind sync with head
 1.68.2.1 10-Aug-2014  tls Rebase.
 1.69.4.4 28-Aug-2017  skrll Sync with HEAD
 1.69.4.3 05-Feb-2017  skrll Sync with HEAD
 1.69.4.2 19-Mar-2016  skrll Sync with HEAD
 1.69.4.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.72.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.72.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.73.4.3 02-May-2017  pgoyette Sync with HEAD - tag prg-localcount2-base1
 1.73.4.2 30-Apr-2017  pgoyette Use the right conditional to enable/disable LOCKDEBUG within RUMP
 1.73.4.1 30-Apr-2017  pgoyette Introduce mutex_ownable(9) and use it in localcount_release(9).

Commit of same code to head is awaiting discussion on tech-kern.
 1.74.2.2 02-Apr-2018  martin Pull up following revision(s) (requested by ozaki-r in ticket #687):
sys/kern/kern_rwlock_obj.c: revision 1.4
sys/rump/librump/rumpkern/locks.c: revision 1.80
sys/kern/kern_rwlock.c: revision 1.50
sys/arch/x86/x86/db_memrw.c: revision 1.5,1.6
sys/ddb/db_command.c: revision 1.150-1.153
share/man/man4/ddb.4: revision 1.175 (via patch),1.176-1.178
sys/kern/kern_mutex_obj.c: revision 1.6
sys/kern/subr_lockdebug.c: revision 1.61-1.64
sys/sys/lockdebug.h: revision 1.17
sys/kern/kern_mutex.c: revision 1.71
sys/sys/lockdebug.h: revision 1.18,1.19
sys/kern/subr_xcall.c: revision 1.26

Obtain proper initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc

Initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc
were not useful because the addresses were mutex_obj_alloc or rw_obj_alloc
itself. What we want to know are callers of them.

Spinkle ASSERT_SLEEPABLE to xcall functions

Use db_printf instead of printf in ddb

Add a new command, show lockstat, which shows statistics of locks
Currently the command shows the number of allocated locks.
The command is useful only if LOCKDEBUG is enabled.

Add a new command, show all locks, which shows information of active locks

The command shows information of all active (i.e., being held) locks that are
tracked through either of LWPs or CPUs by the LOCKDEBUG facility. The /t
modifier additionally shows a backtrace for each LWP additionally. This
feature is useful for debugging especially to analyze deadlocks.
The command is useful only if LOCKDEBUG is enabled.

Don't pass a unset address to lockdebug_lock_print

x86: avoid accessing invalid addresses in ddb like arm32
This avoids that a command stops in the middle of an execution if
a fault occurs due to an access to an invalid address.

Get rid of a redundant output

Improve wording. Fix a Cm argument.

ddb: rename "show lockstat" to "show lockstats" to avoid conflicting with lockstat(8)
Requested by mrg@
 1.74.2.1 13-Jan-2018  snj Pull up following revision(s) (requested by ozaki-r in ticket #495):
lib/librumpuser/rumpfiber.c: revision 1.13
lib/librumpuser/rumpuser_pth.c: revision 1.46
lib/librumpuser/rumpuser_pth_dummy.c: revision 1.18
sys/kern/kern_condvar.c: revision 1.40
sys/kern/kern_lock.c: revision 1.161
sys/kern/kern_mutex.c: revision 1.68
sys/kern/kern_rwlock.c: revision 1.48
sys/rump/include/rump/rumpuser.h: revision 1.115
sys/rump/librump/rumpkern/locks.c: revision 1.76-1.79
Apply C99-style struct initialization to lockops_t
--
Tweak LOCKDEBUG macros (NFC)
--
Distinguish spin mutex and adaptive mutex on rump kernels for LOCKDEBUG
Formerly rump kernels treated the two types of mutexes as both adaptive for
LOCKDEBUG for some reasons.
Now we can detect violations of mutex restrictions on rump kernels such as
taking an adaptive mutex with holding a spin mutex as well as normal kernels.
--
rump: check if the mutex is surely owned by the caller in mutex_exit
Unlocking a not-owned mutex wasn't detected well (it could detect if the mutex
is not held by anyone but that's not enough). Let's check it (the check is the
same as normal kernel's mutex).
If LOCKDEBUG is enabled, give the check over LOCKDEBUG because it can provide
better debugging information.
 1.80.10.1 29-Feb-2020  ad Sync with head.
 1.80.4.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.14 02-Nov-2023  martin Back out the following revisions on behalf of core:

sys/sys/lwp.h: revision 1.228
sys/sys/pipe.h: revision 1.40
sys/kern/uipc_socket.c: revision 1.306
sys/kern/kern_sleepq.c: revision 1.84
sys/rump/librump/rumpkern/locks_up.c: revision 1.13
sys/kern/sys_pipe.c: revision 1.165
usr.bin/fstat/fstat.c: revision 1.119
sys/rump/librump/rumpkern/locks.c: revision 1.87
sys/ddb/db_xxx.c: revision 1.78
sys/ddb/db_command.c: revision 1.187
sys/sys/condvar.h: revision 1.18
sys/ddb/db_interface.h: revision 1.42
sys/sys/socketvar.h: revision 1.166
sys/kern/uipc_syscalls.c: revision 1.209
sys/kern/kern_condvar.c: revision 1.60

Add cv_fdrestart() [...]
Use cv_fdrestart() to implement fo_restart.
Simplify/streamline pipes a little bit [...]

This changes have caused regressions and need to be debugged.
The cv_fdrestart() addition needs more discussion.
 1.13 13-Oct-2023  ad Add cv_fdrestart() (better name suggestions welcome):

Like cv_broadcast(), but make any LWPs that share the same file descriptor
table as the caller return ERESTART when resuming. Used to dislodge LWPs
waiting for I/O that prevent a file descriptor from being closed, without
upsetting access to the file (not descriptor) made from another direction.
 1.12 12-Apr-2023  riastradh kern: Nix mutex_owner.

There is no valid reason to use this except in assertions of the form

KASSERT(mutex_owner(lock) == curlwp),

which is more obviously spelled as

KASSERT(mutex_owned(lock)).

Exception: There's one horrible kludge in zfs that abuses this, which
should be eliminated.

XXX kernel revbump -- deleting symbol

PR kern/47114
 1.11 22-Feb-2020  ad rump rw_lock_op
 1.10 26-Jan-2016  pooka branches: 1.10.18; 1.10.24;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.9 06-May-2013  pooka branches: 1.9.12;
update for new hypercalls
 1.8 28-Apr-2013  pooka Change rumpuser_cv_timedwait() from absolute time to relative time.
It's then the hypervisor's problem to translate it accordingly.
Now we no longer have to worry about the kernel having to know the
hypervisor's time and vice versa.
 1.7 27-Apr-2013  pooka Try to make sure that the appropriate calls to mutex_enter() takes
a spin mutex (i.e. does not relinquish cpu context while trying to
take the mutex).

Bump the hypercall interface version number. I'll be doing a bunch
of other cleanups to simplify the interface for the benefit of
alternative hypervisor implementations. I'll be riding this bump
and doing a second one only after I'm finished with all of the
changes.
 1.6 28-Apr-2012  stacktic branches: 1.6.2;
Fixed build with locks_up.c
 1.5 01-Dec-2010  pooka branches: 1.5.8; 1.5.12;
implement mutex_owner()
 1.4 14-Jun-2010  pooka branches: 1.4.2; 1.4.4;
Make it possible to define an upper limit for memory consumed by
the rump kernel by specifying RUMP_MEMLIMIT. In case allocation
over that limit is attempted, essentially pool reclaim and uvm_wait()
is done. The default is to allow to allocate as much as the host
will give.

XXX: uvm_km_alloc and malloc(9) do not currently conform. the
former is easy, the latter requires kern_malloc.c (rump malloc is
currently directly relegated to host malloc).
 1.3 03-Jun-2010  pooka Implement a sort-of pagedaemon: adjust all memory allocators to go
through an in-rumpkernel hypermemory allocator which knows it should
kick the pagedaemon and block in case ``waitok'' memory allocation
fails.

This allows us to recover from some out-of-memory situations.
Realworld'istically speaking (as opposed to whatever "should be"
theory), these OOM situations will happen extremely rarely if ever
when our hypervisor is a regular process. Speculatively, this
should be useful for other types of hosts.

issues remaining:
* the hypervisor does not know how to reclaim kernel memory (and
for the reason I stated above, I'm not sure if it makes sense
to teach the current implementation about that)
* vfs memory (buffers, vm object pages etc.) is not reclaimed
 1.2 01-Jun-2010  pooka Don't pass "canfail" down to rumpuser_malloc -- there's quite little
we can do with that info way down there. Instead, pass alignment.
Implement rumpuser_malloc() with posix_memalign().
 1.1 18-May-2010  pooka branches: 1.1.2;
Add uniprocessor versions of mutex/rw/cv. They work only on virtual
unicpu configurations (i.e. RUMP_NCPU==1), but are massively faster
than the multiprocessor versions since the fast path does not have
to perform any cache coherent operations. _Applications_ with
lock-happy kernel paths, i.e. _not_ lock microbenchmarks, measure
up to tens of percents speedup on my Core2 Duo. Every globally
atomic state required by normal locks/atomic ops implies a hideous
speed penalty even for the fast path.

While this requires a unicpu configuration, it should be noted that
we are talking about a virtual unicpu configuration. The host can
have as many processors as it desires, and the speed benefit of
virtual unicpu is still there. It's pretty obvious that in terms
of scalability simple workload partitioning and replication into
multiple kernels wins hands down over complicated locking or
locklessing algorithms which depend on globally atomic state.
 1.1.2.4 05-Mar-2011  rmind sync with head
 1.1.2.3 03-Jul-2010  rmind sync with head
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 18-May-2010  rmind file locks_up.c was added on branch rmind-uvmplock on 2010-05-30 05:18:06 +0000
 1.4.4.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.4.4.1 14-Jun-2010  uebayasi file locks_up.c was added on branch uebayasi-xip on 2010-08-17 06:48:01 +0000
 1.4.2.2 11-Aug-2010  yamt sync with head.
 1.4.2.1 14-Jun-2010  yamt file locks_up.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
 1.5.12.1 29-Apr-2012  mrg sync to latest -current.
 1.5.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.8.1 23-May-2012  yamt sync with head.
 1.6.2.2 03-Dec-2017  jdolecek update from HEAD
 1.6.2.1 23-Jun-2013  tls resync from head
 1.9.12.1 19-Mar-2016  skrll Sync with HEAD
 1.10.24.1 29-Feb-2020  ad Sync with head.
 1.10.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.36 14-Mar-2020  ad Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW
locks out of the equation for sleep/wakeup, and allows observing+waiting
for busy pages when holding only a read lock. Proposed on tech-kern.
 1.35 23-Feb-2020  ad UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.34 26-Jan-2016  pooka branches: 1.34.18; 1.34.24;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.33 15-May-2013  pooka branches: 1.33.10;
how did that extra asterisk get there?
 1.32 15-May-2013  pooka qlock can now be a regular kernel spin mutex instead of a rumpuser mutex.
 1.31 28-Apr-2013  pooka Change rumpuser_cv_timedwait() from absolute time to relative time.
It's then the hypervisor's problem to translate it accordingly.
Now we no longer have to worry about the kernel having to know the
hypervisor's time and vice versa.
 1.30 27-Apr-2013  pooka roll mutex init hypercalls into one (one of them already took a flag anyway)
 1.29 28-Jan-2012  rmind branches: 1.29.6;
Remove obsolete ltsleep(9) and wakeup_one(9).
 1.28 01-Dec-2010  pooka branches: 1.28.8; 1.28.12;
Track lwp as the rumpuser mutex owner instead of pthread_t (this
is done in rumpuser for simplicity, since on the kernel side things
we assume we have only one pointer of space). As a side-effect,
we can no longer know if the current thread is holding on to a
mutex locked without curlwp context (basically all mutexes inited
outside of mutex_init()). The only thing that called rumpuser_mutex_held()
for a non-kmutex was the giant lock. So, instead implement recursive
locking for the giant lock in the rump kernel and get rid of the
now-unused recursive pthread mutex in the hypercall interface.
 1.27 31-May-2010  pooka Support mtsleep() without a biglocked sleeper (uvm uses this in
UVM_UNLOCK_AND_WAIT())
 1.26 18-May-2010  pooka Namespace rump-only kernel biglock routines appropriately.

No functional change.
 1.25 20-Dec-2009  pooka branches: 1.25.2; 1.25.4;
add comment about prospective perils to previous
 1.24 20-Dec-2009  pooka pthread_cond_timedwait (and therefore rumpuser_cv_timedwait) wants
an absolute time instead of a delta. Fix bug which caused timed
tsleeps to always wake up immediately (unless the system clock was
around "0", which was not very probable ;).
 1.23 05-Dec-2009  pooka Cast Oh Kath Ra once every second.
 1.22 05-Dec-2009  pooka Remove now-empty rump_sleepers_init()
 1.21 11-Nov-2009  pooka set return value properly
 1.20 11-Nov-2009  pooka support timeouts in tsleep
 1.19 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.18 04-Oct-2009  pooka Fix hopefully the last deadlock in the wretched piece of code:
since ltsleep abuses "while (!mutex_tryenter()) continue;" for NOT
releasing the kernel biglock before sleeping, we cannot do a normal
mutex_enter() in the wakeup path, or otherwise we might be a
situation where the sleeper holds the kernel lock and wants the
sleepermutex (and will not back down) and the wakeupper holds the
sleepermutex and wants the kernel lock. So introduce kernel lock
backdown to the wakeup path.
 1.17 04-Sep-2009  pooka brace policy. no functional change.
 1.16 04-Sep-2009  pooka Actually, we cannot release the megalock before we take sleepermtx,
since that opens a race window for non-mpsafe code, so do it after.
Additionally, we cannot call mutex_enter() for sleepermtx, since
ltsleep/mtsleep should not block (i.e. release kernel lock) before
actually blocking, so busyloop in mutex_tryenter(). Finally, when
waking up, take kernel lock back only *after* releasing sleepermtx
to avoid deadlock against another thread holding the kernel lock
and wanting sleepermtx.
 1.15 04-Sep-2009  pooka * wrap tsleep functions to drop die grosslock since we're going to
sleep anyway in a few flicks from the clock
* broadcast instead of signal in wakeup()
 1.14 09-Jun-2009  pooka check that interlock isn't null before releasing it
 1.13 09-Jun-2009  pooka simplelocks have been supported in rump for a while, allow their use.
 1.12 03-Jun-2009  pooka implement wakeup_one
 1.11 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.10 06-Feb-2009  pooka branches: 1.10.2;
Rip out the rwlock spl emulation code. It never did anything useful
except keep my feet warm by consuming an insane amount of cpu
cycles -- in rump our current "cpu" context is never interrupted
& we have MULTIPROCESSOR.

(itch i'm scratching: it made the networking stack 10-20% slower.
this is one of the places where fast code actually matters)
 1.9 18-Dec-2008  pooka __KERNEL_RCSID
 1.8 09-Oct-2008  pooka branches: 1.8.2;
Unsupport ltsleep() called with an interlock. Not that it was
really supported before either, since without MULTIPROCESSOR it's
just a nop.
 1.7 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.6 27-Jan-2008  pooka branches: 1.6.6; 1.6.10; 1.6.12; 1.6.14; 1.6.16;
Use vfs_subr.c from sys/kern. This brings differences in the vnode
life cycle between rump and a real kernel to a minimum.
 1.5 05-Jan-2008  riz Add #include <sys/simplelock.h>
 1.4 02-Jan-2008  ad Merge vmlocking2 to head.
 1.3 07-Nov-2007  pooka branches: 1.3.2; 1.3.4; 1.3.6; 1.3.10;
Execute I/O in a separate thread for async I/O where previously
everything was written/read in caller context.

Also, make the "kernel" lock recursive. It works better that way ...
 1.2 04-Nov-2007  pooka branches: 1.2.2; 1.2.4;
Fix some comments: thinking of it more closely, it is actually safe
to release the sleep interlock before calling cv_wait() because we
are protected by the list mutex which prevents a wakeup race.
 1.1 31-Oct-2007  pooka branches: 1.1.2;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.1.2.4 11-Nov-2007  joerg Sync with HEAD.
 1.1.2.3 04-Nov-2007  jmcneill Sync with HEAD.
 1.1.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.1.2.1 31-Oct-2007  joerg file ltsleep.c was added on branch jmcneill-pm on 2007-10-31 23:14:16 +0000
 1.2.4.5 23-Mar-2008  matt sync with HEAD
 1.2.4.4 09-Jan-2008  matt sync with HEAD
 1.2.4.3 08-Nov-2007  matt sync with -HEAD
 1.2.4.2 06-Nov-2007  matt sync with HEAD
 1.2.4.1 04-Nov-2007  matt file ltsleep.c was added on branch matt-armv6 on 2007-11-06 23:34:36 +0000
 1.2.2.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.3.10.2 08-Jan-2008  bouyer Sync with HEAD
 1.3.10.1 02-Jan-2008  bouyer Sync with HEAD
 1.3.6.1 28-Dec-2007  ad Make rump build.
 1.3.4.4 04-Feb-2008  yamt sync with head.
 1.3.4.3 21-Jan-2008  yamt sync with head
 1.3.4.2 15-Nov-2007  yamt sync with head.
 1.3.4.1 07-Nov-2007  yamt file ltsleep.c was added on branch yamt-lazymbuf on 2007-11-15 11:45:26 +0000
 1.3.2.2 13-Nov-2007  bouyer Sync with HEAD
 1.3.2.1 07-Nov-2007  bouyer file ltsleep.c was added on branch bouyer-xenamd64 on 2007-11-13 16:03:14 +0000
 1.6.16.1 19-Oct-2008  haad Sync with HEAD.
 1.6.14.1 31-Jul-2008  simonb Sync with head.
 1.6.12.2 10-Oct-2008  skrll Sync with HEAD.
 1.6.12.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.6.10.5 11-Aug-2010  yamt sync with head.
 1.6.10.4 11-Mar-2010  yamt sync with head
 1.6.10.3 16-Sep-2009  yamt sync with head
 1.6.10.2 20-Jun-2009  yamt sync with head
 1.6.10.1 04-May-2009  yamt sync with head.
 1.6.6.2 17-Jan-2009  mjf Sync with HEAD.
 1.6.6.1 28-Sep-2008  mjf Sync with HEAD.
 1.8.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.8.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.8.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.10.2.2 23-Jul-2009  jym Sync with HEAD.
 1.10.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.25.4.3 05-Mar-2011  rmind sync with head
 1.25.4.2 03-Jul-2010  rmind sync with head
 1.25.4.1 30-May-2010  rmind sync with head
 1.25.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.28.12.1 18-Feb-2012  mrg merge to -current.
 1.28.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.28.8.1 17-Apr-2012  yamt sync with head
 1.29.6.2 03-Dec-2017  jdolecek update from HEAD
 1.29.6.1 23-Jun-2013  tls resync from head
 1.33.10.1 19-Mar-2016  skrll Sync with HEAD
 1.34.24.1 29-Feb-2020  ad Sync with head.
 1.34.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.59 06-Apr-2025  riastradh rump: Nix leaked struct lwp on every rump_server syscall.

This leak was introduced by lwproc.c rev. 1.51 back in 2020, when the
kmem_zalloc(sizeof(*l), KM_SLEEP) was factored out of callers and
into lwproc_makelwp:

-static void
-lwproc_makelwp(struct proc *p, struct lwp *l, bool doswitch, bool procmake)
+static struct lwp *
+lwproc_makelwp(struct proc *p, bool doswitch, bool procmake)
{
+ struct lwp *l = kmem_zalloc(sizeof(*l), KM_SLEEP);
...
@@ -435,8 +431,12 @@ rump_lwproc_newlwp(pid_t pid)
kmem_free(l, sizeof(*l));
return EBUSY;
}
+ mutex_exit(p->p_lock);
mutex_exit(&proc_lock);
- lwproc_makelwp(p, l, true, false);
+
+ /* XXX what holds proc? */
+
+ lwproc_makelwp(p, true, false);

Unfortunately, the kmem_zalloc in rump_lwproc_newlwp was not deleted.
So it just leaked.

And this routine is called on _every_ syscall handled by rump_server
(via struct rumpuser_hyperup::hyp_lwproc_newlwp):

674 static void
675 serv_handlesyscall(struct spclient *spc, struct rsp_hdr *rhdr, uint8_t *data)
676 {
677 register_t retval[2] = {0, 0};
678 int rv, sysnum;
679
680 sysnum = (int)rhdr->rsp_sysnum;
681 DPRINTF(("rump_sp: handling syscall %d from client %d\n",
682 sysnum, spc->spc_pid));
683
=> 684 if (__predict_false((rv = lwproc_newlwp(spc->spc_pid)) != 0)) {
685 retval[0] = -1;
686 send_syscall_resp(spc, rhdr->rsp_reqno, rv, retval);
687 return;
688 }
689 spc->spc_syscallreq = rhdr->rsp_reqno;
690 rv = rumpsyscall(sysnum, data, retval);

https://nxr.netbsd.org/xref/src/lib/librumpuser/rumpuser_sp.c?r=1.77#684

So this leak would grow fairly quickly in processes issuing rump
syscalls to rump_servers, which t_sp:sigsafe's helper h_sigcli does
as fast as it can in a loop for 5sec -- which is just long enough for
the i386 releng testbed with about 128 MB of RAM to run out of memory
in roughly half of the test runs, but not long enough on my laptop
with 64 GB of RAM to ever reproduce the problem.

Found by:

(a) running the test for 20sec rather than 5sec to amplify the leak;
(b) counting bytes allocated by return addresses of rumpuser_malloc;
(c) chasing that to rump_hypermalloc (culprit) vs uvm_km_alloc;
(d) chasing that to pgctor, uvm_map, uvm_km_kmem_alloc (culprit),
vmapbuf;
(e) then to pool_page_alloc, then to pool_allocator_alloc, then to
pool_grow, then to pool_get, then to pool_cache_get, then to
kmem_zalloc;
(f) finally to the call to kmem_zalloc in rump_lwproc_newlwp, which
at last yielded to my stare.

This instrumentation was extremely ad hoc -- I just created a table
of 4096 entries for each routine, and populated by linear scan with
atomics:

struct {
void *volatile ra;
volatile unsigned long n;
} pool_cache_get_bytes;

void *
kmem_zalloc(size_t size, km_flags_t flags)
{
...
void *const ra = __builtin_return_address(0);
size_t i;
for (i = 0; i < __arraycount(kmem_zalloc_bytes); i++) {
if (pool_cache_get_bytes[i].ra == ra ||
(pool_cache_get_bytes[i].ra == NULL &&
atomic_cas_ptr(&pool_cache_get_bytes[i].ra, NULL,
ra) == NULL)) {
atomic_add_long(&pool_cache_get_bytes[i].n, size);
break;
}
}
...
}

Would be nice to systematize this. Would also be nice to bring back
malloc tags for accounting purposes so you don't need to match up the
kmem_zalloc return addresses with the kmem_free return addresses to
find leaks -- I got lucky here because there were very few return
addresses to piece through.

PR misc/59252: tests/rump/rumpkern/t_sp:sigsafe: out of memory
 1.58 15-Oct-2023  riastradh branches: 1.58.6;
rump: Sprinkle sys/syncobj.h here too.
 1.57 05-Oct-2023  ad Arrange to update cached LWP credentials in userret() rather than during
syscall/trap entry, eliminating a test+branch on every syscall/trap.

This wasn't possible in the 3.99.x timeframe when l->l_cred came about
because there wasn't a reliable/timely way to force an ONPROC LWP running on
a remote CPU into the kernel (which is just about the only new thing in
this scheme).
 1.56 04-Oct-2023  ad Eliminate l->l_biglocks. Originally I think it had a use but these days a
local variable will do.
 1.55 04-Oct-2023  ad Eliminate l->l_ncsw and l->l_nivcsw. From memory think they were added
before we had per-LWP struct rusage; the same is now tracked there.
 1.54 22-Feb-2023  riastradh rump: Nix membar_enter/exit after/before RUMPUSER_LWP_CREATE/DESTROY.

These make no sense and are obviously not needed for any of the
rumpuser implementations in-tree. (For single-threaded fiber and
pth_dummy, no barriers needed; for pth, RUMPUSER_LWP_CREATE/DESTROY
use pthread_mutex so don't need any barriers.)

It _might_ make sense to do membar_release/acquire around just
RUMPUSER_LWP_DESTROY, perhaps if there's some reference-counting
business involved. But if a rumpuser implementation really needs
that it can do it itself.
 1.53 22-Feb-2023  riastradh rumpkern/lwproc.c: Nix trailing whitespace.
 1.52 02-Nov-2022  ozaki-r rump: don't touch p_nlwps without holding p_lock

There was a race condition on p_nlwps. Heavy thread switching could
cause a kernel panic like:
panic: kernel diagnostic assertion "LIST_EMPTY(&p->p_lwps)" failed:
file "(hidden)/src/lib/librump/../../sys/rump/librump/rumpkern/lwproc.c", line 177
 1.51 30-May-2020  ad Fix a lock order reversal that caused hangs.
 1.50 23-May-2020  ad Move proc_lock into the data segment. It was dynamically allocated because
at the time we had mutex_obj_alloc() but not __cacheline_aligned.
 1.49 23-May-2020  ad - Replace pid_table_lock with a lockless lookup covered by pserialize, with
the "writer" side being pid_table expansion. The basic idea is that when
doing an LWP lookup there is usually already a lock held (p->p_lock), or a
spin mutex that needs to be taken (l->l_mutex), and either can be used to
get the found LWP stable and confidently determine that all is correct.

- For user processes LSLARVAL implies the same thing as LSIDL ("not visible
by ID"), and lookup by ID in proc0 doesn't really happen. In-tree the new
state should be understood by top(1), the tty subsystem and so on, and
would attract the attention of 3rd party kernel grovellers in time, so
remove it and just rely on LSIDL.
 1.48 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.47 24-Apr-2020  thorpej lwp0.l_lid needs to be 0.
 1.46 24-Apr-2020  thorpej Adapt to LWP ID allocation changes.
 1.45 19-Apr-2020  thorpej - Only increment nprocs when we're creating a new process, not just
when allocating a PID.
- Per above, proc_free_pid() no longer decrements nprocs. It's now done
in proc_free() right after proc_free_pid().
- Ensure nprocs is accessed using atomics everywhere.
 1.44 15-Feb-2020  ad branches: 1.44.4;
- Move the LW_RUNNING flag back into l_pflag: updating l_flag without lock
in softint_dispatch() is risky. May help with the "softint screwup"
panic.

- Correct the memory barriers around zombies switching into oblivion.
 1.43 08-Jan-2020  ad Hopefully fix some problems seen with MP support on non-x86, in particular
where curcpu() is defined as curlwp->l_cpu:

- mi_switch(): undo the ~2007ish optimisation to unlock curlwp before
calling cpu_switchto(). It's not safe to let other actors mess with the
LWP (in particular l->l_cpu) while it's still context switching. This
removes l->l_ctxswtch.

- Move the LP_RUNNING flag into l->l_flag and rename to LW_RUNNING since
it's now covered by the LWP's lock.

- Ditch lwp_exit_switchaway() and just call mi_switch() instead. Everything
is in cache anyway so it wasn't buying much by trying to avoid saving old
state. This means cpu_switchto() will never be called with prevlwp ==
NULL.

- Remove some KERNEL_LOCK handling which hasn't been needed for years.
 1.42 17-May-2019  ozaki-r branches: 1.42.4;
Implement an aggressive psref leak detector

It is yet another psref leak detector that enables to tell where a leak occurs
while a simpler version that is already committed just tells an occurrence of a
leak.

Investigating of psref leaks is hard because once a leak occurs a percpu list of
psref that tracks references can be corrupted. A reference to a tracking object
is memorized in the list via an intermediate object (struct psref) that is
normally allocated on a stack of a thread. Thus, the intermediate object can be
overwritten on a leak resulting in corruption of the list.

The tracker makes a shadow entry to an intermediate object and stores some hints
into it (currently it's a caller address of psref_acquire). We can detect a
leak by checking the entries on certain points where any references should be
released such as the return point of syscalls and the end of each softint
handler.

The feature is expensive and enabled only if the kernel is built with
PSREF_DEBUG.

Proposed on tech-kern
 1.41 09-Mar-2019  hannken Rumpkernel has its own thread deallocation. Add missing fstrans_lwp_dtor()
to lwproc_freelwp().

PR bin/50350: rump/rumpkern/t_sp/stress_{long,short} fail on Core 2 Quad
 1.40 24-Apr-2016  martin branches: 1.40.18;
Add lwp_find() - verbatim copy from the hard kernel.
 1.39 04-Apr-2016  christos Split p_xstat (composite wait(2) status code, or signal number depending
on context) into:
1. p_xexit: exit code
2. p_xsig: signal number
3. p_sflag & WCOREFLAG bit to indicated that the process core-dumped.

Fix the documentation of the flag bits in <sys/proc.h>
 1.38 08-Feb-2016  pooka Allocate struct cpu_info dynamically. Saves quite a lot of BSS in the
common case and reduces rump kernel memory requirements by 10% or more
in really tiny deployments.
 1.37 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.36 18-Jan-2016  pooka put lwp/proc stuff into the same source module (emul.c -> lwproc.c)
 1.35 18-Apr-2015  pooka Give remote clients struct pmap storage. Although the pmap is unused,
that way we can sure that the pmap macro framework doesn't access all
the wrong places.
 1.34 17-Apr-2015  pooka Don't share file descriptors between proc0 and local clients.
 1.33 03-Apr-2015  pooka Use a different vmspace for rump kernel proc0 and local clients.
While the rump kernel and local clients are by definition in the same
host vmspace, there are subtle differences in how in-kernel code works
in case accessing the kernel vmspace or a user process vmspace.

Problem discovered by riastradh's "read(fd, NULL, 1)" test.
 1.32 21-Jan-2015  pooka Account for lwps so that rump_sys_setuid() doesn't hit a KASSERT when
it tries to reaccount a switching procs lwps.

from Mato Lucina
 1.31 25-Apr-2014  pooka branches: 1.31.4;
Init function pointers to nullop() so that callers don't need a dance
 1.30 16-Apr-2014  pooka Reparent children of a dying lwproc. Fixes wpa_supplicant -B (and
most likely a bunch of other things).
 1.29 09-Apr-2014  pooka implement lwp_create() and a few related interfaces.
main raison d'impalerment: the aio driver
 1.28 16-Mar-2014  pooka branches: 1.28.2;
remove unnecesary verbosity: s/RUMP_CURLWP_MODEL/RUMP_CURLWP/
 1.27 15-Mar-2014  pooka Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.26 16-Dec-2013  pooka Translate return values for emulations, e.g. Linux. For ports without
__HAVE_MINIMAL_EMUL, we simply look up the values from p->p_emul->e_errno.
For ports which cannot afford to keep an extra pointer per emul structure
around, we hope there is __HAVE_SYSCALL_INTERN support and thread the
errno values through p_emuldata. Notably, we cannot alter the syscall
method like most ports do with syscall_intern, since they do it via
p_mdproc, so MI code is not possible there.
 1.25 09-Dec-2013  pooka stop ktrace at process exit
 1.24 27-Oct-2013  pooka Enable holding implicit threads over explicit scheduling points (i.e.
a kernel driver calling rump_lwproc_switch()). Also, correctly handle
curcpu()->ci_curlwp and biglock there.
 1.23 15-May-2013  pooka branches: 1.23.2;
Add RUMPUSER_LWP_CLEAR instead of overloading RUMPUSER_LWP_SET.
This simplifies some alternative hypervisor implementations.
 1.22 02-May-2013  pooka Inform the rump kernel hypervisor of valid thread contexts so
that the implementation can allocate and release storage for them
in an optimal fashion, if necessary.
 1.21 28-Apr-2013  pooka One more mutex which is used as a spin mutex and therefore needs
to be tagged as one, lest the mighty assert smites thee.
 1.20 07-Mar-2013  pooka Support multiple syscall emuls.

Rump kernels with only local clients have it easy, since they have to
support at most two syscall vectors (some calls such as mount/unmount
can be made only through the "native" NetBSD vector). Remote clients
are a whole different tin of green beans. This change addresses local
clients only.
 1.19 13-Nov-2012  pooka kill some -Wunused-but-set-variable warnings
 1.18 01-May-2011  pgoyette branches: 1.18.4; 1.18.14;
More lim_free() fallout
 1.17 08-Mar-2011  pooka Nuke all threads belonging to a process calling exec before allowing
the exec handshake to return.

In addition to being The Right Thing To Do, fixes some nasty
conditions for CLOEXEC fd's (or at least does so in theory, I
couldn't create any problems although I tried).
 1.16 07-Mar-2011  pooka Fill in a functional struct lwp (especially l_mutex) before exposing
it on p_lwps.
 1.15 10-Feb-2011  pooka branches: 1.15.2;
Explicitly zerofill some fields which are not within the boundaries
of p_start/endzero for whatever reasons.

Obviously, this fixes remote physio when running with MALLOC_OPTIONS J.
Otherwise PS_WEXIT is set in struct proc, proc_vmspace_getref() fails,
and copyout_proc() with it.

Reported by njoly
 1.14 10-Feb-2011  pooka copy parent's p_comm when forking (if it exists)
 1.13 28-Jan-2011  pooka Don't NULL out l_cpu, l_stat is the new rumpkernel way too.
 1.12 28-Jan-2011  pooka Some lwp-walkers expect the correct value for l_stat, so use a flag
in l_flag instead of l_stat for the purpose of flagging lwps in a
dying proc.
 1.11 28-Jan-2011  pooka fill in a default name for p_comm
 1.10 13-Jan-2011  pooka branches: 1.10.2; 1.10.4;
Introduce RUMP_LOCALPROC_P() macro and use it.
 1.9 12-Jan-2011  pooka When the client and the rump kernel are the same host process, all
threads blocking in the kernel automatically exit when the process
exists. However, for the sysproxy case this does not hold.
Typically it's ~harmless, but e.g. in the case of socket binding
following by poll it gets annoying.

Introduce sysproxy procexit, which wakes up all threads blocking
on a condition when a process's communication socket is closed.
The code is a little different from the regular kernel simply
because in a rump kernel l_mutex is not available at all times
(this is because scheduling happens on every kernel entry and exit,
and that path must be kept lockless for any reasonable performance).
Instead, use gating which makes sure all threads are either out of
the cv code or suspended in a well-known state. Then, wake up the
threads and tell them to get the hell out of our galaxy.
 1.8 06-Jan-2011  pooka Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)
 1.7 02-Jan-2011  pooka There is a use case where preserving the parent's fd table is
relevant, so to accommodate that change rump_lwproc_newproc() to
rump_lwproc_rfork(). The new interface has the rfork() fd table
semantics. The equivalent of rump_lwproc_newproc() is
rump_lwproc_rfork(RUMP_RFCFDG).
 1.6 22-Nov-2010  pooka Support physio for remote processes.
==> add support for remote vmspace vmapbuf/vunmapbuf
==> add proper support for copyin/out_vmspace
==> add support for remote vmspace uvm_io
==> add support for non-curproc rumpuser_sp_copyin/out
==> store remote context in vm_map->pmap instead of
pthread_specificdata

In short, makes read/write of most (all?) block devices work from
a remote rump client via rump syscalls.
 1.5 17-Nov-2010  pooka cleanup some old garbage
 1.4 15-Nov-2010  pooka Add a new signal model RUMP_SIGMODEL_RECORD which records all
signals which are posted to a process.
 1.3 29-Oct-2010  pooka Attach implicit threads to initproc instead of proc0. This way
applications which alter, by purpose or by accident, the uid in an
implicit thread are don't affect kernel threads.

from discussion with njoly
 1.2 01-Sep-2010  pooka branches: 1.2.2; 1.2.4;
proper panic for trying to release implicit lwp
 1.1 01-Sep-2010  pooka Implement rump_lwproc: the new lwp/proc management routines for
rump. These move the management of the pid/lwpid space from the
application into the kernel, make code more robust, and make it
possible to attach multiple lwp's to non-proc0 processes.
 1.2.4.3 06-Nov-2010  uebayasi Sync with HEAD.
 1.2.4.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.2.4.1 01-Sep-2010  uebayasi file lwproc.c was added on branch uebayasi-xip on 2010-10-22 07:22:49 +0000
 1.2.2.2 09-Oct-2010  yamt sync with head
 1.2.2.1 01-Sep-2010  yamt file lwproc.c was added on branch yamt-nfs-mp on 2010-10-09 03:32:43 +0000
 1.10.4.2 17-Feb-2011  bouyer Sync with HEAD
 1.10.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.10.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.15.2.4 31-May-2011  rmind sync with head
 1.15.2.3 21-Apr-2011  rmind sync with head
 1.15.2.2 05-Mar-2011  rmind sync with head
 1.15.2.1 10-Feb-2011  rmind file lwproc.c was added on branch rmind-uvmplock on 2011-03-05 20:56:15 +0000
 1.18.14.4 03-Dec-2017  jdolecek update from HEAD
 1.18.14.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.18.14.2 23-Jun-2013  tls resync from head
 1.18.14.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.18.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.18.4.1 16-Jan-2013  yamt sync with (a bit old) head
 1.23.2.1 18-May-2014  rmind sync with head
 1.28.2.1 10-Aug-2014  tls Rebase.
 1.31.4.5 29-May-2016  skrll Sync with HEAD
 1.31.4.4 22-Apr-2016  skrll Sync with HEAD
 1.31.4.3 19-Mar-2016  skrll Sync with HEAD
 1.31.4.2 06-Jun-2015  skrll Sync with HEAD
 1.31.4.1 06-Apr-2015  skrll Sync with HEAD
 1.40.18.2 21-Apr-2020  martin Sync with HEAD
 1.40.18.1 10-Jun-2019  christos Sync with HEAD
 1.42.4.2 29-Feb-2020  ad Sync with head.
 1.42.4.1 17-Jan-2020  ad Sync with head.
 1.44.4.2 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.44.4.1 20-Apr-2020  bouyer Sync with HEAD
 1.58.6.1 02-Aug-2025  perseant Sync with HEAD
 1.22 17-Jun-2015  pooka Remove unreal allocators, unconditionally use subr_{kmem,pool}.

Will, with other work, allow to tighten the memory allocation hypercall
specification to page-granularity allocations in the future.
 1.21 27-Apr-2013  pooka branches: 1.21.12;
* treat kern_malloc.c as an unreal allocator (it's so lightweight)
* get rid of the rumpuser_realloc() hypercall
* pass size to rumpuser_free()
 1.20 10-Mar-2013  pooka Use kern_malloc.c instead of the relegated allocators in memalloc.c.
Previously this didn't make sense due to the use of kmem_map, but the
new malloc is more dynamic and puts sense into using it.
 1.19 10-Mar-2013  pooka Always include subr_vmem.c, even with RUMP_UNREAL_ALLOCATORS=yes
(previously it was just missing in that case).

Record wchan to unreal pool_init() to avoid memory leak warning.
 1.18 20-Jul-2012  pooka branches: 1.18.2;
Make it possible to select between real and unreal allocators from
make. Plus some gratuitous renaming.
 1.17 20-Jul-2012  pooka make unreal allocators work again
 1.16 05-Jun-2012  jym Now that pool_cache_invalidate() is synchronous and can handle per-CPU
caches, merge together pool_drain_start() and pool_drain_end() into

bool pool_drain(struct pool **ppp);

"bool" value indicates whether reclaiming was fully done (true) or not (false)
"ppp" will contain a pointer to the pool that was drained (optional).

See http://mail-index.netbsd.org/tech-kern/2012/06/04/msg013287.html
 1.15 29-Apr-2012  dsl Remove everything to do with 'struct malloc_type' and the malloc link_set.
To make code in 'external' (etc) still compile, MALLOC_DECLARE() still
has to generate something of type 'struct malloc_type *', with
normal optimisation gcc generates a compile-time 0.
MALLOC_DEFINE() and friends have no effect.
Fix one or two places where the code would no longer compile.
 1.14 29-Apr-2012  dsl Remove the unused 'struct malloc_type' args to kern_malloc/realloc/free
The M_xxx arg is left on the calls to malloc() and free(),
maybe they could be converted to an enumeration and just saved in
the malloc header (for deep diag use).
Remove the malloc_type from mbuf extension.
Fixes rump build as well.
Welcome to 6.99.6
 1.13 29-Apr-2012  rmind Fix RUMP build.
 1.12 04-Feb-2012  para make acorn26 compile by fixing up subpage pool allocations

ok: riz@
 1.11 11-Jul-2010  pooka branches: 1.11.8; 1.11.12;
Reflect change to pool_drain_end. Makes -DRUMP_USE_UNREAL_ALLOCATORS
compile (and work) again.
 1.10 08-Jul-2010  pooka Emulate malloc(9) a little better by panicking if a should-not-fail
allocation fails. We could invoke the pagedaemon here, but since
malloc(9) is panicky when it runs out of kmem_map, let's do the
"same".
 1.9 14-Jun-2010  pooka Make it possible to define an upper limit for memory consumed by
the rump kernel by specifying RUMP_MEMLIMIT. In case allocation
over that limit is attempted, essentially pool reclaim and uvm_wait()
is done. The default is to allow to allocate as much as the host
will give.

XXX: uvm_km_alloc and malloc(9) do not currently conform. the
former is easy, the latter requires kern_malloc.c (rump malloc is
currently directly relegated to host malloc).
 1.8 03-Jun-2010  pooka Don't use rumpuser_malloc() directly.
 1.7 03-Jun-2010  pooka Implement a sort-of pagedaemon: adjust all memory allocators to go
through an in-rumpkernel hypermemory allocator which knows it should
kick the pagedaemon and block in case ``waitok'' memory allocation
fails.

This allows us to recover from some out-of-memory situations.
Realworld'istically speaking (as opposed to whatever "should be"
theory), these OOM situations will happen extremely rarely if ever
when our hypervisor is a regular process. Speculatively, this
should be useful for other types of hosts.

issues remaining:
* the hypervisor does not know how to reclaim kernel memory (and
for the reason I stated above, I'm not sure if it makes sense
to teach the current implementation about that)
* vfs memory (buffers, vm object pages etc.) is not reclaimed
 1.6 01-Jun-2010  pooka Don't pass "canfail" down to rumpuser_malloc -- there's quite little
we can do with that info way down there. Instead, pass alignment.
Implement rumpuser_malloc() with posix_memalign().
 1.5 15-Jan-2010  pooka branches: 1.5.2; 1.5.4; 1.5.6;
Use subr_percpu.c instead of homegrown implementation. ...except
when using malloc(3)-relegated allocators (happens in production
e.g. on Linux), since subr_percpu.c uses vmem and i don't want to
reimplement vmem.
 1.4 11-Jan-2010  stacktic Fixed typo.
 1.3 23-Dec-2009  stacktic Fixed build when using unreal allocators.
 1.2 27-Nov-2009  pooka Now that Makefile.rump was changed and everything gets built in
update builds too, flip the allocator define to prefer the kernel
pool/kmem instead of malloc(3). Use malloc(3) only if
RUMP_USE_UNREAL_ALLOCATORS is defined.
 1.1 04-Nov-2009  pooka Pull all relegating memory allocators under a common roof in memalloc.c
(forgot to commit the new file)
 1.5.6.2 05-Mar-2011  rmind sync with head
 1.5.6.1 03-Jul-2010  rmind sync with head
 1.5.4.3 11-Aug-2010  yamt sync with head.
 1.5.4.2 11-Mar-2010  yamt sync with head
 1.5.4.1 15-Jan-2010  yamt file memalloc.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.5.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.11.12.3 02-Jun-2012  mrg sync to latest -current.
 1.11.12.2 29-Apr-2012  mrg sync to latest -current.
 1.11.12.1 18-Feb-2012  mrg merge to -current.
 1.11.8.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.11.8.3 30-Oct-2012  yamt sync with head
 1.11.8.2 23-May-2012  yamt sync with head.
 1.11.8.1 17-Apr-2012  yamt sync with head
 1.18.2.2 03-Dec-2017  jdolecek update from HEAD
 1.18.2.1 23-Jun-2013  tls resync from head
 1.21.12.1 22-Sep-2015  skrll Sync with HEAD
 1.26 04-Nov-2009  pooka misc_stub and emul have been the same thing for a looong time now,
so just move the few remaining routines in misc_stub to emul.
 1.25 04-Nov-2009  pooka Implement yield()/preempt() now that there is a CPU scheduler.
 1.24 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.23 02-Oct-2009  elad First part of secmodel cleanup and other misc. changes:

- Separate the suser part of the bsd44 secmodel into its own secmodel
and directory, pending even more cleanups. For revision history
purposes, the original location of the files was

src/sys/secmodel/bsd44/secmodel_bsd44_suser.c
src/sys/secmodel/bsd44/suser.h

- Add a man-page for secmodel_suser(9) and update the one for
secmodel_bsd44(9).

- Add a "secmodel" module class and use it. Userland program and
documentation updated.

- Manage secmodel count (nsecmodels) through the module framework.
This eliminates the need for secmodel_{,de}register() calls in
secmodel code.

- Prepare for secmodel modularization by adding relevant module bits.
The secmodels don't allow auto unload. The bsd44 secmodel depends
on the suser and securelevel secmodels. The overlay secmodel depends
on the bsd44 secmodel. As the module class is only cosmetic, and to
prevent ambiguity, the bsd44 and overlay secmodels are prefixed with
"secmodel_".

- Adapt the overlay secmodel to recent changes (mainly vnode scope).

- Stop using link-sets for the sysctl node(s) creation.

- Keep sysctl variables under nodes of their relevant secmodels. In
other words, don't create duplicates for the suser/securelevel
secmodels under the bsd44 secmodel, as the latter is merely used
for "grouping".

- For the suser and securelevel secmodels, "advertise presence" in
relevant sysctl nodes (sysctl.security.models.{suser,securelevel}).

- Get rid of the LKM preprocessor stuff.

- As secmodels are now modules, there's no need for an explicit call
to secmodel_start(); it's handled by the module framework. That
said, the module framework was adjusted to properly load secmodels
early during system startup.

- Adapt rump to changes: Instead of using empty stubs for securelevel,
simply use the suser secmodel. Also replace secmodel_start() with a
call to secmodel_suser_start().

- 5.99.20.

Testing was done on i386 ("release" build). Spearated module_init()
changes were tested on sparc and sparc64 as well by martin@ (thanks!).

Mailing list reference:

http://mail-index.netbsd.org/tech-kern/2009/09/25/msg006135.html
 1.22 02-May-2009  pooka Do not include securelevel, it includes too many dependencies on
vfs in its current form.
 1.21 29-Mar-2009  pooka include subr_evcnt
 1.20 19-Mar-2009  pooka Simple syscall_establish() support.
(should use kernel sources version, but it's buried inside a
module with a lot of junk in it, so shortcut for now)
 1.19 18-Mar-2009  pooka Support kqueue in the rump virtual kernel.
 1.18 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.17 01-Jan-2009  pooka branches: 1.17.2;
Define MODULAR for rump core components. This enables module
loading via the kernel module framework (instead of dlopen()).
For now it only works on amd64 and i386, but for the rest it should
just be a matter of including the relevant kobj_machdep.c modules
from the kernel sources.
 1.16 18-Dec-2008  pooka __KERNEL_RCSID
 1.15 26-Nov-2008  pooka Add a few symbols required by nfsd
 1.14 19-Nov-2008  ad +evcnt_detach
 1.13 15-Oct-2008  ad branches: 1.13.2;
- Rename cpu_lookup_byindex() to cpu_lookup(). The hardware ID isn't of
interest to MI code. No functional change.
- Change /dev/cpu to operate on cpu index, not hardware ID. Now cpuctl
shouldn't print confused output.
 1.12 02-Oct-2008  pooka Remove rumpuser_yield(). Not only doesn't it really make sense
here, some kind soul made it completely empty.
 1.11 01-Aug-2008  pooka support real sysctls
 1.10 28-Jun-2008  chris branches: 1.10.2;
Add sysctl_teardown stub, moves the build past breakage in rump.
 1.9 04-May-2008  ad branches: 1.9.2; 1.9.4;
Pull in the kernel module stuff so that rump can set up built-in modules.
 1.8 11-Apr-2008  ad branches: 1.8.2; 1.8.4;
+evcnt_attach_dynamic
 1.7 27-Feb-2008  ad +cpu_lookup_byindex
 1.6 16-Jan-2008  ad branches: 1.6.2; 1.6.6;
Pull in my modules code for review/test/hacking.
 1.5 09-Jan-2008  he Declare nbpg if we're building for sparc, and initialize to the
smallest sparc pagesize. This should deal with the IOCPARM_MAX
build problem, which occurs on sparc because various models have
different page size, so it's run-time determined instead.

pooka says that rump doesn't use ioctl(), so the value is apparently
of no consequence.
 1.4 07-Jan-2008  ad Patch up sysctl locking:

- Lock processes, credentials, filehead etc correctly.
- Acquire a read hold on sysctl_treelock if only doing a query.
- Don't wire down the output buffer. It doesn't work correctly and the code
regularly does long term sleeps with it held - it's not worth it.
- Don't hold locks other than sysctl_lock while doing copyout().
- Drop sysctl_lock while doing copyout / allocating memory in a few places.
- Don't take kernel_lock for sysctl.
- Fix a number of bugs spotted along the way
 1.3 14-Aug-2007  pooka branches: 1.3.2; 1.3.4; 1.3.6; 1.3.8; 1.3.14; 1.3.16; 1.3.22;
Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.2 09-Aug-2007  pooka Add some stubs for lfs.
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file misc_stub.c was added on branch matt-mips64 on 2007-08-05 22:28:09 +0000
 1.3.22.3 19-Jan-2008  bouyer Sync with HEAD
 1.3.22.2 10-Jan-2008  bouyer Sync with HEAD
 1.3.22.1 08-Jan-2008  bouyer Sync with HEAD
 1.3.16.1 18-Feb-2008  mjf Sync with HEAD.
 1.3.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.3.14.1 14-Aug-2007  joerg file misc_stub.c was added on branch jmcneill-pm on 2007-11-02 12:43:52 +0000
 1.3.8.4 17-Mar-2008  yamt sync with head.
 1.3.8.3 21-Jan-2008  yamt sync with head
 1.3.8.2 03-Sep-2007  yamt sync with head.
 1.3.8.1 14-Aug-2007  yamt file misc_stub.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:31 +0000
 1.3.6.2 23-Mar-2008  matt sync with HEAD
 1.3.6.1 09-Jan-2008  matt sync with HEAD
 1.3.4.2 20-Aug-2007  ad Sync with HEAD.
 1.3.4.1 14-Aug-2007  ad file misc_stub.c was added on branch vmlocking on 2007-08-20 22:07:28 +0000
 1.3.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.3.2.1 14-Aug-2007  skrll file misc_stub.c was added on branch nick-csl-alignment on 2007-08-15 13:50:39 +0000
 1.6.6.6 17-Jan-2009  mjf Sync with HEAD.
 1.6.6.5 05-Oct-2008  mjf Sync with HEAD.
 1.6.6.4 28-Sep-2008  mjf Sync with HEAD.
 1.6.6.3 29-Jun-2008  mjf Sync with HEAD.
 1.6.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.6.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.6.2.1 24-Mar-2008  keiichi sync with head.
 1.8.4.3 11-Mar-2010  yamt sync with head
 1.8.4.2 04-May-2009  yamt sync with head.
 1.8.4.1 16-May-2008  yamt sync with head.
 1.8.2.1 18-May-2008  yamt sync with head.
 1.9.4.1 03-Jul-2008  simonb Sync with head.
 1.9.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.9.2.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.10.2.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.10.2.1 19-Oct-2008  haad Sync with HEAD.
 1.13.2.2 28-Apr-2009  skrll Sync with HEAD.
 1.13.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.17.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.2 08-Aug-2007  pooka * compile param.c
* move opts to a separate directory
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file opt_ddb.h was added on branch matt-mips64 on 2007-08-05 22:28:09 +0000
 1.2 08-Aug-2007  pooka * compile param.c
* move opts to a separate directory
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file opt_multiprocessor.h was added on branch matt-mips64 on 2007-08-05 22:28:10 +0000
 1.2 08-Aug-2007  pooka * compile param.c
* move opts to a separate directory
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file opt_revcache.h was added on branch matt-mips64 on 2007-08-05 22:28:10 +0000
 1.2 08-Aug-2007  pooka * compile param.c
* move opts to a separate directory
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file opt_vnode_lockdebug.h was added on branch matt-mips64 on 2007-08-05 22:28:10 +0000
 1.7 15-Jan-2010  pooka Use subr_percpu.c instead of homegrown implementation. ...except
when using malloc(3)-relegated allocators (happens in production
e.g. on Linux), since subr_percpu.c uses vmem and i don't want to
reimplement vmem.
 1.6 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.5 18-Mar-2009  cegger branches: 1.5.2;
Ansify function definitions w/o arguments. Generated with sed.
 1.4 29-Dec-2008  pooka branches: 1.4.2; 1.4.4;
Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.
 1.3 18-Dec-2008  pooka __KERNEL_RCSID
 1.2 11-Oct-2008  pooka branches: 1.2.2; 1.2.4;
Include <machine/cpu> for the benefit of archs where it doesn't happen
accidentally automagically.

Pointed out by Havard.
 1.1 10-Oct-2008  pooka branches: 1.1.2;
Add a simple percpu implementation (which isn't actually percpu at
all, since we don't currently have the notion of "real" cpu in
rump...but that's beyond the point).
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 10-Oct-2008  skrll file percpu.c was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2.4.2 28-Apr-2009  skrll Sync with HEAD.
 1.2.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.2.2.2 19-Oct-2008  haad Sync with HEAD.
 1.2.2.1 11-Oct-2008  haad file percpu.c was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.4.4.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.4.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.4.2.1 29-Dec-2008  mjf file percpu.c was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.5.2.3 11-Mar-2010  yamt sync with head
 1.5.2.2 04-May-2009  yamt sync with head.
 1.5.2.1 18-Mar-2009  yamt file percpu.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.26 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.25 02-Mar-2011  pooka branches: 1.25.4; 1.25.14; 1.25.18;
We track page modified info with PG_CLEAN, so make clear_modify
return false. This makes rump lfs unmount work on platforms which
use the pmap stub (i.e. non-x86, which already returned false here).
Otherwise, lfs would hang itself trying to flush some buffers but
couldn't fill a segment and therefore wouldn't actually write
anything.
 1.24 16-Jun-2010  pooka branches: 1.24.2; 1.24.4;
Reinstate the blanket pmap.h for archs which do not conform to the
kernel ABI (i.e. not i386 or amd64). Due to the "half function,
half macro, all noodles" nature of pmap.h, it's too entangling and
too brittle to keep up with an ifdeffy MI implementation.
 1.23 09-Nov-2009  nakayama branches: 1.23.2; 1.23.4;
- make this compile on sparc.
- shrink blanks to fit in 80 columns.
 1.22 07-Nov-2009  dsl Fix stub prototype
 1.21 22-Oct-2009  rmind Simplify pmap_remove() a little by avoiding pmap_do_remove() layer, since
possibility to skip wired mappings is not needed anymore. Apart from that,
no functional differences are intended.
 1.20 18-Sep-2009  pooka vax macro magic requires Sysmap (untested).
XXX: I should add the blanket userspace pmap back for vax, its
pmap.h just has too many inlines and macros for this to ever work.
 1.19 16-Aug-2009  skrll s/int/u_int/ for flags in pmap_enter and deal with this in rump.

Hi cegger.
 1.18 16-Aug-2009  skrll KNF
 1.17 10-Aug-2009  martin Use __sparc_v9__ instead of __sparc64__ - this hack is due to arch dependend
pmap peculiarities, and does not cover sparc64 code when compiled
with -m32.
 1.16 09-Aug-2009  skrll Fix vax.

Built by default options really should be tested better.
 1.15 08-Aug-2009  pooka arm32 (but not arm26) wants to be different and #define pmap_remove()
as pmap_do_remove(). Compensate.
 1.14 06-Aug-2009  pooka Add suicidal stubs for pmap_enter() and pmap_remove(). Hopefully
the MD bits for all the glorious archs went right.
 1.13 30-Apr-2009  skrll Update to deal with the new hppa pmap.
 1.12 23-Jan-2009  pooka branches: 1.12.2;
Add a compile-time option to use kmem/vmem/pools from the kernel
sources instead of homegrown allocators. Default to "on", even
though they appear to be a few percent slower at least on short
jobs (e.g. untar to tmpfs).
 1.11 17-Jan-2009  pooka #ifdef __powerpc__ -> #ifdef PPC_OEA in previous. Forgot that powerpc
has 57 billion different pmaps.
(not compile-tested for a full build)
 1.10 14-Jan-2009  pooka Stub out some ppc routines to allow the evbppc build to pass through here.
 1.9 18-Dec-2008  pooka __KERNEL_RCSID
 1.8 15-Dec-2008  pooka Also assign a value to pmap_extract_p.
(3rd time's the charm, maybe i finally got it right?)
 1.7 15-Dec-2008  pooka Fix another error in sparc pmap_extract_p, as prompted by mrg
 1.6 13-Dec-2008  pooka * fix pmap_extract() prototype
* sparc64 also defines __sparc__. deal with it
 1.5 12-Dec-2008  pooka Add a few MD ifdefs into the rump pmap stubs to enable us to get
rid of the local pmap.h and unify the pmap ABI with the kernel.
(XXX: compiles but doesn't work on vax)

Thanks once again to Greg Oster for helping with testbuilds.
 1.4 10-Dec-2008  pooka Make kernel_pmap_ptr a const. Requested by steve_martin.
 1.3 09-Dec-2008  pooka Make pmap_kernel() a MI macro for struct pmap *kernel_pmap_ptr,
which is now the "API" provided by the pmap module. pmap_kernel()
remains as the syntactic sugar.

Bonus cosmetics round: move all the pmap_t pointer typedefs into
uvm_pmap.h.

Thanks to Greg Oster for providing cpu muscle for doing test builds.
 1.2 15-Oct-2008  pooka branches: 1.2.2;
Add support bits necessary for rumpnet functionality.
 1.1 09-Aug-2007  pooka branches: 1.1.2; 1.1.4; 1.1.8; 1.1.14; 1.1.30; 1.1.34; 1.1.40;
* compile subr_time.c from kern/
* some pmap stubs
 1.1.40.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.40.1 19-Oct-2008  haad Sync with HEAD.
 1.1.34.4 11-Aug-2010  yamt sync with head.
 1.1.34.3 11-Mar-2010  yamt sync with head
 1.1.34.2 19-Aug-2009  yamt sync with head.
 1.1.34.1 04-May-2009  yamt sync with head.
 1.1.30.1 17-Jan-2009  mjf Sync with HEAD.
 1.1.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.1.14.1 09-Aug-2007  joerg file pmap_stub.c was added on branch jmcneill-pm on 2007-11-02 12:43:52 +0000
 1.1.8.2 03-Sep-2007  yamt sync with head.
 1.1.8.1 09-Aug-2007  yamt file pmap_stub.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:32 +0000
 1.1.4.2 20-Aug-2007  ad Sync with HEAD.
 1.1.4.1 09-Aug-2007  ad file pmap_stub.c was added on branch vmlocking on 2007-08-20 22:07:29 +0000
 1.1.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.1.2.1 09-Aug-2007  skrll file pmap_stub.c was added on branch nick-csl-alignment on 2007-08-15 13:50:39 +0000
 1.2.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.2.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.12.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.23.4.2 05-Mar-2011  rmind sync with head
 1.23.4.1 03-Jul-2010  rmind sync with head
 1.23.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.24.4.1 05-Mar-2011  bouyer Sync with HEAD
 1.24.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.25.18.1 18-May-2014  rmind sync with head
 1.25.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.25.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.16 04-Nov-2009  pooka Pull all relegating memory allocators under a common roof in memalloc.c
 1.15 13-Sep-2009  pooka remove pool link set attach code
 1.14 03-Jun-2009  pooka pool_prime emulation
 1.13 24-Apr-2009  pooka * init pool linksets, makes proplib work. reported by Arnaud Ysmal.
(linksets, sigh)
* reduce #ifdef for RUMP_USE_REAL_ALLOCATORS
 1.12 23-Jan-2009  pooka branches: 1.12.2;
Add a compile-time option to use kmem/vmem/pools from the kernel
sources instead of homegrown allocators. Default to "on", even
though they appear to be a few percent slower at least on short
jobs (e.g. untar to tmpfs).
 1.11 18-Dec-2008  pooka __KERNEL_RCSID
 1.10 14-Oct-2008  pooka branches: 1.10.2;
score some stubs
 1.9 04-Aug-2008  pooka Add support for using real kmem/vmem. Don't enable it by default,
though, since it a) is a lot of unnecessary indirection in rump
b) requires callouts which are so far unimplemented.
 1.8 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.7 23-Mar-2008  rmind branches: 1.7.4; 1.7.6; 1.7.8; 1.7.10;
pool_cache_init: Remove the alignment of pc according to the CACHE_LINE_SIZE,
which is not useful for rump. This fixes the pool_cache_destroy() which was
freeing the modified pointer, instead of the original one.

OK by <pooka>.
 1.6 03-Jan-2008  pooka branches: 1.6.6;
Theoretically this is supposed to be interchangeable with real
kernel code. Use kmem_alloc/free instead of some wily homerolled
rump interfaces for memory allocation.
 1.5 02-Jan-2008  pooka Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.4 07-Nov-2007  pooka branches: 1.4.6;
fix pool cache line alignment code (hi ad)
 1.3 07-Nov-2007  ad Merge from vmlocking:

- pool_cache changes.
- Debugger/procfs locking fixes.
- Other minor changes.
 1.2 14-Aug-2007  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.8; 1.2.12; 1.2.14; 1.2.16;
Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file pool.c was added on branch matt-mips64 on 2007-08-05 22:28:10 +0000
 1.2.16.2 18-Feb-2008  mjf Sync with HEAD.
 1.2.16.1 19-Nov-2007  mjf Sync with HEAD.
 1.2.14.3 11-Nov-2007  joerg Sync with HEAD.
 1.2.14.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.2.14.1 14-Aug-2007  joerg file pool.c was added on branch jmcneill-pm on 2007-11-02 12:43:53 +0000
 1.2.12.1 13-Nov-2007  bouyer Sync with HEAD
 1.2.8.5 24-Mar-2008  yamt sync with head.
 1.2.8.4 21-Jan-2008  yamt sync with head
 1.2.8.3 15-Nov-2007  yamt sync with head.
 1.2.8.2 03-Sep-2007  yamt sync with head.
 1.2.8.1 14-Aug-2007  yamt file pool.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:32 +0000
 1.2.6.2 09-Jan-2008  matt sync with HEAD
 1.2.6.1 08-Nov-2007  matt sync with -HEAD
 1.2.4.2 20-Aug-2007  ad Sync with HEAD.
 1.2.4.1 14-Aug-2007  ad file pool.c was added on branch vmlocking on 2007-08-20 22:07:29 +0000
 1.2.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.2.2.1 14-Aug-2007  skrll file pool.c was added on branch nick-csl-alignment on 2007-08-15 13:50:40 +0000
 1.4.6.2 08-Jan-2008  bouyer Sync with HEAD
 1.4.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.6.6.3 17-Jan-2009  mjf Sync with HEAD.
 1.6.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.6.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.7.10.1 19-Oct-2008  haad Sync with HEAD.
 1.7.8.1 31-Jul-2008  simonb Sync with head.
 1.7.6.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.7.4.4 11-Mar-2010  yamt sync with head
 1.7.4.3 16-Sep-2009  yamt sync with head
 1.7.4.2 20-Jun-2009  yamt sync with head
 1.7.4.1 04-May-2009  yamt sync with head.
 1.10.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.10.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.10.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.12.2.2 23-Jul-2009  jym Sync with HEAD.
 1.12.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.12 02-Dec-2014  pooka branches: 1.12.16;
most of this manpage moved to rumpkernel.7, so simplify a lot
 1.11 09-Nov-2014  pooka branches: 1.11.2;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.10 27-Aug-2010  pooka Move the manpage from the kernel sources into lib, 'cause that's
where it's used.
 1.9 26-Aug-2010  pooka update a bit
 1.8 11-May-2010  pooka drop silly backronym. just rump.
 1.7 02-May-2010  pooka ABC2010 paper
 1.6 19-Oct-2009  pooka branches: 1.6.2; 1.6.4;
add Arnaud's EuroBSDCon paper
 1.5 30-Jun-2009  pooka add reference
 1.4 28-May-2009  wiz Use Nx for NetBSD.
 1.3 24-May-2009  pooka Add BSDCan 2009 paper to SEE ALSO.
 1.2 22-Mar-2009  pooka branches: 1.2.2;
reference to ABC2009 paper
 1.1 28-Jul-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.10; 1.1.16;
Backup some manual page sketches lest I delete the wrong source tree.
 1.1.16.2 23-Jul-2009  jym Sync with HEAD.
 1.1.16.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.1.10.1 28-Apr-2009  skrll Sync with HEAD.
 1.1.8.2 19-Oct-2008  haad Sync with HEAD.
 1.1.8.1 28-Jul-2008  haad file rump.3 was added on branch haad-dm on 2008-10-19 22:18:06 +0000
 1.1.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.1.6.1 28-Jul-2008  mjf file rump.3 was added on branch mjf-devfs2 on 2008-09-28 10:41:03 +0000
 1.1.4.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.1.4.1 28-Jul-2008  wrstuden file rump.3 was added on branch wrstuden-revivesa on 2008-09-18 04:37:04 +0000
 1.1.2.2 31-Jul-2008  simonb Sync with head.
 1.1.2.1 28-Jul-2008  simonb file rump.3 was added on branch simonb-wapbl on 2008-07-31 04:51:05 +0000
 1.2.2.7 09-Oct-2010  yamt sync with head
 1.2.2.6 11-Aug-2010  yamt sync with head.
 1.2.2.5 11-Mar-2010  yamt sync with head
 1.2.2.4 18-Jul-2009  yamt sync with head.
 1.2.2.3 20-Jun-2009  yamt sync with head
 1.2.2.2 04-May-2009  yamt sync with head.
 1.2.2.1 22-Mar-2009  yamt file rump.3 was added on branch yamt-nfs-mp on 2009-05-04 08:14:29 +0000
 1.6.4.2 05-Mar-2011  rmind sync with head
 1.6.4.1 30-May-2010  rmind sync with head
 1.6.2.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.6.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.11.2.1 06-Apr-2015  skrll Sync with HEAD
 1.12.16.2 03-Dec-2017  jdolecek update from HEAD
 1.12.16.1 02-Dec-2014  jdolecek file rump.3 was added on branch tls-maxphys on 2017-12-03 11:39:16 +0000
 1.361 05-Oct-2023  ad Arrange to update cached LWP credentials in userret() rather than during
syscall/trap entry, eliminating a test+branch on every syscall/trap.

This wasn't possible in the 3.99.x timeframe when l->l_cred came about
because there wasn't a reliable/timely way to force an ONPROC LWP running on
a remote CPU into the kernel (which is just about the only new thing in
this scheme).
 1.360 23-Sep-2023  ad Repply this change with a couple of bugs fixed:

- Do away with separate pool_cache for some kernel objects that have no special
requirements and use the general purpose allocator instead. On one of my
test systems this makes for a small (~1%) but repeatable reduction in system
time during builds presumably because it decreases the kernel's cache /
memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
 1.359 12-Sep-2023  ad Back out recent change to replace pool_cache with then general allocator.
Will return to this when I have time again.
 1.358 10-Sep-2023  ad - Do away with separate pool_cache for some kernel objects that have no special
requirements and use the general purpose allocator instead. On one of my
test systems this makes for a small (~1%) but repeatable reduction in system
time during builds presumably because it decreases the kernel's cache /
memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
 1.357 05-Aug-2023  riastradh Revert "rump: Set mp_online = true and start threads _after_ cold = 0."

This breaks some tests, e.g. dev/scsipi/t_cd:noisyeject, which relies
on config_finalize to wait for driver threads. Trouble is, the
actual setting of cold=0 happens near the call to config_finalize in
RUMP__FACTION_DEV. Need to think harder about this.
 1.356 05-Aug-2023  riastradh rump: Set mp_online = true and start threads _after_ cold = 0.

Otherwise we may have threads running while cold, which is a
contradiction in terms.

Deferring mp_online = true is necessary because things like xcall(9)
use rely on it to decide whether to wait for threads on other CPUs.
 1.355 28-Mar-2022  christos no need to include suser; it gets autoloaded as a module.
 1.354 28-Mar-2022  riastradh sys: Split struct device into a private device_impl.h.

Include this only inside autoconf itself, and a few files that abuse
autoconf in ways I can't confidently make easy fixes for.

XXX kernel ABI change requires bump -- no more use of struct device
internals allowed, previously done by some drivers
 1.353 17-Jan-2021  chs rump_component_init() is called recursively, so LIST_FOREACH_SAFE is not
actually safe, since the recursive calls can result in elements other than
the current element being removed from the list. instead use an explicit
marker element to do safe list traversal.
 1.352 16-Jan-2021  chs remove a const to allow building with QUEUEDEBUG.
 1.351 06-Dec-2020  skrll Fix build after interval timers refectoring by thorpej@
 1.350 04-Nov-2020  christos PR/55781: Ruslan Nikolaev: rump_init() does differentiate when all CPUs are
initialized
 1.349 11-Jun-2020  kamil branches: 1.349.2;
Follow the syscall() logic and mask unsupported syscall ranges in rump

Avoids invalid pointer dereference from too large syscall numbers.
 1.348 23-May-2020  ad Move proc_lock into the data segment. It was dynamically allocated because
at the time we had mutex_obj_alloc() but not __cacheline_aligned.
 1.347 30-Apr-2020  riastradh Rewrite entropy subsystem.

Primary goals:

1. Use cryptography primitives designed and vetted by cryptographers.
2. Be honest about entropy estimation.
3. Propagate full entropy as soon as possible.
4. Simplify the APIs.
5. Reduce overhead of rnd_add_data and cprng_strong.
6. Reduce side channels of HWRNG data and human input sources.
7. Improve visibility of operation with sysctl and event counters.

Caveat: rngtest is no longer used generically for RND_TYPE_RNG
rndsources. Hardware RNG devices should have hardware-specific
health tests. For example, checking for two repeated 256-bit outputs
works to detect AMD's 2019 RDRAND bug. Not all hardware RNGs are
necessarily designed to produce exactly uniform output.

ENTROPY POOL

- A Keccak sponge, with test vectors, replaces the old LFSR/SHA-1
kludge as the cryptographic primitive.

- `Entropy depletion' is available for testing purposes with a sysctl
knob kern.entropy.depletion; otherwise it is disabled, and once the
system reaches full entropy it is assumed to stay there as far as
modern cryptography is concerned.

- No `entropy estimation' based on sample values. Such `entropy
estimation' is a contradiction in terms, dishonest to users, and a
potential source of side channels. It is the responsibility of the
driver author to study the entropy of the process that generates
the samples.

- Per-CPU gathering pools avoid contention on a global queue.

- Entropy is occasionally consolidated into global pool -- as soon as
it's ready, if we've never reached full entropy, and with a rate
limit afterward. Operators can force consolidation now by running
sysctl -w kern.entropy.consolidate=1.

- rndsink(9) API has been replaced by an epoch counter which changes
whenever entropy is consolidated into the global pool.
. Usage: Cache entropy_epoch() when you seed. If entropy_epoch()
has changed when you're about to use whatever you seeded, reseed.
. Epoch is never zero, so initialize cache to 0 if you want to reseed
on first use.
. Epoch is -1 iff we have never reached full entropy -- in other
words, the old rnd_initial_entropy is (entropy_epoch() != -1) --
but it is better if you check for changes rather than for -1, so
that if the system estimated its own entropy incorrectly, entropy
consolidation has the opportunity to prevent future compromise.

- Sysctls and event counters provide operator visibility into what's
happening:
. kern.entropy.needed - bits of entropy short of full entropy
. kern.entropy.pending - bits known to be pending in per-CPU pools,
can be consolidated with sysctl -w kern.entropy.consolidate=1
. kern.entropy.epoch - number of times consolidation has happened,
never 0, and -1 iff we have never reached full entropy

CPRNG_STRONG

- A cprng_strong instance is now a collection of per-CPU NIST
Hash_DRBGs. There are only two in the system: user_cprng for
/dev/urandom and sysctl kern.?random, and kern_cprng for kernel
users which may need to operate in interrupt context up to IPL_VM.

(Calling cprng_strong in interrupt context does not strike me as a
particularly good idea, so I added an event counter to see whether
anything actually does.)

- Event counters provide operator visibility into when reseeding
happens.

INTEL RDRAND/RDSEED, VIA C3 RNG (CPU_RNG)

- Unwired for now; will be rewired in a subsequent commit.
 1.346 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.345 23-Apr-2020  joerg rump doesn't own pnbuf_cache, externalize it
 1.344 23-Mar-2020  pgoyette branches: 1.344.2;
Don't attempt to detach an evcnt before attaching it. If its not
already attached, we will panic.

It turns out that this check wasn't really needed anyway, it was
simply paranoia on my part.

Thanks to hannken@ for bringing this to my attention.
 1.343 22-Mar-2020  pgoyette Teach rump to process __link_set_evcnts entries. (Second part of
fix for PR kern/55088)
 1.342 22-Feb-2020  ad rump_init(): need to call config_init() now.

PR kern/55004 (Hundreds of file system tests now fail on real hardware)
 1.341 18-Feb-2020  chs remove the aiodoned thread. I originally added this to provide a thread context
for doing page cache iodone work, but since then biodone() has changed to
hand off all iodone work to a softint thread, so we no longer need the
special-purpose aiodoned thread.
 1.340 10-Feb-2020  riastradh Initialize struct cpu_info::ci_cpuname (= ci_data.cpu_name) in rump.
 1.339 02-Jan-2020  thorpej branches: 1.339.2;
- Eliminate the global "boottime" variable, which was being accessed
without any synchronization against changes by e.g. clock_settime().
- Replace with new getbinboottime() / getnanoboottime() / getmicroboottime()
functions (naming mirrors that of other time access functions in kern_tc.c).
It returns the (maybe-converted) value of timebasebin, which also tracks
our estimate of when the system was booted (i.e. the legacy "boottime" was
redundant).

XXX There needs to be a lockless synchronization mechanism for reading
timebasebin, but this is a problem in kern_tc.c that pre-existed these
"boottime" changes. At least now the problem is centralized in one location.
 1.338 15-Dec-2019  pgoyette Initialize the module_hook synchronization variables in rump, too.

Fixes recently reported test failures for dev/sysmon/t_swsensor
and net/if_vlan/t_vlan
 1.337 07-Dec-2019  riastradh Restore call to pserialize_init.

We need it after all for psz_lock on the event counter.
 1.336 03-Dec-2019  riastradh Rip out pserialize(9) logic now that the RCU patent has expired.

pserialize_perform() is now basically just xc_barrier(XC_HIGHPRI).
No more tentacles throughout the scheduler. Simplify the psz read
count for diagnostic assertions by putting it unconditionally into
cpu_info.

From rmind@, tidied up by me.
 1.335 15-Oct-2019  christos Add a function cast for enosys
 1.334 17-May-2019  ozaki-r Implement an aggressive psref leak detector

It is yet another psref leak detector that enables to tell where a leak occurs
while a simpler version that is already committed just tells an occurrence of a
leak.

Investigating of psref leaks is hard because once a leak occurs a percpu list of
psref that tracks references can be corrupted. A reference to a tracking object
is memorized in the list via an intermediate object (struct psref) that is
normally allocated on a stack of a thread. Thus, the intermediate object can be
overwritten on a leak resulting in corruption of the list.

The tracker makes a shadow entry to an intermediate object and stores some hints
into it (currently it's a caller address of psref_acquire). We can detect a
leak by checking the entries on certain points where any references should be
released such as the return point of syscalls and the end of each softint
handler.

The feature is expensive and enabled only if the kernel is built with
PSREF_DEBUG.

Proposed on tech-kern
 1.333 29-Mar-2019  christos fix the build (pnbuf_cache move to vfs_init.c)
 1.332 26-Dec-2018  thorpej Rather than performing lazy initialization, statically initialize early
in the respective kernel startup routines.
 1.331 09-Jan-2018  msaitoh branches: 1.331.2; 1.331.4;
Set mp_online = ture. I don't know the "best" location to set it true.
This change might fix PR#52886.
 1.330 21-Nov-2017  ozaki-r Implement debugging feature for pserialize(9)

The debugging feature detects violations of pserialize constraints.
It causes a panic:
- if a context switch happens in a read section, or
- if a sleepable function is called in a read section.

The feature is enabled only if LOCKDEBUG is on.

Discussed on tech-kern@
 1.329 08-Mar-2016  joerg branches: 1.329.2; 1.329.8; 1.329.10;
Align the message buffer. The kernel routines normally are used only
with page aligned buffers and they assume at least pointer alignment. Be
defensive here and align to 256 Bytes.
 1.328 08-Feb-2016  pooka Allocate struct cpu_info dynamically. Saves quite a lot of BSS in the
common case and reduces rump kernel memory requirements by 10% or more
in really tiny deployments.
 1.327 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.326 18-Jan-2016  pooka Fix dlopen()/dlclose()+RUMP_USE_CTOR to not leave dangling pointers around.
 1.325 31-Aug-2015  ozaki-r Allow rumpkernel to use rw_obj_*
 1.324 25-Aug-2015  pooka initialize ncpuonline
 1.323 25-Aug-2015  pooka remove mksysctls(), now provided by init_sysctl_base
 1.322 07-Jul-2015  justin Move hw.machine and hw.machine_arch sysctls to base so rump can use them

This allows uname(3) and uname(1) to work on rump kernels.
 1.321 08-Jun-2015  pooka Allow device components to create symlinks in /dev
e.g. /dev/audio -> audio0

from Robert Millan <rmh@freebsd.org> via rumpkernel-users
 1.320 20-May-2015  pooka call loginit() later, a lot later
 1.319 22-Apr-2015  pooka Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.
 1.318 17-Apr-2015  pooka set the local clients' comm to "rumplocal" instead of "system"
 1.317 13-Apr-2015  riastradh Convert remaining MI <sys/rnd.h> stragglers. Many MD ones left.
 1.316 06-Feb-2015  maxv Kill kmeminit().
 1.315 07-Jan-2015  pooka Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.314 04-Jan-2015  pooka Extend RUMP_USE_CTOR to SYSCTL_SETUP(), similar to what is already
done in MODULE(). The sysctl tree nodes from all components which
were loaded when rump_init() was called now get created -- mimics the
monolithic kernel.

No change to the monolithic kernel.
 1.313 03-Jan-2015  pooka Put all sysproxy routines to their own C module, sysproxy.c
 1.312 25-Aug-2014  pooka branches: 1.312.2;
Remove and obsolete rumpkern_time as a separate component.
 1.311 25-Aug-2014  pooka No longer create a special process context to fork remote clients off
of, simply always rfork off of proc1 closing all descriptors, and have
the rump kernel open 0/1/2 if the parent process is "1".

Fixes tests/rump/rumpkernel/t_sp, which was failing since the
abovementioned special process change due to attempting to deliver a
signal to the special process and the special process was not equipped
to handle one.
 1.310 14-Aug-2014  riastradh Restore placement of percpu_init in rump_init.

Probably doesn't matter, but let's avoid needless churn around the
real bug fix.
 1.309 14-Aug-2014  riastradh Defer cprng_fast_init until CPUs are detected.
 1.308 11-Aug-2014  ozaki-r branches: 1.308.2;
Do cprng_fast_init in rump_init

It fixes rump bootup failure:
panic: kernel diagnostic assertion "off < percpu_nextoff" failed:
file "/usr/src/lib/librump/../../sys/rump/../kern/subr_percpu.c", line 76
 1.307 29-Jun-2014  justin Change assertion as rump_component_load may be called before curlwp available
 1.306 13-Jun-2014  pooka Add rump_boot_etfs_register(), which can be used to specify etfs
nodes that will be available immediately when mountroot is done
and file systems are available.

The intended use is for example for firmware images to be available when
config_mountroot() hooks run.
 1.305 25-May-2014  pooka Call biodone() in the bdev_strategy() error via a pointer. Decouples
subr_devsw from VFS -- not that I/O buffers are _VFS_ entities -- and
eliminates the last weak alias from librump, which means things now
fully work on glibc (w/o LD_DYNAMIC_WEAK) and musl.

The whole code path is suspect anyway, since nothing prevents the device
from escaping after the lookup, suggesting that the whole error path
should be handled by the caller, but oh well.
 1.304 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 4:

Do not query system call handlers by using the rumpuser_dl_globalsym()
hypercall -- it will not work in environments which are not in control
of their own symbols (e.g. rumpuser-xen). Instead, provide
rump_syscall_boot_establish(), which component constructors can use
to establish their non-modular syscalls.
 1.303 26-Apr-2014  pooka kill weak aliases which are no longer necessary
 1.302 25-Apr-2014  pooka cpu_reboot() is more of an emul.c thing than a rump.c thing
 1.301 25-Apr-2014  pooka gardenize rump.c: move data structure helper routines to accessors.c
 1.300 25-Apr-2014  pooka gardenizing rump.c: move rump_lockdebug to locks.c
 1.299 25-Apr-2014  pooka Init function pointers to nullop() so that callers don't need a dance
 1.298 25-Apr-2014  pooka g/c no longer necessary weak alias
 1.297 25-Apr-2014  pooka Move the etfs linkage from rumpvfs to rumpkern, and replace the
weak alias show with an honest pointer indirection.

No client-visible change. (apart from this version working e.g.
on musl w/ dlopen)
 1.296 23-Apr-2014  pooka Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).
 1.295 23-Apr-2014  pooka Include LIST_ENTRY() in "struct rump_component".

Main benefit: rump_component_load() can now be called from an
early-running constructor since the routine doesn't need to allocate
memory.
 1.294 09-Apr-2014  pooka implement lwp_create() and a few related interfaces.
main raison d'impalerment: the aio driver
 1.293 09-Apr-2014  pooka initialize exec_lock
 1.292 02-Apr-2014  pooka branches: 1.292.2;
Put nanosleep() and folks in librump instead of maintaining them in
the separate rumpkern_time component. Keeping time-related routines
elsewhere lead to some illogical behavior if you didn't think of linking
in rumpkern_time (hands up everyone who checks the return value of
nanosleep()).

Add warnings if rumpkern_time is linked or used. I'll remove it in a
month or two instead of now since it was part of a buildrump.sh snapshot
and it's nicer if trying to use it gives a warning instead of an error
in the next snapshot.

"everything should be as modular as possible, but no more modular than that"
 1.291 20-Mar-2014  christos kill sprintf
 1.290 15-Mar-2014  pooka Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.289 10-Mar-2014  pooka rump_getversion() does not require a thread context, so make it a straight
call instead of being wrapped around rump_pub_getversion().
 1.288 10-Mar-2014  pooka Move the "is arch capable of loading native kernel modules into
rump kernel" clauses from bsd.own.mk to Makefile.rump. Also,
add a rump_nativeabi_p() call to determine if rump kernel is
compiled with native ABI support.
 1.287 28-Feb-2014  skrll G/C sys/simplelock.h includes
 1.286 25-Feb-2014  pooka Ensure that the top level sysctl nodes (kern, vfs, net, ...) exist before
the sysctl link sets are processed, and remove redundancy.

Shaves >13kB off of an amd64 GENERIC, not to mention >1k duplicate
lines of code.
 1.285 25-Feb-2014  justin Add kern.{ostype,osrelease,osrevision,version} kern.domainname,
kern.rawpartition sysctl support to rump kernel.
Moved the sysctl support that is shared between rump and normal
kernels to init_sysctl_base.c as rump cannot use init_sysctl.c
in order to avoid code duplication. Agreed with pooka@.
 1.284 29-Jan-2014  pooka lwp0 needs l_proc set for panic->cpu_reboot to dump core the right way
 1.283 17-Jan-2014  pooka sysctl_init needs to be pretty much at the top of main()
 1.282 17-Jan-2014  pooka Use subr_cprng.c instead of stub implementation. Rijndael migrates from
rumpkern_crypto to rumpkern due to it being mandatory for cprng.
 1.281 16-Dec-2013  pooka Translate return values for emulations, e.g. Linux. For ports without
__HAVE_MINIMAL_EMUL, we simply look up the values from p->p_emul->e_errno.
For ports which cannot afford to keep an extra pointer per emul structure
around, we hope there is __HAVE_SYSCALL_INTERN support and thread the
errno values through p_emuldata. Notably, we cannot alter the syscall
method like most ports do with syscall_intern, since they do it via
p_mdproc, so MI code is not possible there.
 1.280 09-Dec-2013  pooka Make ktrace a compile-time option
 1.279 09-Dec-2013  pooka need ktrace.h now
 1.278 09-Dec-2013  pooka Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.
 1.277 09-Dec-2013  pooka Use sy_invoke() instead of sy_call() directly.
 1.276 18-Nov-2013  njoly Do lwp0 initialisation as early as possible, right after
rumpuser_init(). This makes rump applications work again when
RUMP_LOCKDEBUG is enabled.

ok pooka.
 1.275 09-Sep-2013  pooka Fix minor bug in previous: make sure we come out of rump_init()
without a bound lwp set.
 1.274 07-Sep-2013  pooka Add an initial console device and open fd's 0/1/2 for initproc. This is
again useful in standalone-type environments such as Xen, where all
printf/etc calls go through the rump kernel.
 1.273 04-Sep-2013  pooka Also create hw.pagesize, makes sysconf(_SC_PAGESIZE) return a more
sensible result.
 1.272 03-Sep-2013  pooka Don't autogenerate the wrapper that is called from the rump kernel
local syscall entry points. The wrapper is now so big that it doesn't
get inlined (original intent for having it close to the entry points),
and autogenerating a regular function just loses in flexibility.
 1.271 03-Jul-2013  njoly Make RUMP_LOCKDEBUG work again.
With some help from pooka@.
 1.270 31-May-2013  pooka branches: 1.270.2;
run shutdownhooks
 1.269 15-May-2013  pooka Add RUMPUSER_LWP_CLEAR instead of overloading RUMPUSER_LWP_SET.
This simplifies some alternative hypervisor implementations.
 1.268 02-May-2013  pooka Ok, maybe using int64 for nanoseconds in the (sec,nsec) tuple was
a bit too future-proof. I think long is enough there (let's just
hope nobody redefines "nano"). Also, make seconds signed just in
case someone wants their clock to be in 1901.
 1.267 02-May-2013  pooka Inform the rump kernel hypervisor of valid thread contexts so
that the implementation can allocate and release storage for them
in an optimal fashion, if necessary.
 1.266 30-Apr-2013  pooka Flip parameter order in the clock hypercalls to make them consistent
with everything else wrt in/out parameters.
 1.265 29-Apr-2013  pooka Make rumpuser_dl_bootstrap() optional for platforms which don't
provide dynamic linking.
 1.264 29-Apr-2013  pooka Replace the various "get info from hypervisor" interfaces with one
unified rumpuser_getparam(), and make it return a plist. The
contents can come e.g. from the env or a config file. Make
identifiers starting with an underscore denote system identifiers
which must be implemented by hypervisor. (yea, j/k about the plist bit)
 1.263 29-Apr-2013  pooka Make the rump kernel upcalls which were previous available only to
the sysproxy module available for the entire hypervisor.
 1.262 28-Apr-2013  pooka Improve the time-related hypercalls so that's it's possible to
sleep until an absolute time on the host's monotonic clock (should
something like that be supported).
 1.261 27-Apr-2013  pooka roll mutex init hypercalls into one (one of them already took a flag anyway)
 1.260 27-Apr-2013  pooka wrap unportable register_t with a long. should do it in the front
of the house too, but at least this is a start.
 1.259 27-Apr-2013  pooka Get rid of the rump__init() macro. it was never useful and just makes
debugging less obvious.
 1.258 27-Apr-2013  pooka * integrate rumpuser_getversion() with the hypervisor initialization
* rename some identifiers to better match reality
 1.257 10-Mar-2013  pooka Use kern_malloc.c instead of the relegated allocators in memalloc.c.
Previously this didn't make sense due to the use of kmem_map, but the
new malloc is more dynamic and puts sense into using it.
 1.256 10-Mar-2013  pooka Don't allow kernel threads to run before all CPUs have been initialized
to avoid them getting scheduled on non-initialized CPUs.
 1.255 08-Mar-2013  pooka Ensure that rump kernel component constructors from the main object
get processed. This applies to ones which were linked statically.
Unfortunately, that's where it got a bit tricky, since the dlsym()
interface searches the handle and all its dependencies. For the main
object the list of dependencies includes all the dynamic rump kernel
components that were included when the binary is linked. So, a long
story short, make only one pass through the objects to harvest all the
component entries, weed out the dupes, and initialize components from
an in-memory dupe-free list when so requested.
 1.254 07-Mar-2013  pooka Make the device node creation routines function pointers which default
to nullop without VFS. This relaxes the dependency between VFS and many
components, some of which can be used perfectly fine without VFS.
 1.253 07-Mar-2013  pooka Force references to the component setlist __start/__stop symbols so
that they get generated for rump kernels constructed from static libs.
 1.252 03-Mar-2013  pooka Add a dummy component to ensure that at least one component is present
in every possible rump kernel configuration.
 1.251 19-Feb-2013  martin Stopgap fix to make rump cooperate with pserialize, may be revisited later.
Patch from pooka, ok: rmind. No related regressions in a complete atf test
run (which works again with this, even on non x86 SMP machines).
 1.250 14-Jan-2013  pooka fix typo
 1.249 14-Jan-2013  pooka Don't use __weak_alias where the component framework is sufficient.
 1.248 14-Jan-2013  pooka Add some asserts to component initialization.
 1.247 09-Oct-2012  pooka Gather some statistics about biglock usage.
 1.246 16-Aug-2012  pgoyette branches: 1.246.2;
Use correct routine name - kcpuset_sysinit() vs kcpuset_init()
 1.245 16-Aug-2012  pgoyette We also need kcpuset_init() now.
 1.244 16-Aug-2012  pgoyette It helps to include the declaration of the routine being called.
 1.243 16-Aug-2012  pgoyette Call pserialize_init() during rump start-up, since librump/net/npf
uses it.
 1.242 09-Jun-2012  christos since uidinfo uses sysctl now, move sysctl initialization before it.
 1.241 03-Jun-2012  dsl Fix build now that sysctl_createv() checks its arg type.
 1.240 04-Feb-2012  njoly branches: 1.240.2;
Now that rnd is not optional anymore, add needed rnd_init() for rump.
Fix dev/{scsipi,sysmon} testcases.
 1.239 29-Jan-2012  njoly Move pool subsystem init from rump__init() to uvm_init(), following
kernel code. Fix RUMP_LOCKDEBUG early panic.
 1.238 04-Dec-2011  jym Implement the register/deregister/evaluation API for secmodel(9). It
allows registration of callbacks that can be used later for
cross-secmodel "safe" communication.

When a secmodel wishes to know a property maintained by another
secmodel, it has to submit a request to it so the other secmodel can
proceed to evaluating the request. This is done through the
secmodel_eval(9) call; example:

bool isroot;
error = secmodel_eval("org.netbsd.secmodel.suser", "is-root",
cred, &isroot);
if (error == 0 && !isroot)
result = KAUTH_RESULT_DENY;

This one asks the suser module if the credentials are assumed to be root
when evaluated by suser module. If the module is present, it will
respond. If absent, the call will return an error.

Args and command are arbitrarily defined; it's up to the secmodel(9) to
document what it expects.

Typical example is securelevel testing: when someone wants to know
whether securelevel is raised above a certain level or not, the caller
has to request this property to the secmodel_securelevel(9) module.
Given that securelevel module may be absent from system's context (thus
making access to the global "securelevel" variable impossible or
unsafe), this API can cope with this absence and return an error.

We are using secmodel_eval(9) to implement a secmodel_extensions(9)
module, which plugs with the bsd44, suser and securelevel secmodels
to provide the logic behind curtain, usermount and user_set_cpu_affinity
modes, without adding hooks to traditional secmodels. This solves a
real issue with the current secmodel(9) code, as usermount or
user_set_cpu_affinity are not really tied to secmodel_suser(9).

The secmodel_eval(9) is also used to restrict security.models settings
when securelevel is above 0, through the "is-securelevel-above"
evaluation:
- curtain can be enabled any time, but cannot be disabled if
securelevel is above 0.
- usermount/user_set_cpu_affinity can be disabled any time, but cannot
be enabled if securelevel is above 0.

Regarding sysctl(7) entries:
curtain and usermount are now found under security.models.extensions
tree. The security.curtain and vfs.generic.usermount are still
accessible for backwards compat.

Documentation is incoming, I am proof-reading my writings.

Written by elad@, reviewed and tested (anita test + interact for rights
tests) by me. ok elad@.

See also
http://mail-index.netbsd.org/tech-security/2011/11/29/msg000422.html

XXX might consider va0 mapping too.

XXX Having a secmodel(9) specific printf (like aprint_*) for reporting
secmodel(9) errors might be a good idea, but I am not sure on how
to design such a function right now.
 1.237 01-Dec-2011  tls branches: 1.237.2;
Initialize the kern_cprng in rump startup. Oops.

Should fix some "mysterious" rump test failures. Thanks to Nicholas Joly
for pointing out exactly what was wrong.
 1.236 26-Nov-2011  njoly Do not call cprng_fast32() before locks init. Makes rump build with
RUMP_LOCKDEBUG=yes work again.
 1.235 19-Nov-2011  tls First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.234 22-Mar-2011  pooka branches: 1.234.4;
pnbuf_cache is used all over the place outside of vfs, so put it
in one place to avoid many definitions.
 1.233 21-Mar-2011  pooka Update copyright statements.

no functional change.
 1.232 08-Mar-2011  pooka Nuke all threads belonging to a process calling exec before allowing
the exec handshake to return.

In addition to being The Right Thing To Do, fixes some nasty
conditions for CLOEXEC fd's (or at least does so in theory, I
couldn't create any problems although I tried).
 1.231 15-Feb-2011  pooka Support FD_CLOEXEC in rump kernels.
 1.230 15-Feb-2011  pooka Add an "exec" callback for the proxy code. The client can now
notify the rump kernel of an exec having taken place.
 1.229 10-Feb-2011  pooka zalloc struct vmspace to avoid having one full of garbage
 1.228 03-Feb-2011  pooka weakalias the "withsize" variant of rump_pub_etfs_register too
 1.227 30-Jan-2011  bouyer Move rumpuser_sp_fini() after the kernel has completed shuwdown
(and especially, after filesystems have been unmounted).
This way, rump.halt returns once the rump kernel is really out of the
game, which avoids races issues in test scripts using a rump kernel.
OK pooka@
 1.226 28-Jan-2011  pooka Pass the value of getprogname() from the client to the server and
record it in p_comm. This is nice for things like sockstat, since
they now display the client command name:

pain-rustique:43:~> rump.sockstat
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root xulrunner- 16 0 tcp 192.168.2.114.65507 204.152.190.12.80
root xulrunner- 16 1 tcp 192.168.2.114.65501 204.152.190.12.80
root xulrunner- 16 2 tcp 192.168.2.114.65500 204.152.190.12.80
root xulrunner- 16 3 tcp 192.168.2.114.65499 204.152.190.12.80
root xulrunner- 16 5 tcp 192.168.2.114.65498 204.152.190.12.80
root xulrunner- 16 6 tcp 192.168.2.114.65497 204.152.190.12.80
root socket 62 0 tcp6 *.http *.*
root socket 62 1 tcp *.http *.*
root socket 63 0 tcp6 *.81 *.*
root socket 63 1 tcp *.81 *.*
 1.225 28-Jan-2011  pooka Don't NULL out l_cpu, l_stat is the new rumpkernel way too.
 1.224 28-Jan-2011  pooka call procinit_sysctl to register the proc sysctl tree
 1.223 28-Jan-2011  pooka Some lwp-walkers expect the correct value for l_stat, so use a flag
in l_flag instead of l_stat for the purpose of flagging lwps in a
dying proc.
 1.222 27-Jan-2011  pooka Fix syscall name for compat syscalls. Arguably makesyscalls.sh
should generate the right info, but it's easier to fix here now.

This fixes compat syscalls for rump servers with dynamically loaded
components. Since the compat syscall revamp a little time ago e.g.
stat() didn't work on my system (which is 5.0-based) with e.g.
rump_server -lrumpvfs. Static servers and non-compat syscalls
worked just fine, though, making this a little harder to spot that
the usual bug.
 1.221 22-Jan-2011  pooka inverse inversely incorrect comment
 1.220 22-Jan-2011  pooka In case sys_reboot() was called by a remote client, put the response
in the socket before we shut down. This way the response to the
syscall travels to the caller and they know things worked correctly
instead of having to just assume.
 1.219 12-Jan-2011  pooka branches: 1.219.2; 1.219.4;
When the client and the rump kernel are the same host process, all
threads blocking in the kernel automatically exit when the process
exists. However, for the sysproxy case this does not hold.
Typically it's ~harmless, but e.g. in the case of socket binding
following by poll it gets annoying.

Introduce sysproxy procexit, which wakes up all threads blocking
on a condition when a process's communication socket is closed.
The code is a little different from the regular kernel simply
because in a rump kernel l_mutex is not available at all times
(this is because scheduling happens on every kernel entry and exit,
and that path must be kept lockless for any reasonable performance).
Instead, use gating which makes sure all threads are either out of
the cv code or suspended in a well-known state. Then, wake up the
threads and tell them to get the hell out of our galaxy.
 1.218 07-Jan-2011  pooka Avoid double init of tty_lock if rumpkern_tty is included. LOCKDEBUG
does not tolerate double inits.

pointed out by njoly
 1.217 06-Jan-2011  pooka give the outside world some idea of if we have LOCKDEBUG or not
 1.216 06-Jan-2011  pooka Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.

requested by martin (sparc64 gdb cannot reliably produce a stack trace)
 1.215 04-Jan-2011  pooka Add SMP support for all architectures.

tested on sparc64 by martin
 1.214 02-Jan-2011  pooka There is a use case where preserving the parent's fd table is
relevant, so to accommodate that change rump_lwproc_newproc() to
rump_lwproc_rfork(). The new interface has the rfork() fd table
semantics. The equivalent of rump_lwproc_newproc() is
rump_lwproc_rfork(RUMP_RFCFDG).
 1.213 30-Dec-2010  pooka Requery syscall handlers during rump kernel init. This fixes
syscalls provided by a rump faction such as rumpvfs when the library
is not linked into the binary, but is dlopen()'d before calling
rump_init().
(it is illegal to dlopen() a faction after rump_init(), but syscalls
maybe be added the usual way with modules)

rump_server(1) -lstuff works now.
 1.212 16-Dec-2010  pooka Print a banner a connecting client. The banner contains rump sp
protocol version, os name, os revision and machine.
 1.211 13-Dec-2010  pooka stubs to make life easier
 1.210 12-Dec-2010  pooka Call rumpuser_sp_fini() from cpu_reboot() to make sure sys_reboot
with RB_HALT does not hang.
 1.209 12-Dec-2010  pooka print a bit more diagnostics when halting
 1.208 01-Dec-2010  pooka Track lwp as the rumpuser mutex owner instead of pthread_t (this
is done in rumpuser for simplicity, since on the kernel side things
we assume we have only one pointer of space). As a side-effect,
we can no longer know if the current thread is holding on to a
mutex locked without curlwp context (basically all mutexes inited
outside of mutex_init()). The only thing that called rumpuser_mutex_held()
for a non-kmutex was the giant lock. So, instead implement recursive
locking for the giant lock in the rump kernel and get rid of the
now-unused recursive pthread mutex in the hypercall interface.
 1.207 30-Nov-2010  pooka Require server to be explicitly initialized with rump_init_server(url).
Also, add rump_daemonize_begin() / rump_daemonize_end() to help
with the "can't daemon() after pthread_create()" problem. Applications
could accomplish the same, but since it's such a common operation,
provide a little help.
 1.206 22-Nov-2010  pooka Support physio for remote processes.
==> add support for remote vmspace vmapbuf/vunmapbuf
==> add proper support for copyin/out_vmspace
==> add support for remote vmspace uvm_io
==> add support for non-curproc rumpuser_sp_copyin/out
==> store remote context in vm_map->pmap instead of
pthread_specificdata

In short, makes read/write of most (all?) block devices work from
a remote rump client via rump syscalls.
 1.205 21-Nov-2010  pooka Encode smp-capability into the makefile so that it can be used to
avoid potential screwups.
 1.204 21-Nov-2010  pooka Fix situation where we try to configure >MAXCPUS cpus.
 1.203 21-Nov-2010  pooka Realize the >1yo comment above rump_reboot and retire them to make
room for sys_reboot.
 1.202 19-Nov-2010  pooka remove no longer necessary code
 1.201 19-Nov-2010  pooka Pass routines necessary for multithreaded operation down to rumpuser_sp.
 1.200 17-Nov-2010  pooka Remove unused rump_set_vmspace. An equivalent needs to come back
later, though, but in its current form it's just unusable garbage.
 1.199 17-Nov-2010  pooka Provide a special rump_proxy_syscall for handling received proxy
syscalls and retire unused rump_syscall.
 1.198 17-Nov-2010  pooka cleanup some old garbage
 1.197 15-Nov-2010  pooka apply const
 1.196 04-Nov-2010  pooka Refactor the sysproxy code so that rumpuser contains only the server side.
 1.195 01-Nov-2010  pooka Missed a few symbols in previous ...

Also, reorganize rumpuser header inclusion to make sure problem is
caught already by the compiler.
 1.194 01-Nov-2010  pooka Make librumpuser linkage once again free of librump.

problem pointed out by <he>
 1.193 29-Oct-2010  pooka Attach implicit threads to initproc instead of proc0. This way
applications which alter, by purpose or by accident, the uid in an
implicit thread are don't affect kernel threads.

from discussion with njoly
 1.192 28-Oct-2010  pooka Count proc0 as uid 0's process. Besides being the right thing to
do, this effectively allows changing the uid of proc0 without
running into KASSERT problems in uidinfo code (although I'm not
quite so sure changing proc0's uid is the right thing to do ...).

problem reported by njoly
 1.191 27-Oct-2010  pooka Start rework of system call proxying over socket ("sysproxy").
This incarnation is written in the user namespace as opposed to
the previous one which was done in kernel namespace. Also, rump
does all the handshaking now instead of excepting an application
to come up with the user namespace socket.

There's still a lot to do, including making code "a bit" more
robust, actually running different clients in a different process
inside the kernel and splitting the client side library from librump.
I'm committing this now so that I don't lose it, plus it generally
works as long as you don't use it in unexcepted ways: i've tested
ifconfig(8), route(8), envstat(8) and sysctl(8).
 1.190 27-Oct-2010  pooka Remove old crud which is no longer used (since kern_proc).
 1.189 25-Oct-2010  pooka make printed string more accurate
 1.188 07-Sep-2010  pooka Make the Diabolical (Page)Daemon Director drain vfs buffers when
we are short of memory.

There are still some funnies left to iron out. For example, with
a certain file system / memory size configuration it's still not
possible to create enough files to make the file system run out of
inodes before the kernel runs out of memory. Also, with some other
configurations disk access slows down gargantually (though i'm sure
there are >0 buffers available). Anyway, it ~works for now and
it's by no means worse than what it was before.
 1.187 07-Sep-2010  pooka Allocate softint vectors for the final number of CPUs, not the
number currently attached. Deals with a SNAFU in my commit earlier
today which would cause softints established early to lack a
softint context on non-bootstrap CPUs.
 1.186 07-Sep-2010  pooka Attach only one CPU for the bootstrap phase.
 1.185 06-Sep-2010  pooka Use standard uvm aobj pager. Most of the kernel aobj pager complexity
comes from swap handling, but that is included only with VMSWAP.
 1.184 01-Sep-2010  pooka Implement rump_lwproc: the new lwp/proc management routines for
rump. These move the management of the pid/lwpid space from the
application into the kernel, make code more robust, and make it
possible to attach multiple lwp's to non-proc0 processes.
 1.183 30-Aug-2010  pooka * record proc's cred in p_cred too
* account procs for uids
 1.182 26-Aug-2010  pooka print one line of dmesg per cpu present
 1.181 23-Aug-2010  pgoyette Initialize the new kernconfig_lock for rump kernels before it can be used.

Should fix the rather massive breakage in the automated test runs, too.
Sorry for breaking rump.
 1.180 11-Jul-2010  pooka fd_hold() when creating new threads. This makes the fd code use
multithreaded mode and actually work with a multithreaded process.
 1.179 12-Jun-2010  pooka Support rumpkern components and rumpkern components depending on vfs init.
 1.178 10-Jun-2010  pooka Use kern_proc.c instead of a collection of stubs. But what we
really wanted from this commit was the support for proc_specificdata.

TODO: make creating a new process actually use kern_proc and
maybe even add an interface which starts a process with
"any pid you don't like"
 1.177 09-Jun-2010  pooka Version rumpuser ABI with a lightweight mechanism.
 1.176 09-Jun-2010  pooka initialize specificdata for lwp0 too
 1.175 03-Jun-2010  pooka Implement a sort-of pagedaemon: adjust all memory allocators to go
through an in-rumpkernel hypermemory allocator which knows it should
kick the pagedaemon and block in case ``waitok'' memory allocation
fails.

This allows us to recover from some out-of-memory situations.
Realworld'istically speaking (as opposed to whatever "should be"
theory), these OOM situations will happen extremely rarely if ever
when our hypervisor is a regular process. Speculatively, this
should be useful for other types of hosts.

issues remaining:
* the hypervisor does not know how to reclaim kernel memory (and
for the reason I stated above, I'm not sure if it makes sense
to teach the current implementation about that)
* vfs memory (buffers, vm object pages etc.) is not reclaimed
 1.174 02-Jun-2010  pooka rumpvm_init -> uvm_init to get rid of local prototype.
no functional change
 1.173 31-May-2010  pooka Support mtsleep() without a biglocked sleeper (uvm uses this in
UVM_UNLOCK_AND_WAIT())
 1.172 28-May-2010  pooka Improve the CPU scheduler for a host MP system with multithreaded
access. The old scheduler had a global freelist which caused a
cache crisis with multiple host threads trying to schedule a virtual
CPU simultaneously.

The rump scheduler is different from a normal thread scheduler, so
it has different requirements. First, we schedule a CPU for a
thread (which we get from the host scheduler) instead of scheduling
a thread onto a CPU. Second, scheduling points are at every
entry/exit to/from the rump kernel, including (but not limited to)
syscall entry points and hypercalls. This means scheduling happens
a lot more frequently than in a normal kernel.

For every lwp, cache the previously used CPU. When scheduling,
attempt to reuse the same CPU. If we get it, we can use it directly
without any memory barriers or expensive locks. If the CPU is
taken, migrate. Use a lock/wait only in the slowpath. Be very
wary of walking the entire CPU array because that does not lead to
a happy cacher.

The migration algorithm could probably benefit from improved
heuristics and tuning. Even as such, with the new scheduler an
application which has two threads making rlimit syscalls in a tight
loop experiences almost 400% speedup. The exact speedup is difficult
to pinpoint, though, since the old scheduler caused very jittery
results due to cache contention. Also, the rump version is now
70% faster than the counterpart which calls the host kernel.
 1.171 11-May-2010  pooka Initialize p_pgrp when creating a new process structure (and not
only for proc0). This makes something work. I just can't remember
what it was anymore.
 1.170 01-May-2010  pooka Add rump_printevcnts() which dumps values from all event counters.
(NOTE! it is run unscheduled for various experimentation etcetc. reasons)
 1.169 28-Apr-2010  pooka Uncrack my brain, buggy let me !be.

In other words, make previous commit to this file actually work.
Funny how it's possible to fix things to not dump core and still
have them not work.
 1.168 28-Apr-2010  pooka Set l_sysent so that syscall autoload actually works instead of autocores.
 1.167 28-Apr-2010  pooka If RUMP_NCPU is set, use that for virtual CPU count instead of
host CPU count.
 1.166 28-Apr-2010  pooka Make number of virtual CPUs match number of host CPUs on NetBSD/x86 hosts.
 1.165 27-Apr-2010  pooka Fix multiple virtual cpu support.

... or at least on x86. CPU_INFO_FOREACH() still isn't MI, and I
don't want to support 2^n different versions.
 1.164 26-Apr-2010  pooka Change machine from "rump" to MACHINE so that module_base goes
right.

Now, any guesses on how many archs this seemingly trivial change
will break the principal metric, i.e. The Build(tm)? Keep the bets
coming in.
 1.163 22-Apr-2010  pooka more signal stuff to group. no functional change.
 1.162 21-Apr-2010  pooka support kern_resource
 1.161 17-Apr-2010  pooka One emul is enough and since we need emul_netbsd, retire emul_rump.
 1.160 14-Apr-2010  pooka Include kern_tc and use a timecounter driver instead of homerolled
kern_tc implementation.
 1.159 12-Apr-2010  pooka support lwp specificdata
 1.158 31-Mar-2010  pooka Create kern.hostname sysctl node. Using init_sysctl.c for creating
the nodes requires some weeding, so don't try to use it yet.
 1.157 31-Mar-2010  pooka set kernel boottime
 1.156 31-Mar-2010  pooka * initialize msgbuf
* for banner, use aprint_verbose instead of if (verbose) printf
 1.155 05-Mar-2010  pooka branches: 1.155.2;
Use improved kernel module interfaces: instead of adding + loading
modules in bootstrap, just add them. Load them later the same way
as the kernel does: module_init_class().

Change the signature of rump_module_init() to take a vector instead
of just one module. All modules in a DSO should be init'd at the
same time because they might depend on each other, and code outside
the rump kernel cannot know which way. (binary kernel modules are
still loaded with rump_sys_modctl() the usual way).
 1.154 01-Mar-2010  pooka Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.153 26-Feb-2010  pooka Rename rumpuser_dl_module_bootstrap() to rumpuser_dl_bootstrap(),
since it hasn't been involved only with modules for quite a while now.
 1.152 09-Feb-2010  pooka Store l_name for kernel threads.
 1.151 15-Jan-2010  pooka branches: 1.151.2;
Accomplish messy stack with slightly less messy code.
 1.150 15-Jan-2010  pooka Use subr_percpu.c instead of homegrown implementation. ...except
when using malloc(3)-relegated allocators (happens in production
e.g. on Linux), since subr_percpu.c uses vmem and i don't want to
reimplement vmem.
 1.149 13-Jan-2010  pooka If RUMP_VERBOSE is set in the env, set boothowto to AB_VERBOSE.
 1.148 16-Dec-2009  pooka print spammy banner in spammy bootstrap
 1.147 09-Dec-2009  pooka Get rid of useless stubs.
 1.146 05-Dec-2009  pooka Remove now-empty rump_sleepers_init()
 1.145 04-Dec-2009  pooka Provide the default_mapaddr method in default rump emul (since some
kernel callers want to use it).
 1.144 03-Dec-2009  pooka Decide it's not worth the fuss to have rumpfs as a module and just
hardcode attach into rump_vfs_init(). Saves us from a lot of
pingpong init bouncing from one component to another to get the order
right.
 1.143 01-Dec-2009  pooka Almost there for virtual CPU MP support:
* support bound kernel threads
* bind softint threads to specific virtual cpus
+ remove now-unnecessary locks from softint code

Now, if we only had MI CPU_INFO_FOREACH() .... (hi rmind ;)
 1.142 27-Nov-2009  pooka Remove no longer necessary vfs weak symbols.
 1.141 27-Nov-2009  pooka Now that Makefile.rump was changed and everything gets built in
update builds too, flip the allocator define to prefer the kernel
pool/kmem instead of malloc(3). Use malloc(3) only if
RUMP_USE_UNREAL_ALLOCATORS is defined.
 1.140 26-Nov-2009  pooka For rumpfs, do mountroot instead of the bunch of homegrown hacks
currently there. Still needs a little massage to get the kernel
interfaces right and avoid copypaste especially from main().

Also, move it a bit more into the direction of a real file system
(finally!) by giving it a vfsops. Most ops are still unimplemented,
though.
 1.139 26-Nov-2009  pooka remember to call pipe_init()
 1.138 26-Nov-2009  pooka Build the kernel symbol table in rumpuser bootstrap and feed it to
the rump kernel. After this change it is possible to use the
in-kernel linker and rump_sys_modctl() to load kernel modules at
runtime.

Previously loading modules at runtime was possible only through
using the host system ld.so. Note that it is still preferred to
use shared libs when possible, since they are PIC and n virtual
kernels will only require one copy of r/o segments. However, when
there is no access to source code, a binary kernel module is the
only thing available ...
 1.137 26-Nov-2009  pooka Add rump_kernelfsym_load(), which loads the kernel symbol table.
 1.136 10-Nov-2009  pooka init uvm readahead
 1.135 06-Nov-2009  pooka account creds for processes, not lwp's
 1.134 05-Nov-2009  pooka enqueue loaded modules and prevent duplicates
 1.133 04-Nov-2009  pooka Use kern_mutex_obj.c directly instead of copypasting code.
 1.132 03-Nov-2009  pooka Weak aliazeize usermount_common_policy() to uncouple rumpkern
linkage from rumpvfs once again after the secmodel changes.
(temp solution, should find a better one)
 1.131 03-Nov-2009  pooka Reorder enough of lwp/cpu initialization to have enough context
for pool/kmem init to work again with the stock versions (as opposed
to rump malloc relegations).
 1.130 03-Nov-2009  pooka Add rump_boot_set/gethowto(), which can be called before rump_init()
to control .... *tadaa* boothowto.
 1.129 24-Oct-2009  pooka Pass modinit to rumpuser_dl_module_bootstrap() as a function pointer
to avoid linker rump -> rumpuser -> rump dependency which is annoying
redundancy in static linking.
 1.128 20-Oct-2009  pooka Actually, put uvm_readahead into rumpkern, since while it's
technically vfs stuff, sys_descrip depends on it and readahead
itself uses only the pager interface.
 1.127 19-Oct-2009  pooka __weak_alias for uvm_readahead() since it's used also in sys_descrip.c
 1.126 16-Oct-2009  pooka Include sys_select.c for proper select()/poll() support.
 1.125 15-Oct-2009  pooka Give lwp usage some much-needed love: stop treating lwp0 as the
all-sink and make sure each separate thread in rump has its own
lwp. Happy-go-lucky callers will get scheduled a temporary lwp
on entry, while true lwp connoisseurs may request a stable lwp
for their purposes. Some more love may be required later down the
road, but for now different threads will stepping on each others
toes.
 1.124 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.123 14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.122 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.121 09-Oct-2009  pooka Provide an interface for reboot.
 1.120 08-Oct-2009  pooka Seems like module loading code is tasked with calling secmodel_register()
these days ...
 1.119 08-Oct-2009  pooka remove extraneous call to secmodel_suser_start()
 1.118 05-Oct-2009  pooka set l_cpu for lwp0
 1.117 02-Oct-2009  elad First part of secmodel cleanup and other misc. changes:

- Separate the suser part of the bsd44 secmodel into its own secmodel
and directory, pending even more cleanups. For revision history
purposes, the original location of the files was

src/sys/secmodel/bsd44/secmodel_bsd44_suser.c
src/sys/secmodel/bsd44/suser.h

- Add a man-page for secmodel_suser(9) and update the one for
secmodel_bsd44(9).

- Add a "secmodel" module class and use it. Userland program and
documentation updated.

- Manage secmodel count (nsecmodels) through the module framework.
This eliminates the need for secmodel_{,de}register() calls in
secmodel code.

- Prepare for secmodel modularization by adding relevant module bits.
The secmodels don't allow auto unload. The bsd44 secmodel depends
on the suser and securelevel secmodels. The overlay secmodel depends
on the bsd44 secmodel. As the module class is only cosmetic, and to
prevent ambiguity, the bsd44 and overlay secmodels are prefixed with
"secmodel_".

- Adapt the overlay secmodel to recent changes (mainly vnode scope).

- Stop using link-sets for the sysctl node(s) creation.

- Keep sysctl variables under nodes of their relevant secmodels. In
other words, don't create duplicates for the suser/securelevel
secmodels under the bsd44 secmodel, as the latter is merely used
for "grouping".

- For the suser and securelevel secmodels, "advertise presence" in
relevant sysctl nodes (sysctl.security.models.{suser,securelevel}).

- Get rid of the LKM preprocessor stuff.

- As secmodels are now modules, there's no need for an explicit call
to secmodel_start(); it's handled by the module framework. That
said, the module framework was adjusted to properly load secmodels
early during system startup.

- Adapt rump to changes: Instead of using empty stubs for securelevel,
simply use the suser secmodel. Also replace secmodel_start() with a
call to secmodel_suser_start().

- 5.99.20.

Testing was done on i386 ("release" build). Spearated module_init()
changes were tested on sparc and sparc64 as well by martin@ (thanks!).

Mailing list reference:

http://mail-index.netbsd.org/tech-kern/2009/09/25/msg006135.html
 1.116 24-Sep-2009  pooka Load modules from all components which are linked into a rump binary
with -lrumpcomponent. Previously only the first library component
containing a module would get loaded automatically.
 1.115 16-Sep-2009  pooka Replace a large number of link set based sysctl node creations with
calls from subsystem constructors. Benefits both future kernel
modules and rump.

no change to sysctl nodes on i386/MONOLITHIC & build tested i386/ALL
 1.114 13-Sep-2009  pooka call prop_kern_init()
 1.113 08-Sep-2009  pooka Add a few weak symbols for places where the kernel module boundaries
are not as perfect as theory.
 1.112 06-Sep-2009  pooka Run rump_dev_init() where available.
 1.111 04-Sep-2009  pooka allocate p_lock for virtual processes
 1.110 21-Jul-2009  pooka the consumers expect the aiodone workqueue to be mpsafe. make it so.
 1.109 22-May-2009  pooka Add rump_getversion(), which returns the version of NetBSD for the
rump kernel.
 1.108 07-May-2009  pooka Add rump_set_curlwp() for context switch to an existing lwp/proc.
 1.107 03-May-2009  pooka Rename rump_cred_destroy() to rump_cred_put() -- they've been
refcounted since forever now.
 1.106 02-May-2009  pooka Since rump_module_load() doesn't actually load the module, change
the name to rump_module_init(). Also, adjust the signature to take
a direct pointer to modinfo and allow passing of props. Finally,
provide rump_module_fini().
 1.105 30-Apr-2009  pooka Stir up the stack a bit to help arc4random() decide on a more
"random" seed. This is a quick hack, I'll play games with rnd(9)
later (no nethack).
 1.104 29-Apr-2009  pooka Add proof-of-concept code for enabling system calls to rump virtual
kernels running in other processes on the same machine or on an
entirely different host. I wrote this a while ago and am now
committing it mainly to avoid losing it. It works, but could do
with a little tuning here and there.

What this will hopefully eventually buy us is the ability to use
standard userland tools to configure rump kernels, e.g. ifconfig(8)
and route(8) could be used to configure the networking stack provided
by a rump kernel. Also some distributed OS implications may apply.

fun fact: a system call which just does copyin/copyout takes >1000x
longer when made over the LAN as compared to when made on the same
machine.
 1.103 29-Apr-2009  pooka include proc0 in allproc
 1.102 24-Apr-2009  pooka * init pool linksets, makes proplib work. reported by Arnaud Ysmal.
(linksets, sigh)
* reduce #ifdef for RUMP_USE_REAL_ALLOCATORS
 1.101 16-Apr-2009  pooka When I switched to real kauth, I forgot to include a secmodel.
Fix this oversight by including bsd44. Makes permissions for p2k
work again.
 1.100 29-Mar-2009  pooka include subr_evcnt
 1.99 19-Mar-2009  pooka Make it possible to mount a file system through the mount() system
call in addition to the old rump_mnt_mount(). Some issues remain
(but require more deeprooted changes):
* it is possible to mount only to /
* unmount needs MNT_FORCE due to the new fs being root and having
a bonus reference
* cwdi is not set (since there is no concept of a process)
 1.98 18-Mar-2009  pooka Remember to kqueue_init() too so that non-timer events work.
 1.97 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.96 20-Feb-2009  pooka need sys/syscall.h
 1.95 20-Feb-2009  pooka Add local syscall proxy as the default.
 1.94 12-Feb-2009  pooka Use p_nlwpid to store the next lwpid location.
 1.93 06-Feb-2009  pooka branches: 1.93.2;
Rip out the rwlock spl emulation code. It never did anything useful
except keep my feet warm by consuming an insane amount of cpu
cycles -- in rump our current "cpu" context is never interrupted
& we have MULTIPROCESSOR.

(itch i'm scratching: it made the networking stack 10-20% slower.
this is one of the places where fast code actually matters)
 1.92 06-Feb-2009  pooka Add weak alias stubs for a few vfs routines used by the module code -
this allows us to link programs with only rumpkern and rumpnet again.
 1.91 26-Jan-2009  pooka allocate proc_lock
 1.90 26-Jan-2009  pooka Init pool subsystem iff RUMP_USE_REAL_ALLOCATORS is defined.
 1.89 23-Jan-2009  pooka Add a compile-time option to use kmem/vmem/pools from the kernel
sources instead of homegrown allocators. Default to "on", even
though they appear to be a few percent slower at least on short
jobs (e.g. untar to tmpfs).
 1.88 13-Jan-2009  pooka misc cleanup, mainly header polish
 1.87 13-Jan-2009  pooka Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.86 11-Jan-2009  pooka __rump_unavailable -> rump__unavailable
 1.85 08-Jan-2009  pooka Put syspuffs_glueinit in the rump kernel namespace.
 1.84 07-Jan-2009  pooka Explicitly pass a pointer to the kernel lock/unlock routines in
rumpuser init instead of magically relying on the linker giving us
the symbols.
 1.83 07-Jan-2009  pooka _rump_init() - > rump__init()
 1.82 07-Jan-2009  pooka ksyms_init()
 1.81 02-Jan-2009  pooka Include kernel printf routines in rump instead of relying on the
magic libc symbol. This also allows to bid farewell to subr_prf2.c
and merge the contents back to subr_prf.c. The host kernel bridging
is now done via rumpuser_putchar().
 1.80 01-Jan-2009  pooka Define MODULAR for rump core components. This enables module
loading via the kernel module framework (instead of dlopen()).
For now it only works on amd64 and i386, but for the rest it should
just be a matter of including the relevant kobj_machdep.c modules
from the kernel sources.
 1.79 29-Dec-2008  pooka include subr_devsw in rumpkern
 1.78 18-Dec-2008  pooka __KERNEL_RCSID
 1.77 13-Dec-2008  pooka Get rid of local machine/{mutex,rwlock}.h files by treating the
object storage as a single pointer (all archs have at least one
uintptr_t in the objects).

(forgot to commmit with others)
 1.76 21-Nov-2008  pooka rump_vfs_load() is really rump_module_load(), so call it that and
move it from rumpvfs to rumpkern.
 1.75 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.74 18-Nov-2008  pooka Pass biodone() to rumpuser as a callback instead of hardcoding it.
Also, explicitly init rumpuser async io thread.
 1.73 17-Nov-2008  pooka Remove rump_vp locking interfaces, use RUMP_VOP instead.
 1.72 15-Oct-2008  pooka branches: 1.72.2;
One more init I happened to forget: iostat_init()
 1.71 15-Oct-2008  pooka Add support bits necessary for rumpnet functionality.
 1.70 13-Oct-2008  pooka award unlimited sbsize rlimit
 1.69 13-Oct-2008  pooka rump_enosys() is autogenerated into rump_syscalls (makes things
actually work)
 1.68 13-Oct-2008  pooka Add uid_init() I managed to miss earlier.
 1.67 13-Oct-2008  pooka add rump_enosys()
 1.66 12-Oct-2008  pooka Add callout inits which I managed to not commit earlier with the
rest of the callout stuff.

problem noticed by Arnaud Ysmal
 1.65 10-Oct-2008  pooka remember to call percpu_init()
 1.64 10-Oct-2008  pooka Support callouts and call callout_hardclock() from the timer
interrupt thread.

The sleepq implementation required for callouts is horrible, kludged
only for callouts, and generally unacceptable. It needs revisiting,
but I'm not sure yet should rump or kern_timeout be improved. It's
almost untested as of now, but committing this will give me some
maneuvering space while letting application compile.
 1.63 09-Oct-2008  pooka Rewrite interrupts to provide better softintr support, i.e. not
execute them simply in the context of the scheduling code, as this
does not work for all applications (e.g. networking soft interrupts).
Rather, schedule them and execute them from a separate context.

Also provide a timer which for now executes just hardclock_callout()
(well, at least after callouts are included in librump, which is
soon).
 1.62 09-Oct-2008  pooka No point in having our private atomic ops, just use the ones now
available in libc.
 1.61 07-Oct-2008  pooka Embed library build version into the init call and refuse to init
if they don't match. In other words, this is a lightweight library
major number.
 1.60 30-Sep-2008  pooka Check that we apply the previous kludge only to the root vnode.
 1.59 30-Sep-2008  pooka Switch to std kern_auth.
 1.58 30-Sep-2008  pooka Always set HASBUF when creating a componentname.
 1.57 30-Sep-2008  pooka Add an unspeakable kludge for nfs, which keeps an explicit reference
to the root vnode. Properly fixing this would require fixing p2k,
which would require fixing puffs, which has some optimizations,
which are incompatible with kernel file systems... guess my Eyes
of the Overworld were misplaced at that time.
 1.56 07-Sep-2008  pooka Give lwp0 an fd table and cwd. Allows easier direct use of rump.
 1.55 02-Sep-2008  pooka Make syspuffs mount code supply mount_syspuffs_parseargs() like
the other mount binaries do. Now syspuffs can be used to run all
puffs file systems as utilities. This includes fuse file systems
and becomes interesting with the fs-utils project. We can now do
e.g. this:

ReFUSE ntfs-3g:
golem> echo hello | fsu_write/fsu_write ntfs-3g puffs ~/img/ntfs.img dafile
golem> fsu_cat/fsu_cat ntfs-3g puffs ~/img/ntfs.img dafile
hello
golem>

puffs sysctlfs:
golem> fsu_ls/fsu_ls mount_sysctlfs puffs sysctl -l ddb
total 0
-r-xr-xr-x 1 pooka users 1 Sep 2 22:11 commandonenter
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 fromconsole
-r-xr-xr-x 1 pooka users 3 Sep 2 22:11 lines
-r-xr-xr-x 1 pooka users 8 Sep 2 22:11 maxoff
-r-xr-xr-x 1 pooka users 3 Sep 2 22:11 maxwidth
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 onpanic
-r-xr-xr-x 1 pooka users 3 Sep 2 22:11 radix
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 tabstops
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 tee_msgbuf

Same works for psshfs etcetc.

In other words, this provides total integration for "normal"
in-kernel file systems and puffs/fuse file systems on the ukfs
library level.

Note: implementation is still "first stab" and the fs-utils usage
will no doubt change.
 1.54 12-Aug-2008  pooka Make it possible to control starting of threads per env variable
instead of only at compile-time.
 1.53 08-Aug-2008  pooka Don't create a new proc structure for kthreads (pid == 0).
XXX: this routine should probably do better accounting and consistency
checks as well.
 1.52 04-Aug-2008  pooka Add support for using real kmem/vmem. Don't enable it by default,
though, since it a) is a lot of unnecessary indirection in rump
b) requires callouts which are so far unimplemented.
 1.51 01-Aug-2008  pooka support real sysctls
 1.50 01-Aug-2008  pooka Support ukfs_modload(), which dlopens and vfs_attaches rump file
system modules for use. Sneakily this solves the problem with the
dynamic linker not wanting to handle the modules link set for
binaries where more than one file system library is included during
the link phase and therefore only one of the file systems getting
vfs_attach()ed in rump "boot". But more importantly, this is really
TRTTD, since now applications can be built, linked and shipped
completely independently of the file systems they support.

tested by Arnaud Ysmal
 1.49 31-Jul-2008  simonb Merge the simonb-wapbl branch. From the original branch commit:

Add Wasabi System's WAPBL (Write Ahead Physical Block Logging)
journaling code. Originally written by Darrin B. Jewell while
at Wasabi and updated to -current by Antti Kantee, Andy Doran,
Greg Oster and Simon Burge.

OK'd by core@, releng@.
 1.48 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.47 03-Jun-2008  ad branches: 1.47.2; 1.47.4;
vfs_cache:

- Don't use goto in critical paths, it can confuse the compiler.
- Sprinkle some branch hints.
- Make namecache stats per-CPU and collate once per second.
- Use vtryget().
 1.46 20-May-2008  ad Fix rump build.
 1.45 06-May-2008  ad branches: 1.45.2;
PR kern/38141 lookup/vfs_busy acquire rwlock recursively

Simplify the mount locking. Remove all the crud to deal with recursion on
the mount lock, and crud to deal with unmount as another weirdo lock.

Hopefully this will once and for all fix the deadlocks with this. With this
commit there are two locks on each mount:

- krwlock_t mnt_unmounting. This is used to prevent unmount across critical
sections like getnewvnode(). It's only ever read locked with rw_tryenter(),
and is only ever write locked in dounmount(). A write hold can't be taken
on this lock if the current LWP could hold a vnode lock.

- kmutex_t mnt_updating. This is taken by threads updating the mount, for
example when going r/o -> r/w, and is only present to serialize updates.
In order to take this lock, a read hold must first be taken on
mnt_unmounting, and the two need to be held across the operation.

One effect of this change: previously if an unmount failed, we would make a
half hearted attempt to back out of it gracefully, but that was unlikely to
work in a lot of cases. Now while an unmount that will be aborted is in
progress, new file operations within the mount will fail instead of being
delayed. That is unlikely to be a problem though, because if the admin
requests unmount of a file system then s(he) has made a decision to deny
access to the resource.
 1.44 04-May-2008  ad Pull in the kernel module stuff so that rump can set up built-in modules.
 1.43 28-Apr-2008  pooka Unbreak recent breakage.
 1.42 24-Mar-2008  martin branches: 1.42.2; 1.42.4;
Adapt to sel* changes
 1.41 22-Mar-2008  ad Update for select/poll changes.
 1.40 21-Mar-2008  ad Catch up with descriptor handling changes. See kern_descrip.c revision
1.173 for details.
 1.39 18-Mar-2008  pooka Reorder a few init bits into a better order to make syspuffs work again.
 1.38 12-Mar-2008  pooka Implement all ukfs interfaces (except getdents, that's a bit more
tricky) with the help of rump system calls instead of calling namei
by themselves. Trust me when I say it was non-trivial to get the
namei calls right.
 1.37 12-Mar-2008  pooka Support multiple file systems within one process with ukfs by using
a "chroot" for each file system.
 1.36 11-Mar-2008  pooka Backup some fixes for recent breakage from local tree. Also some
other improvements such as exporting the real kernel namei and
using that in ukfs instead of the homegrown heap'o hacks namei.
"etcetc".
 1.35 30-Jan-2008  ad branches: 1.35.2; 1.35.6;
Make it compile.
 1.34 27-Jan-2008  pooka Replace vrelel() 010101-mania with a flags parameter. However,
leave flags unimplemented for a while (no change in functionality).
 1.33 27-Jan-2008  pooka Don't fool around when recycling vnodes, simply override refcount
to 1, hold on tight to your hat, and call recycle. The reason is
that we might pick up extra references such as from lookup and we
don't really care about tracking those. For example with p2k,
puffs in the kernel already does all the refcounting we could ever
dream of, and therefore it's left to the client and unnecessary.
 1.32 27-Jan-2008  pooka Use vfs_subr.c from sys/kern. This brings differences in the vnode
life cycle between rump and a real kernel to a minimum.
 1.31 24-Jan-2008  pooka Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().
 1.30 24-Jan-2008  ad specfs changes for PR kern/37717 (raidclose() is no longer called on
shutdown). There are still problems with device access and a PR will be
filed.

- Kill checkalias(). Allow multiple vnodes to reference a single device.

- Don't play dangerous tricks with block vnodes to ensure that only one
vnode can describe a block device. Instead, prohibit concurrent opens of
block devices. As a bonus remove the unreliable code that prevents
multiple file system mounts on the same device. It's no longer needed.

- Track opens by vnode and by device. Issue cdev_close() when the last open
goes away, instead of abusing vnode::v_usecount to tell if the device is
open.
 1.29 22-Jan-2008  pooka Until debugging threaded programs in NetBSD is fixed, supply the
cpp option RUMP_WITHOUT_THREADS as a workaround. If defined, it
makes rump itself operate single-threaded and prevents kthread_create()
from working.
 1.28 03-Jan-2008  pooka Theoretically this is supposed to be interchangeable with real
kernel code. Use kmem_alloc/free instead of some wily homerolled
rump interfaces for memory allocation.
 1.27 02-Jan-2008  pooka Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.26 02-Jan-2008  pooka fix vmlocking2 fallout:

* I heard a wild rumor that vp_interlock is a mutex these days (hi ad!)
* init new locks (hi ad)
* observe that with simple_locks only deadlocks would be caught while
releasing unlocked locks would go unnoticed. make locking work (hi pooka)
 1.25 30-Dec-2007  pooka pull in atomic ops from vmlocking2
 1.24 30-Dec-2007  pooka fake sigcantmask
 1.23 08-Dec-2007  pooka branches: 1.23.4;
Remove cn_lwp from struct componentname. curlwp should be used
from on. The NDINIT() macro no longer takes the lwp parameter and
associates the credentials of the calling thread with the namei
structure.
 1.22 26-Nov-2007  pooka branches: 1.22.2;
Remove the "struct lwp *" argument from all VFS and VOP interfaces.
The general trend is to remove it from all kernel interfaces and
this is a start. In case the calling lwp is desired, curlwp should
be used.

quick consensus on tech-kern
 1.21 07-Nov-2007  pooka Execute I/O in a separate thread for async I/O where previously
everything was written/read in caller context.

Also, make the "kernel" lock recursive. It works better that way ...
 1.20 07-Nov-2007  pooka final splash of ketchup after source update: init/fini mountspecific
 1.19 07-Nov-2007  pooka implement _kernel_lock{,_unlock}()
 1.18 07-Nov-2007  pooka Emulate spls by using pthread rwlocks: splfoo() takes a read lock
and when doing processing in an interrupt (effectively when calling
biodone()), we take the write lock.
 1.17 07-Nov-2007  pooka oops, backout part which wasn't supposed to go in
 1.16 07-Nov-2007  pooka Call buf_syncwait() after releasing a file system.
 1.15 04-Nov-2007  pooka branches: 1.15.2;
Make the strategy routine get the results through biowait() and
the "disk driver" (rumpuser) call biodone() to indicate the completion
of I/O. Support for B_ASYNC is coming at some point, but I need
more locking support in the emulated vm for that.
 1.14 31-Oct-2007  pooka branches: 1.14.2;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.13 19-Oct-2007  ad machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.12 02-Sep-2007  pooka branches: 1.12.2; 1.12.6;
* Give rump_vfs_root() the option of returning the vnode unlocked.
* initialize syncdelay
* implement io_sync handler
 1.11 01-Sep-2007  pooka avoid uninitialized warning from impossible enum
 1.10 25-Aug-2007  pooka branches: 1.10.2;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.
 1.9 21-Aug-2007  pooka Implement credentials. Access control is now similar to if the file
system were run in the kernel.
 1.8 20-Aug-2007  pooka branches: 1.8.2;
Hide NetBSD kernel headers completely from ukfs. This includes creating
accessors for:
* struct mount & VFS ops
* struct uio
* struct vnode
* struct vattr

and some namespace games for:
* namei flags
* VOPs
* enum vtype

Also, split rump services into two categories: library private and public
(rump_private.h and rump.h, respectively).

As a result, it is now possible to compile and use the NetBSD kernel
file systems on Linux (and probably other systems too with very
little work), although the makefiles need a bit of work to make it
a pleasureable experience.
 1.7 16-Aug-2007  pooka tweaks
 1.6 14-Aug-2007  pooka branches: 1.6.2;
* split userspace file system access into two separate libraries:
+ libp2k: the interface between libpuffs and vfs/vop
+ libukfs: generic user kernel file system library, usable
independent of libp2k and/or puffs
* use file system name (MOUNT_XYZ) instead of vfsops pointer to
mount file system
 1.5 14-Aug-2007  pooka Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.4 08-Aug-2007  pooka Provide rump_getvninfo() and use that in libp2k_lookup() to avoid an
extra getattr for stuff the file system already cached in the vnode.
 1.3 07-Aug-2007  pooka realpath() can also fail, take that into account
 1.2 06-Aug-2007  pooka branches: 1.2.2;
Allow to de/register pathnames which should be faked as block
devices instead of faking all non-blks as blks in namei().
 1.1 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.2.2.2 06-Aug-2007  pooka Allow to de/register pathnames which should be faked as block
devices instead of faking all non-blks as blks in namei().
 1.2.2.1 06-Aug-2007  pooka file rump.c was added on branch matt-mips64 on 2007-08-06 22:20:58 +0000
 1.6.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.6.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.6.2.1 14-Aug-2007  skrll file rump.c was added on branch nick-csl-alignment on 2007-08-15 13:50:40 +0000
 1.8.2.4 23-Oct-2007  ad Sync with head.
 1.8.2.3 09-Oct-2007  ad Sync with head.
 1.8.2.2 20-Aug-2007  ad Sync with HEAD.
 1.8.2.1 20-Aug-2007  ad file rump.c was added on branch vmlocking on 2007-08-20 22:07:29 +0000
 1.10.2.4 23-Mar-2008  matt sync with HEAD
 1.10.2.3 09-Jan-2008  matt sync with HEAD
 1.10.2.2 08-Nov-2007  matt sync with -HEAD
 1.10.2.1 06-Nov-2007  matt sync with HEAD
 1.12.6.2 13-Nov-2007  bouyer Sync with HEAD
 1.12.6.1 25-Oct-2007  bouyer Sync with HEAD.
 1.12.2.9 24-Mar-2008  yamt sync with head.
 1.12.2.8 17-Mar-2008  yamt sync with head.
 1.12.2.7 04-Feb-2008  yamt sync with head.
 1.12.2.6 21-Jan-2008  yamt sync with head
 1.12.2.5 07-Dec-2007  yamt sync with head
 1.12.2.4 15-Nov-2007  yamt sync with head.
 1.12.2.3 27-Oct-2007  yamt sync with head.
 1.12.2.2 03-Sep-2007  yamt sync with head.
 1.12.2.1 02-Sep-2007  yamt file rump.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:33 +0000
 1.14.2.7 09-Dec-2007  jmcneill Sync with HEAD.
 1.14.2.6 27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.14.2.5 11-Nov-2007  joerg Sync with HEAD.
 1.14.2.4 04-Nov-2007  jmcneill Sync with HEAD.
 1.14.2.3 02-Nov-2007  joerg Remove the rest of the unintentional diff in sys/rump.
 1.14.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.14.2.1 31-Oct-2007  joerg file rump.c was added on branch jmcneill-pm on 2007-10-31 23:14:17 +0000
 1.15.2.4 18-Feb-2008  mjf Sync with HEAD.
 1.15.2.3 27-Dec-2007  mjf Sync with HEAD.
 1.15.2.2 08-Dec-2007  mjf Sync with HEAD.
 1.15.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.22.2.2 28-Dec-2007  ad Make rump build.
 1.22.2.1 26-Dec-2007  ad Sync with head.
 1.23.4.3 23-Jan-2008  bouyer Sync with HEAD.
 1.23.4.2 08-Jan-2008  bouyer Sync with HEAD
 1.23.4.1 02-Jan-2008  bouyer Sync with HEAD
 1.35.6.6 17-Jan-2009  mjf Sync with HEAD.
 1.35.6.5 05-Oct-2008  mjf Sync with HEAD.
 1.35.6.4 28-Sep-2008  mjf Sync with HEAD.
 1.35.6.3 05-Jun-2008  mjf Sync with HEAD.

Also fix build.
 1.35.6.2 02-Jun-2008  mjf Sync with HEAD.
 1.35.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.35.2.1 24-Mar-2008  keiichi sync with head.
 1.42.4.9 09-Oct-2010  yamt sync with head
 1.42.4.8 11-Aug-2010  yamt sync with head.
 1.42.4.7 11-Mar-2010  yamt sync with head
 1.42.4.6 16-Sep-2009  yamt sync with head
 1.42.4.5 19-Aug-2009  yamt sync with head.
 1.42.4.4 20-Jun-2009  yamt sync with head
 1.42.4.3 16-May-2009  yamt sync with head
 1.42.4.2 04-May-2009  yamt sync with head.
 1.42.4.1 16-May-2008  yamt sync with head.
 1.42.2.3 17-Jun-2008  yamt sync with head.
 1.42.2.2 04-Jun-2008  yamt sync with head
 1.42.2.1 18-May-2008  yamt sync with head.
 1.45.2.4 10-Oct-2008  skrll Sync with HEAD.
 1.45.2.3 24-Sep-2008  wrstuden Merge in changes between wrstuden-revivesa-base-2 and
wrstuden-revivesa-base-3.
 1.45.2.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.45.2.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.47.4.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.47.4.1 19-Oct-2008  haad Sync with HEAD.
 1.47.2.2 31-Jul-2008  simonb Sync with head.
 1.47.2.1 10-Jun-2008  simonb Initial commit of Wasabi System's WAPBL (Write Ahead Physical Block
Logging) journaling code. Originally written by Darrin B. Jewell
while at Wasabi and updated to -current by Antti Kantee, Andy Doran,
Greg Oster and Simon Burge.

Still a number of issues - look in doc/BRANCHES for "simonb-wapbl"
for more info.
 1.72.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.72.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.72.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.93.2.2 23-Jul-2009  jym Sync with HEAD.
 1.93.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.151.2.4 06-Nov-2010  uebayasi Sync with HEAD.
 1.151.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.151.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.151.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.155.2.4 21-Apr-2011  rmind sync with head
 1.155.2.3 05-Mar-2011  rmind sync with head
 1.155.2.2 03-Jul-2010  rmind sync with head
 1.155.2.1 30-May-2010  rmind sync with head
 1.219.4.2 17-Feb-2011  bouyer Sync with HEAD
 1.219.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.219.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.234.4.5 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.234.4.4 23-Jan-2013  yamt sync with head
 1.234.4.3 30-Oct-2012  yamt sync with head
 1.234.4.2 17-Apr-2012  yamt sync with head
 1.234.4.1 02-Nov-2011  yamt page cache related changes

- maintain object pages in radix tree rather than rb tree.
- reduce unnecessary page scan in putpages. esp. when an object has a ton of
pages cached but only a few of them are dirty.
- reduce the number of pmap operations by tracking page dirtiness more
precisely in uvm layer.
- fix nfs commit range tracking.
- fix nfs write clustering. XXX hack
 1.237.2.1 18-Feb-2012  mrg merge to -current.
 1.240.2.1 18-Nov-2012  riz Pull up following revision(s) (requested by rmind in ticket #678):
sys/rump/librump/rumpkern/rump.c: revision 1.243
sys/rump/librump/rumpkern/rump.c: revision 1.244
sys/rump/librump/rumpkern/rump.c: revision 1.245
sys/rump/librump/rumpkern/rump.c: revision 1.246
usr.sbin/npf/npftest/npftest.c: revision 1.5
usr.sbin/npf/npftest/README: revision 1.2
usr.sbin/npf/npftest/npftest.h: revision 1.5
sys/rump/net/Makefile.rumpnetcomp: revision 1.5
sys/rump/net/lib/libnpf/shlib_version: revision 1.1
sys/net/npf/npf_impl.h: revision 1.22
sys/rump/dev/lib/libnpf/Makefile: file removal
usr.sbin/npf/npftest/Makefile: revision 1.3
sys/rump/dev/lib/libnpf/component.c: file removal
sys/rump/dev/lib/libnpf/shlib_version: file removal
sys/net/npf/npf_state.c: revision 1.12
sys/rump/net/lib/libnpf/component.c: revision 1.1
usr.sbin/npf/npftest/libnpftest/npf_test_subr.c: revision 1.4
usr.sbin/npf/npftest/libnpftest/npf_test.h: revision 1.6
sys/rump/net/lib/libnpf/Makefile: revision 1.1
Move and rename librumpdev_npf to librumpnet_npf.
Enable the build of librumpnet_npf.
Add npf_state_setsampler() for _NPF_TESTING case. This also fixes the build.
Call pserialize_init() during rump start-up, since librump/net/npf
uses it.
It helps to include the declaration of the routine being called.
We also need kcpuset_init() now.
Use correct routine name - kcpuset_sysinit() vs kcpuset_init()
 1.246.2.5 03-Dec-2017  jdolecek update from HEAD
 1.246.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.246.2.3 23-Jun-2013  tls resync from head
 1.246.2.2 25-Feb-2013  tls resync with head
 1.246.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.270.2.2 18-May-2014  rmind sync with head
 1.270.2.1 28-Aug-2013  rmind sync with head
 1.292.2.1 10-Aug-2014  tls Rebase.
 1.308.2.4 09-May-2016  snj Pull up following revision(s) (requested by joerg in ticket #1162):
sys/rump/librump/rumpkern/rump.c: revision 1.329
Align the message buffer. The kernel routines normally are used only
with page aligned buffers and they assume at least pointer alignment. Be
defensive here and align to 256 Bytes.
 1.308.2.3 25-Mar-2015  snj Pull up following revision(s) (requested by maxv in ticket #617):
sys/kern/kern_malloc.c: revision 1.144, 1.145
sys/kern/kern_pmf.c: revision 1.37
sys/rump/librump/rumpkern/rump.c: revision 1.316
sys/uvm/uvm_extern.h: revision 1.193
sys/uvm/uvm_km.c: revision 1.139
Don't include <uvm/uvm_extern.h>
--
Kill kmeminit().
--
Remove this MALLOC_DEFINE (M_PMF unused).
 1.308.2.2 09-Dec-2014  martin Pull up following revision(s) (requested by gson in ticket #299):
sys/rump/librump/rumpkern/cons.c: revision 1.4
sys/rump/librump/rumpkern/rump.c: revision 1.311
lib/librumpuser/rumpuser_sp.c: revision 1.67
No longer create a special process context to fork remote clients off
of, simply always rfork off of proc1 closing all descriptors, and have
the rump kernel open 0/1/2 if the parent process is "1".
Fixes tests/rump/rumpkernel/t_sp, which was failing since the
abovementioned special process change due to attempting to deliver a
signal to the special process and the special process was not equipped
to handle one.
 1.308.2.1 15-Aug-2014  martin Pull up following revision(s) (requested by riastradh in ticket #23):
sys/rump/librump/rumpkern/rump.c: revision 1.310
sys/rump/librump/rumpkern/rump.c: revision 1.309
sys/kern/init_main.c: revision 1.459
Defer cprng_fast_init until CPUs are detected.
Restore placement of percpu_init in rump_init.
Probably doesn't matter, but let's avoid needless churn around the
real bug fix.
 1.312.2.4 19-Mar-2016  skrll Sync with HEAD
 1.312.2.3 22-Sep-2015  skrll Sync with HEAD
 1.312.2.2 06-Jun-2015  skrll Sync with HEAD
 1.312.2.1 06-Apr-2015  skrll Sync with HEAD
 1.329.10.2 22-Jan-2018  martin Pull up following revision(s) (requested by jdolecek in ticket #506):
sys/kern/kern_softint.c: revision 1.45
sys/rump/librump/rumpkern/rump.c: revision 1.331
sys/kern/subr_pserialize.c: revision 1.10
sys/kern/subr_psref.c: revision 1.10
Prevent panic or hangup in softint_disestablish(), pserialize_perform() or
psref_target_destroy() while mp_online == false.
See http://mail-index.netbsd.org/tech-kern/2017/12/25/msg022829.html
Set mp_online = true. This change might fix PR#52886.
 1.329.10.1 30-Nov-2017  martin Pull up following revision(s) (requested by ozaki-r in ticket #405):
sys/sys/pserialize.h: revision 1.2
sys/kern/kern_lock.c: revision 1.160
sys/kern/subr_pserialize.c: revision 1.9
sys/rump/librump/rumpkern/emul.c: revision 1.184
sys/rump/librump/rumpkern/emul.c: revision 1.185
sys/rump/librump/rumpkern/rump.c: revision 1.330
Implement debugging feature for pserialize(9)
The debugging feature detects violations of pserialize constraints.
It causes a panic:
- if a context switch happens in a read section, or
- if a sleepable function is called in a read section.
The feature is enabled only if LOCKDEBUG is on.
Discussed on tech-kern@
Add missing inclusion of pserialize.h (fix build)
 1.329.8.1 27-Apr-2017  pgoyette Restore all work from the former pgoyette-localcount branch (which is
now abandoned doe to cvs merge botch).

The branch now builds, and installs via anita. There are still some
problems (cgd is non-functional and all atf tests time-out) but they
will get resolved soon.
 1.329.2.1 18-Jul-2016  pgoyette We also need to init devsw's pserialize stuff when running as rump.

XXX Noted that in rump, pserialize is initialized much sooner than devsw,
XXX while in "real" kernels, pserialize comes _after_ devsw. Hmmm.
 1.331.4.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.331.4.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.331.4.1 10-Jun-2019  christos Sync with HEAD
 1.331.2.1 18-Jan-2019  pgoyette Synch with HEAD
 1.339.2.1 29-Feb-2020  ad Sync with head.
 1.344.2.1 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.349.2.2 03-Apr-2021  thorpej Sync with HEAD.
 1.349.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.35 17-Nov-2008  pooka Move rump public headers to include/rump
 1.34 07-Oct-2008  pooka branches: 1.34.2;
Embed library build version into the init call and refuse to init
if they don't match. In other words, this is a lightweight library
major number.
 1.33 30-Sep-2008  pooka Switch to std kern_auth.
 1.32 02-Sep-2008  pooka Make syspuffs mount code supply mount_syspuffs_parseargs() like
the other mount binaries do. Now syspuffs can be used to run all
puffs file systems as utilities. This includes fuse file systems
and becomes interesting with the fs-utils project. We can now do
e.g. this:

ReFUSE ntfs-3g:
golem> echo hello | fsu_write/fsu_write ntfs-3g puffs ~/img/ntfs.img dafile
golem> fsu_cat/fsu_cat ntfs-3g puffs ~/img/ntfs.img dafile
hello
golem>

puffs sysctlfs:
golem> fsu_ls/fsu_ls mount_sysctlfs puffs sysctl -l ddb
total 0
-r-xr-xr-x 1 pooka users 1 Sep 2 22:11 commandonenter
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 fromconsole
-r-xr-xr-x 1 pooka users 3 Sep 2 22:11 lines
-r-xr-xr-x 1 pooka users 8 Sep 2 22:11 maxoff
-r-xr-xr-x 1 pooka users 3 Sep 2 22:11 maxwidth
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 onpanic
-r-xr-xr-x 1 pooka users 3 Sep 2 22:11 radix
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 tabstops
-r-xr-xr-x 1 pooka users 2 Sep 2 22:11 tee_msgbuf

Same works for psshfs etcetc.

In other words, this provides total integration for "normal"
in-kernel file systems and puffs/fuse file systems on the ukfs
library level.

Note: implementation is still "first stab" and the fs-utils usage
will no doubt change.
 1.31 08-Aug-2008  pooka minor nit: fix header #ifndef namespacing
 1.30 01-Aug-2008  pooka Support ukfs_modload(), which dlopens and vfs_attaches rump file
system modules for use. Sneakily this solves the problem with the
dynamic linker not wanting to handle the modules link set for
binaries where more than one file system library is included during
the link phase and therefore only one of the file systems getting
vfs_attach()ed in rump "boot". But more importantly, this is really
TRTTD, since now applications can be built, linked and shipped
completely independently of the file systems they support.

tested by Arnaud Ysmal
 1.29 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.28 01-Jul-2008  pooka branches: 1.28.2;
Fixes to build rump utilities as host binaries on Linux by removing
sys namespace pollution which has crept in.

Submitted in private mail by takemura, domain ca2.so-net.ne.jp
 1.27 06-Jun-2008  pooka branches: 1.27.2;
Use -3 for wizardmode credentials instead of -1. Technically we
shouldn't have to do this, but some pieces of kernel code still
make direct comparisons like cred == NOCRED (which, incidentally,
is defined as -1).
 1.26 12-Mar-2008  pooka branches: 1.26.2; 1.26.4; 1.26.6;
Support chdir. This is useful for example when testing and not
wanting to stress namei() so much as test individual ops.
XXX: it should be implemented per calling thread, not per fs.
 1.25 12-Mar-2008  pooka Support multiple file systems within one process with ukfs by using
a "chroot" for each file system.
 1.24 11-Mar-2008  pooka Backup some fixes for recent breakage from local tree. Also some
other improvements such as exporting the real kernel namei and
using that in ukfs instead of the homegrown heap'o hacks namei.
"etcetc".
 1.23 27-Jan-2008  pooka branches: 1.23.2; 1.23.6;
Don't fool around when recycling vnodes, simply override refcount
to 1, hold on tight to your hat, and call recycle. The reason is
that we might pick up extra references such as from lookup and we
don't really care about tracking those. For example with p2k,
puffs in the kernel already does all the refcounting we could ever
dream of, and therefore it's left to the client and unnecessary.
 1.22 27-Jan-2008  pooka Use vfs_subr.c from sys/kern. This brings differences in the vnode
life cycle between rump and a real kernel to a minimum.
 1.21 24-Jan-2008  pooka Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().
 1.20 02-Jan-2008  pooka fix vmlocking2 fallout:

* I heard a wild rumor that vp_interlock is a mutex these days (hi ad!)
* init new locks (hi ad)
* observe that with simple_locks only deadlocks would be caught while
releasing unlocked locks would go unnoticed. make locking work (hi pooka)
 1.19 26-Nov-2007  pooka branches: 1.19.6;
Remove the "struct lwp *" argument from all VFS and VOP interfaces.
The general trend is to remove it from all kernel interfaces and
this is a start. In case the calling lwp is desired, curlwp should
be used.

quick consensus on tech-kern
 1.18 07-Nov-2007  pooka Emulate spls by using pthread rwlocks: splfoo() takes a read lock
and when doing processing in an interrupt (effectively when calling
biodone()), we take the write lock.
 1.17 07-Nov-2007  pooka Call buf_syncwait() after releasing a file system.
 1.16 31-Oct-2007  pooka branches: 1.16.2; 1.16.4;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.15 02-Sep-2007  pooka branches: 1.15.2; 1.15.6;
* Give rump_vfs_root() the option of returning the vnode unlocked.
* initialize syncdelay
* implement io_sync handler
 1.14 25-Aug-2007  pooka branches: 1.14.2;
Don't play rename & typecast games with kauth_cred_t, but rather
declare the type in rump.h only if necessary with the help of ifdef
magic.
 1.13 21-Aug-2007  pooka Implement credentials. Access control is now similar to if the file
system were run in the kernel.
 1.12 20-Aug-2007  pooka branches: 1.12.2;
Hide NetBSD kernel headers completely from ukfs. This includes creating
accessors for:
* struct mount & VFS ops
* struct uio
* struct vnode
* struct vattr

and some namespace games for:
* namei flags
* VOPs
* enum vtype

Also, split rump services into two categories: library private and public
(rump_private.h and rump.h, respectively).

As a result, it is now possible to compile and use the NetBSD kernel
file systems on Linux (and probably other systems too with very
little work), although the makefiles need a bit of work to make it
a pleasureable experience.
 1.11 19-Aug-2007  pooka Namespace management: do not call VOP_FOO directly from ukfs or
p2k, but rather make the calls go through librump. This avoids
having to include NetBSD kernel headers in userspace programs.
Stay tuned for some more mods of the same sort ...
 1.10 16-Aug-2007  pooka tweaks
 1.9 14-Aug-2007  pooka branches: 1.9.2;
* split userspace file system access into two separate libraries:
+ libp2k: the interface between libpuffs and vfs/vop
+ libukfs: generic user kernel file system library, usable
independent of libp2k and/or puffs
* use file system name (MOUNT_XYZ) instead of vfsops pointer to
mount file system
 1.8 14-Aug-2007  pooka Add some barely staggering code to get more disklabel support.
 1.7 13-Aug-2007  pooka nuke no longer used vm macros
 1.6 11-Aug-2007  pooka * move rump_vopwrite_fault() into history - we now support the file
system faulting in pages if it does e.g. fragment reallocation
* get rid of rumpvm_findpage() and always use uvm_pagelookup()
* determine a vnode's cleanness by flagging it as being on the work
list if we "take" a write fault and removing it from the worklist
once pages are flushed. There is no work list here, but at least
there is symmetry with the kernel.
 1.5 08-Aug-2007  pooka Provide rump_getvninfo() and use that in libp2k_lookup() to avoid an
extra getattr for stuff the file system already cached in the vnode.
 1.4 07-Aug-2007  pooka remove the allocstorage param from makepage - not needed
 1.3 07-Aug-2007  pooka track dirty vm objects
 1.2 06-Aug-2007  pooka branches: 1.2.2;
Allow to de/register pathnames which should be faked as block
devices instead of faking all non-blks as blks in namei().
 1.1 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.2.2.2 06-Aug-2007  pooka Allow to de/register pathnames which should be faked as block
devices instead of faking all non-blks as blks in namei().
 1.2.2.1 06-Aug-2007  pooka file rump.h was added on branch matt-mips64 on 2007-08-06 22:20:58 +0000
 1.9.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.9.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.9.2.1 14-Aug-2007  skrll file rump.h was added on branch nick-csl-alignment on 2007-08-15 13:50:41 +0000
 1.12.2.3 12-Oct-2007  ad Fix merge errors.
 1.12.2.2 20-Aug-2007  ad Sync with HEAD.
 1.12.2.1 20-Aug-2007  ad file rump.h was added on branch vmlocking on 2007-08-20 22:07:30 +0000
 1.14.2.4 23-Mar-2008  matt sync with HEAD
 1.14.2.3 09-Jan-2008  matt sync with HEAD
 1.14.2.2 08-Nov-2007  matt sync with -HEAD
 1.14.2.1 06-Nov-2007  matt sync with HEAD
 1.15.6.1 13-Nov-2007  bouyer Sync with HEAD
 1.15.2.7 17-Mar-2008  yamt sync with head.
 1.15.2.6 04-Feb-2008  yamt sync with head.
 1.15.2.5 21-Jan-2008  yamt sync with head
 1.15.2.4 07-Dec-2007  yamt sync with head
 1.15.2.3 15-Nov-2007  yamt sync with head.
 1.15.2.2 03-Sep-2007  yamt sync with head.
 1.15.2.1 02-Sep-2007  yamt file rump.h was added on branch yamt-lazymbuf on 2007-09-03 14:45:34 +0000
 1.16.4.3 18-Feb-2008  mjf Sync with HEAD.
 1.16.4.2 08-Dec-2007  mjf Sync with HEAD.
 1.16.4.1 19-Nov-2007  mjf Sync with HEAD.
 1.16.2.5 27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.16.2.4 11-Nov-2007  joerg Sync with HEAD.
 1.16.2.3 02-Nov-2007  joerg Remove the rest of the unintentional diff in sys/rump.
 1.16.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.16.2.1 31-Oct-2007  joerg file rump.h was added on branch jmcneill-pm on 2007-10-31 23:14:17 +0000
 1.19.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.23.6.6 17-Jan-2009  mjf Sync with HEAD.
 1.23.6.5 05-Oct-2008  mjf Sync with HEAD.
 1.23.6.4 28-Sep-2008  mjf Sync with HEAD.
 1.23.6.3 02-Jul-2008  mjf Sync with HEAD.
 1.23.6.2 29-Jun-2008  mjf Sync with HEAD.
 1.23.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.23.2.1 24-Mar-2008  keiichi sync with head.
 1.26.6.3 10-Oct-2008  skrll Sync with HEAD.
 1.26.6.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.26.6.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.26.4.1 04-May-2009  yamt sync with head.
 1.26.2.1 17-Jun-2008  yamt sync with head.
 1.27.2.2 31-Jul-2008  simonb Sync with head.
 1.27.2.1 03-Jul-2008  simonb Sync with head.
 1.28.2.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.28.2.1 19-Oct-2008  haad Sync with HEAD.
 1.34.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.2 23-Nov-2010  pooka branches: 1.2.6;
Add aliases for _atomic_cas_foo, as they are used often. A snafu
in "./build.sh rumptest" prevented me from noticing this yesterday,
so thanks to Nick Hudson for re-pinging.
(I'll fix build.sh shortly)
 1.1 22-Nov-2010  pooka rename atomic_cas_up to rump_atomic_cas_up to avoid collisions
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 23-Nov-2010  rmind file rump_atomic_cas_up.c was added on branch rmind-uvmplock on 2011-03-05 20:56:15 +0000
 1.3 07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.2 24-Apr-2021  thorpej branches: 1.2.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.1 13-May-2019  bad branches: 1.1.2; 1.1.14;
On the one thousand and ninth day rump's mainbus was moved from
rumpdev to rumpkern, liberating all rumpnet users from the need to
-lrumpdev -lrumpvfs just because a loopback interface is mandatory.

Rename rumpdev/autoconf.c to rumpkern/rump_autoconf.c to avoid
accidentally picking up e.g. sys/arch/amd64/amd64/autoconf.c through
make's .PATH.
Move rumpdev/MAINBUS.ioconf to rumpkern.
 1.1.14.5 05-Apr-2021  thorpej Treat config_probe() as if it were a boolean function; don't compare
return value > 0... except for the odd balls, which are now really easy
to spot.
 1.1.14.4 05-Apr-2021  thorpej config_match() -> config_probe() for the straight-forward indirect config
cases. There are still a few odd balls using config_match() which should
be sorted out later.
 1.1.14.3 04-Apr-2021  thorpej CFARG_SUBMATCH -> CFARG_SEARCH for the indirect configuration uses.
 1.1.14.2 03-Apr-2021  thorpej Give config_attach() the tagged variadic argument treatment and
mechanically convert all call sites.
 1.1.14.1 20-Mar-2021  thorpej The proliferation if config_search_*() and config_found_*() combinations
is a little absurd, so begin to tidy this up:

- Introduce a new cfarg_t enumerated type, that defines the types of
tag-value variadic arguments that can be passed to the various
config_*() functions (CFARG_SUBMATCH, CFARG_IATTR, and CFARG_LOCATORS,
for now, plus a CFARG_EOL sentinel).
- Collapse config_search_*() into config_search() that takes these
variadic arguments.
- Convert all call sites of config_search_*() to the new signature.
Noticed several incorrect usages along the way, which will be
audited in a future commit.
 1.1.2.2 10-Jun-2019  christos Sync with HEAD
 1.1.2.1 13-May-2019  christos file rump_autoconf.c was added on branch phil-wifi on 2019-06-10 22:09:53 +0000
 1.2.8.1 05-Aug-2021  thorpej Adapt to CFARGS().
 1.2 16-Mar-2014  pooka branches: 1.2.4; 1.2.6; 1.2.10;
remove unnecesary verbosity: s/RUMP_CURLWP_MODEL/RUMP_CURLWP/
 1.1 15-Mar-2014  pooka Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 16-Mar-2014  tls file rump_curlwp.h was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 16-Mar-2014  yamt file rump_curlwp.h was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 16-Mar-2014  rmind file rump_curlwp.h was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.3 19-Apr-2018  christos s/static inline/static __inline/g for consistency.
 1.2 16-Mar-2014  pooka branches: 1.2.4; 1.2.6; 1.2.10; 1.2.34;
remove unnecesary verbosity: s/RUMP_CURLWP_MODEL/RUMP_CURLWP/
 1.1 15-Mar-2014  pooka Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.2.34.1 22-Apr-2018  pgoyette Sync with HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 16-Mar-2014  tls file rump_curlwp___thread.h was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 16-Mar-2014  yamt file rump_curlwp___thread.h was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 16-Mar-2014  rmind file rump_curlwp___thread.h was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.3 19-Apr-2018  christos s/static inline/static __inline/g for consistency.
 1.2 16-Mar-2014  pooka branches: 1.2.4; 1.2.6; 1.2.10; 1.2.34;
remove unnecesary verbosity: s/RUMP_CURLWP_MODEL/RUMP_CURLWP/
 1.1 15-Mar-2014  pooka Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.2.34.1 22-Apr-2018  pgoyette Sync with HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 16-Mar-2014  tls file rump_curlwp_hypercall.h was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 16-Mar-2014  yamt file rump_curlwp_hypercall.h was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 16-Mar-2014  rmind file rump_curlwp_hypercall.h was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.2 23-Mar-2015  pooka branches: 1.2.16;
fix typo

"set curlwp to context" -> "set curlwp to implicit context"
from Martin Lucina <martin@lucina.net>
 1.1 09-Nov-2014  pooka branches: 1.1.2;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 23-Mar-2015  jdolecek file rump_lwproc.3 was added on branch tls-maxphys on 2017-12-03 11:39:16 +0000
 1.94 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.93 18-Jan-2016  pooka Fix dlopen()/dlclose()+RUMP_USE_CTOR to not leave dangling pointers around.
 1.92 22-Apr-2015  pooka Apparently not all ports define struct clockframe in cpu.h, so we cannot
provide our definition that way. Instead, generate the struct clockframe
passed to hardclock() in MD code.
 1.91 18-Apr-2015  pooka Give remote clients struct pmap storage. Although the pmap is unused,
that way we can sure that the pmap macro framework doesn't access all
the wrong places.
 1.90 17-Apr-2015  pooka Give the kernel/local pmaps actual storage.

That way friendly neighborhood macros won't go scribbling
in the wrong places.
 1.89 03-Apr-2015  pooka Use RUMP_PMAP_KERNEL and RUMP_PMAP_LOCAL to denote
kernel and local client pmaps, respectively.
 1.88 03-Apr-2015  pooka Use a different vmspace for rump kernel proc0 and local clients.
While the rump kernel and local clients are by definition in the same
host vmspace, there are subtle differences in how in-kernel code works
in case accessing the kernel vmspace or a user process vmspace.

Problem discovered by riastradh's "read(fd, NULL, 1)" test.
 1.87 07-Jan-2015  pooka Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.86 03-Jan-2015  pooka Put all sysproxy routines to their own C module, sysproxy.c
 1.85 27-Apr-2014  pooka branches: 1.85.4;
unsprinkle const to fix clang build. mmm, travis ci
 1.84 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 4:

Do not query system call handlers by using the rumpuser_dl_globalsym()
hypercall -- it will not work in environments which are not in control
of their own symbols (e.g. rumpuser-xen). Instead, provide
rump_syscall_boot_establish(), which component constructors can use
to establish their non-modular syscalls.
 1.83 23-Apr-2014  pooka Add a RUMP_USE_CTOR compile-time switch. If defined, use
__attribute__((constructor)) to determine which rump kernel components
and kernel modules are linked into the rump kernel. If not defined
(default), use the regular approach with link sets.

This option is aimed to fix problems with toolchains where using link
sets is not possible because the linker does not generate the requisite
__start/__stop symbols for the link set sections (e.g. GNU gold, OS X, ...).
 1.82 23-Apr-2014  pooka Include LIST_ENTRY() in "struct rump_component".

Main benefit: rump_component_load() can now be called from an
early-running constructor since the routine doesn't need to allocate
memory.
 1.81 09-Apr-2014  pooka implement lwp_create() and a few related interfaces.
main raison d'impalerment: the aio driver
 1.80 15-Mar-2014  pooka branches: 1.80.2;
Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.79 17-Jan-2014  pooka Use subr_cprng.c instead of stub implementation. Rijndael migrates from
rumpkern_crypto to rumpkern due to it being mandatory for cprng.
 1.78 27-Oct-2013  pooka Enable holding implicit threads over explicit scheduling points (i.e.
a kernel driver calling rump_lwproc_switch()). Also, correctly handle
curcpu()->ci_curlwp and biglock there.
 1.77 17-Sep-2013  pooka Make it possible to run component constructors after mainbus attaches,
but before config_finalize() is run.
 1.76 07-Sep-2013  pooka Add an initial console device and open fd's 0/1/2 for initproc. This is
again useful in standalone-type environments such as Xen, where all
printf/etc calls go through the rump kernel.
 1.75 03-Sep-2013  pooka Don't autogenerate the wrapper that is called from the rump kernel
local syscall entry points. The wrapper is now so big that it doesn't
get inlined (original intent for having it close to the entry points),
and autogenerating a regular function just loses in flexibility.
 1.74 10-Mar-2013  pooka branches: 1.74.6;
Don't allow kernel threads to run before all CPUs have been initialized
to avoid them getting scheduled on non-initialized CPUs.
 1.73 19-Feb-2013  martin Stopgap fix to make rump cooperate with pserialize, may be revisited later.
Patch from pooka, ok: rmind. No related regressions in a complete atf test
run (which works again with this, even on non x86 SMP machines).
 1.72 14-Jan-2013  pooka Don't use __weak_alias where the component framework is sufficient.
 1.71 09-Oct-2012  pooka Gather some statistics about biglock usage.
 1.70 21-Mar-2011  pooka branches: 1.70.4; 1.70.14;
Update copyright statements.

no functional change.
 1.69 13-Jan-2011  pooka branches: 1.69.2;
Introduce RUMP_LOCALPROC_P() macro and use it.
 1.68 11-Jan-2011  pooka Add one more component level to networking: IFCFG.
It is executed after IF and the purposes to guarantee the right
order in cross-component interface address configuration.
(e.g. lo0 is attached by net but 127.0.0.1 is configured by netinet)
 1.67 09-Jan-2011  pooka Allow multiple RUMP_COMPONENT() in one file.
 1.66 07-Jan-2011  pooka Avoid double init of tty_lock if rumpkern_tty is included. LOCKDEBUG
does not tolerate double inits.

pointed out by njoly
 1.65 01-Dec-2010  pooka Track lwp as the rumpuser mutex owner instead of pthread_t (this
is done in rumpuser for simplicity, since on the kernel side things
we assume we have only one pointer of space). As a side-effect,
we can no longer know if the current thread is holding on to a
mutex locked without curlwp context (basically all mutexes inited
outside of mutex_init()). The only thing that called rumpuser_mutex_held()
for a non-kmutex was the giant lock. So, instead implement recursive
locking for the giant lock in the rump kernel and get rid of the
now-unused recursive pthread mutex in the hypercall interface.
 1.64 21-Nov-2010  pooka Fix situation where we try to configure >MAXCPUS cpus.
 1.63 17-Nov-2010  pooka Remove unused rump_set_vmspace. An equivalent needs to come back
later, though, but in its current form it's just unusable garbage.
 1.62 17-Nov-2010  pooka cleanup some old garbage
 1.61 04-Nov-2010  pooka Refactor the sysproxy code so that rumpuser contains only the server side.
 1.60 29-Oct-2010  pooka Attach implicit threads to initproc instead of proc0. This way
applications which alter, by purpose or by accident, the uid in an
implicit thread are don't affect kernel threads.

from discussion with njoly
 1.59 27-Oct-2010  pooka Start rework of system call proxying over socket ("sysproxy").
This incarnation is written in the user namespace as opposed to
the previous one which was done in kernel namespace. Also, rump
does all the handshaking now instead of excepting an application
to come up with the user namespace socket.

There's still a lot to do, including making code "a bit" more
robust, actually running different clients in a different process
inside the kernel and splitting the client side library from librump.
I'm committing this now so that I don't lose it, plus it generally
works as long as you don't use it in unexcepted ways: i've tested
ifconfig(8), route(8), envstat(8) and sysctl(8).
 1.58 07-Sep-2010  pooka Make the Diabolical (Page)Daemon Director drain vfs buffers when
we are short of memory.

There are still some funnies left to iron out. For example, with
a certain file system / memory size configuration it's still not
possible to create enough files to make the file system run out of
inodes before the kernel runs out of memory. Also, with some other
configurations disk access slows down gargantually (though i'm sure
there are >0 buffers available). Anyway, it ~works for now and
it's by no means worse than what it was before.
 1.57 07-Sep-2010  pooka Allocate softint vectors for the final number of CPUs, not the
number currently attached. Deals with a SNAFU in my commit earlier
today which would cause softints established early to lack a
softint context on non-bootstrap CPUs.
 1.56 07-Sep-2010  pooka Attach only one CPU for the bootstrap phase.
 1.55 01-Sep-2010  pooka Implement rump_lwproc: the new lwp/proc management routines for
rump. These move the management of the pid/lwpid space from the
application into the kernel, make code more robust, and make it
possible to attach multiple lwp's to non-proc0 processes.
 1.54 14-Jun-2010  pooka Make it possible to define an upper limit for memory consumed by
the rump kernel by specifying RUMP_MEMLIMIT. In case allocation
over that limit is attempted, essentially pool reclaim and uvm_wait()
is done. The default is to allow to allocate as much as the host
will give.

XXX: uvm_km_alloc and malloc(9) do not currently conform. the
former is easy, the latter requires kern_malloc.c (rump malloc is
currently directly relegated to host malloc).
 1.53 13-Jun-2010  pooka Move FLAWLESSCALL from rump_dev_private.h into rump_private.h
so it can be used outside of devices.
 1.52 12-Jun-2010  pooka Support rumpkern components and rumpkern components depending on vfs init.
 1.51 10-Jun-2010  pooka Use kern_proc.c instead of a collection of stubs. But what we
really wanted from this commit was the support for proc_specificdata.

TODO: make creating a new process actually use kern_proc and
maybe even add an interface which starts a process with
"any pid you don't like"
 1.50 03-Jun-2010  pooka Implement a sort-of pagedaemon: adjust all memory allocators to go
through an in-rumpkernel hypermemory allocator which knows it should
kick the pagedaemon and block in case ``waitok'' memory allocation
fails.

This allows us to recover from some out-of-memory situations.
Realworld'istically speaking (as opposed to whatever "should be"
theory), these OOM situations will happen extremely rarely if ever
when our hypervisor is a regular process. Speculatively, this
should be useful for other types of hosts.

issues remaining:
* the hypervisor does not know how to reclaim kernel memory (and
for the reason I stated above, I'm not sure if it makes sense
to teach the current implementation about that)
* vfs memory (buffers, vm object pages etc.) is not reclaimed
 1.49 02-Jun-2010  pooka rumpvm_init -> uvm_init to get rid of local prototype.
no functional change
 1.48 01-Jun-2010  pooka * remove rumpvm_makepage, just use uvm_pagealloc()
* update copyright to reflect reality a little better
 1.47 31-May-2010  pooka Support mtsleep() without a biglocked sleeper (uvm uses this in
UVM_UNLOCK_AND_WAIT())
 1.46 18-May-2010  pooka Namespace rump-only kernel biglock routines appropriately.

No functional change.
 1.45 18-May-2010  pooka Make it possible to use the scheduler lock as the rumpuser condvar
interlock. This is applicable in cases where the actual interlock
is the CPU the currently running thread is scheduled on. Borrowing
the scheduler lock as the mutex mandated by pthread_cond_wait()
does away with need to have an additional mutex. This both optimizes
runtime execution and simplifies code, as the extra lock typically
lead to quite some trickeries to avoid the dungeon collapsing due
to zaps from the wand of deadlock.
 1.44 27-Apr-2010  pooka Fix multiple virtual cpu support.

... or at least on x86. CPU_INFO_FOREACH() still isn't MI, and I
don't want to support 2^n different versions.
 1.43 01-Mar-2010  pooka branches: 1.43.2;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.42 05-Dec-2009  pooka branches: 1.42.2;
Remove now-empty rump_sleepers_init()
 1.41 04-Dec-2009  pooka g/c unused functions (previously used by the vnode pager).
 1.40 03-Dec-2009  pooka Remove last remnants of the long-ago-properly-fixed RUMP_LMUTEX_MAGIC hack.
 1.39 03-Dec-2009  pooka Decide it's not worth the fuss to have rumpfs as a module and just
hardcode attach into rump_vfs_init(). Saves us from a lot of
pingpong init bouncing from one component to another to get the order
right.
 1.38 02-Dec-2009  uebayasi Declare global pointers as extern, otherwise they become common symbols.
Fix mips build in lib/librumpnet.
 1.37 01-Dec-2009  pooka Almost there for virtual CPU MP support:
* support bound kernel threads
* bind softint threads to specific virtual cpus
+ remove now-unnecessary locks from softint code

Now, if we only had MI CPU_INFO_FOREACH() .... (hi rmind ;)
 1.36 26-Nov-2009  pooka For rumpfs, do mountroot instead of the bunch of homegrown hacks
currently there. Still needs a little massage to get the kernel
interfaces right and avoid copypaste especially from main().

Also, move it a bit more into the direction of a real file system
(finally!) by giving it a vfsops. Most ops are still unimplemented,
though.
 1.35 09-Nov-2009  pooka Hash out soft interrupts to be a little closer to real softints:
* split them into levels
* allow only one per level to be active at a time
* fire softints only when we are unscheduling from a CPU instead
of immediately in softint_schedule(). this will later morph
into return from interrupt, but that part isn't done yet.
 1.34 16-Oct-2009  pooka Include sys_select.c for proper select()/poll() support.
 1.33 15-Oct-2009  pooka When allocating the temporary lwp we must have an lwp context. So
take turns using lwp0 for this purpose, nothing else uses it.
 1.32 15-Oct-2009  pooka Give lwp usage some much-needed love: stop treating lwp0 as the
all-sink and make sure each separate thread in rump has its own
lwp. Happy-go-lucky callers will get scheduled a temporary lwp
on entry, while true lwp connoisseurs may request a stable lwp
for their purposes. Some more love may be required later down the
road, but for now different threads will stepping on each others
toes.
 1.31 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.30 14-Oct-2009  pooka g/c some stuff which wasn't supposed to see the light of day
 1.29 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.28 29-Apr-2009  pooka Add proof-of-concept code for enabling system calls to rump virtual
kernels running in other processes on the same machine or on an
entirely different host. I wrote this a while ago and am now
committing it mainly to avoid losing it. It works, but could do
with a little tuning here and there.

What this will hopefully eventually buy us is the ability to use
standard userland tools to configure rump kernels, e.g. ifconfig(8)
and route(8) could be used to configure the networking stack provided
by a rump kernel. Also some distributed OS implications may apply.

fun fact: a system call which just does copyin/copyout takes >1000x
longer when made over the LAN as compared to when made on the same
machine.
 1.27 26-Apr-2009  pooka Fix getnano/microuptime to report actual uptime.
 1.26 06-Apr-2009  pooka let drivers define DPRINTF
 1.25 20-Feb-2009  pooka Add local syscall proxy as the default.
 1.24 07-Feb-2009  pooka branches: 1.24.2;
Make the clock interrupt tick based on absolute time instead of
relative time. This prevents drifting. Also, keep track of time
within userspace, so we do not have to make a syscall to get the
clock value. This is approximately 7 times cheaper, but on the
negative side is limited to the clock interrupt frequency.
 1.23 13-Jan-2009  pooka misc cleanup, mainly header polish
 1.22 13-Jan-2009  pooka Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.21 02-Jan-2009  pooka Include kernel printf routines in rump instead of relying on the
magic libc symbol. This also allows to bid farewell to subr_prf2.c
and merge the contents back to subr_prf.c. The host kernel bridging
is now done via rumpuser_putchar().
 1.20 29-Dec-2008  pooka Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.
 1.19 29-Dec-2008  pooka Register a dummy block device for rump, since some file systems do
a sanity check to see if the block device exists. This dummy block
device should eventually replace rump specfs.
 1.18 16-Dec-2008  pooka Make rumpflushva flush only the atop info for a certain uvm object.
Better, but still not completely race-free (if two threads call
RUMP_VOP_PUTPAGES() directly for the same vm object).
 1.17 13-Dec-2008  pooka Get rid of local machine/{mutex,rwlock}.h files by treating the
object storage as a single pointer (all archs have at least one
uintptr_t in the objects).
 1.16 27-Nov-2008  pooka Remove the whole magic ubc window thingie. All file systems use
ubc_uiomove() now, so we can hook ourselves there.
 1.15 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.14 18-Nov-2008  pooka Pass biodone() to rumpuser as a callback instead of hardcoding it.
Also, explicitly init rumpuser async io thread.
 1.13 13-Oct-2008  pooka branches: 1.13.2;
rump_enosys() is autogenerated into rump_syscalls (makes things
actually work)
 1.12 13-Oct-2008  pooka add rump_enosys()
 1.11 10-Oct-2008  pooka Support callouts and call callout_hardclock() from the timer
interrupt thread.

The sleepq implementation required for callouts is horrible, kludged
only for callouts, and generally unacceptable. It needs revisiting,
but I'm not sure yet should rump or kern_timeout be improved. It's
almost untested as of now, but committing this will give me some
maneuvering space while letting application compile.
 1.10 12-Aug-2008  pooka Make it possible to control starting of threads per env variable
instead of only at compile-time.
 1.9 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.8 24-Jan-2008  pooka branches: 1.8.6; 1.8.10; 1.8.12; 1.8.14; 1.8.16;
Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().
 1.7 25-Dec-2007  perry Convert many of the uses of __attribute__ to equivalent
__packed, __unused and __dead macros from cdefs.h
 1.6 07-Nov-2007  pooka branches: 1.6.2; 1.6.6;
implement _kernel_lock{,_unlock}()
 1.5 06-Nov-2007  pooka Sprinkle some more locking, especially to the vm. Due to some
additional fixes, it's now possible to run file systems with
spinlocks actually enabled. The genfs_putpages() locking is still
working only due to greater powers, but I'll eventually get around to
fixing it.
 1.4 04-Nov-2007  pooka branches: 1.4.2;
* sprinkle some locking into the vm code
* avoid extra insert+search+remove step in file systems using
ubc_uiomove() instead of standard uiomove()
 1.3 31-Oct-2007  pooka branches: 1.3.2;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.2 01-Sep-2007  pooka branches: 1.2.2; 1.2.4; 1.2.8; 1.2.10;
* fill struct buf a little better
* hop, skip & jump to make uvm_pageratop work
 1.1 20-Aug-2007  pooka branches: 1.1.2;
add rump private parts I forgot to commit earlier today
 1.1.2.4 23-Mar-2008  matt sync with HEAD
 1.1.2.3 09-Jan-2008  matt sync with HEAD
 1.1.2.2 08-Nov-2007  matt sync with -HEAD
 1.1.2.1 06-Nov-2007  matt sync with HEAD
 1.2.10.1 13-Nov-2007  bouyer Sync with HEAD
 1.2.8.2 09-Oct-2007  ad Sync with head.
 1.2.8.1 01-Sep-2007  ad file rump_private.h was added on branch vmlocking on 2007-10-09 13:45:04 +0000
 1.2.4.5 04-Feb-2008  yamt sync with head.
 1.2.4.4 21-Jan-2008  yamt sync with head
 1.2.4.3 15-Nov-2007  yamt sync with head.
 1.2.4.2 03-Sep-2007  yamt sync with head.
 1.2.4.1 01-Sep-2007  yamt file rump_private.h was added on branch yamt-lazymbuf on 2007-09-03 14:45:35 +0000
 1.2.2.2 03-Sep-2007  skrll Sync with HEAD.
 1.2.2.1 01-Sep-2007  skrll file rump_private.h was added on branch nick-csl-alignment on 2007-09-03 10:23:56 +0000
 1.3.2.6 11-Nov-2007  joerg Sync with HEAD.
 1.3.2.5 06-Nov-2007  joerg Sync with HEAD.
 1.3.2.4 04-Nov-2007  jmcneill Sync with HEAD.
 1.3.2.3 02-Nov-2007  joerg Remove the rest of the unintentional diff in sys/rump.
 1.3.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.3.2.1 31-Oct-2007  joerg file rump_private.h was added on branch jmcneill-pm on 2007-10-31 23:14:17 +0000
 1.4.2.2 18-Feb-2008  mjf Sync with HEAD.
 1.4.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.6.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.6.2.1 26-Dec-2007  ad Sync with head.
 1.8.16.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.8.16.1 19-Oct-2008  haad Sync with HEAD.
 1.8.14.1 31-Jul-2008  simonb Sync with head.
 1.8.12.2 10-Oct-2008  skrll Sync with HEAD.
 1.8.12.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.8.10.4 09-Oct-2010  yamt sync with head
 1.8.10.3 11-Aug-2010  yamt sync with head.
 1.8.10.2 11-Mar-2010  yamt sync with head
 1.8.10.1 04-May-2009  yamt sync with head.
 1.8.6.2 17-Jan-2009  mjf Sync with HEAD.
 1.8.6.1 28-Sep-2008  mjf Sync with HEAD.
 1.13.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.13.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.13.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.24.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.42.2.4 06-Nov-2010  uebayasi Sync with HEAD.
 1.42.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.42.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.42.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.43.2.4 21-Apr-2011  rmind sync with head
 1.43.2.3 05-Mar-2011  rmind sync with head
 1.43.2.2 03-Jul-2010  rmind sync with head
 1.43.2.1 30-May-2010  rmind sync with head
 1.69.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.70.14.5 03-Dec-2017  jdolecek update from HEAD
 1.70.14.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.70.14.3 23-Jun-2013  tls resync from head
 1.70.14.2 25-Feb-2013  tls resync with head
 1.70.14.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.70.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.70.4.2 23-Jan-2013  yamt sync with head
 1.70.4.1 30-Oct-2012  yamt sync with head
 1.74.6.1 18-May-2014  rmind sync with head
 1.80.2.1 10-Aug-2014  tls Rebase.
 1.85.4.3 19-Mar-2016  skrll Sync with HEAD
 1.85.4.2 06-Jun-2015  skrll Sync with HEAD
 1.85.4.1 06-Apr-2015  skrll Sync with HEAD
 1.164 09-Oct-2024  christos regen
 1.163 05-Oct-2024  mlelstv regen
 1.162 03-Oct-2024  christos regen
 1.161 20-May-2024  christos branches: 1.161.2;
regen
 1.160 19-May-2024  christos regen
 1.159 28-Jul-2023  christos regen
 1.158 10-Jul-2023  christos Regen
 1.157 01-Nov-2021  thorpej regen for "struct sigaltstack" -> "stack_t"
 1.156 19-Sep-2021  thorpej Regen for eventfd(2) and timerfd(2).
 1.155 02-Nov-2020  christos regen
 1.154 14-Aug-2020  riastradh branches: 1.154.2;
regen
 1.153 11-Jun-2020  dholland Regen with new makesyscalls.

(the large diff of rump_syscalls.h has been checked and was the point
of the makesyscalls change)
 1.152 02-Jun-2020  kamil Regenerate syscalls

Respect syscall alias names in rump.

No binary change in this version.

The previous commit was interrupted in the middle by CVS network outage.
 1.151 02-Jun-2020  kamil Regenerate native NetBSD syscalls

The only change is rump repecting syscall alias names.

No binary change.
 1.150 16-May-2020  christos Add ACL support for FFS. From FreeBSD.
 1.149 26-Apr-2020  thorpej Regen for futex call relocation.
 1.148 26-Apr-2020  thorpej Regen for native futex calls.
 1.147 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.146 22-Apr-2020  thorpej Regen for removal of _lwp_gettid(2).
 1.145 04-Apr-2020  thorpej branches: 1.145.2;
Regen for _lwp_gettid(2).
 1.144 21-Jan-2020  pgoyette Regen
 1.143 09-Oct-2019  christos branches: 1.143.2;
regen
 1.142 22-Sep-2019  christos regen
 1.141 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.140 10-Aug-2018  pgoyette Regen
 1.139 31-Jul-2018  rjs regen.
 1.138 12-Jul-2018  maxv Remove the kernel PMC code. Sent yesterday on tech-kern@.

This change:

* Removes "options PERFCTRS", the associated includes, and the associated
ifdefs. In doing so, it removes several XXXSMPs in the MI code, which is
good.

* Removes the PMC code of ARM XSCALE.

* Removes all the pmc.h files. They were all empty, except for ARM XSCALE.

* Reorders the x86 PMC code not to rely on the legacy pmc.h file. The
definitions are put in sysarch.h.

* Removes the kern/sys_pmc.c file, and along with it, the sys_pmc_control
and sys_pmc_get_info syscalls. They are marked as OBSOL in kern,
netbsd32 and rump.

* Removes the pmc_evid_t and pmc_ctr_t types.

* Removes all the associated man pages. The sets are marked as obsolete.
 1.137 06-Jan-2018  kamil branches: 1.137.2; 1.137.4;
Revert vadvise(2) removal

This system call was used in legacy Lisp code, that was inherited to modern
age and still compiled against supported compat layers (e.g. in clisp,
oaklisp, Franz Lisp).

It used to instruct the kernel about paging policy (G/C aware, flush etc).

Newly compiled code (assuming that it will detect vadvise()) will use the
libc stub for vadvise(). The headers for this interface are gone.

vadvise(2) could be marked as COMPAT_80, but as long as we support ultrix,
sunos or aout68k ABI, don't bother with this.

Requested by <mrg>
 1.136 19-Dec-2017  kamil Drop SYS_vadvise

The (o)vadvise syscall is dummy since the beginning of NetBSD.

It is an obsolete remnant from the old UNIX.

Sponsored by <The NetBSD Foundation>
 1.135 19-Dec-2017  kamil Drop SYS_sbrk

sbrk - change data segment size

This syscall is dummy since the inception of the project.

Sponsored by <The NetBSD Foundation>
 1.134 19-Dec-2017  kamil Drop the sstk(2) syscall stub

sstk - change stack section size

This functionality has never been implemented and is a remnant from 16-bit
UNIX. This stub appeared with the first NetBSD commit.

Sponsored by <The NetBSD Foundation>
 1.133 08-Dec-2017  christos regen
XXX: pullup-8
 1.132 10-May-2017  riastradh regen
 1.131 13-Jan-2017  christos branches: 1.131.6;
regen
 1.130 02-Nov-2016  pgoyette Forgot these two generated files...
 1.129 03-Jul-2016  christos branches: 1.129.2;
regen
 1.128 06-May-2016  pooka regen syscall files
 1.127 23-Apr-2016  christos regen
 1.126 03-Apr-2016  christos regen
 1.125 03-Apr-2016  christos regen
 1.124 02-Apr-2016  christos regen
 1.123 26-Jan-2016  pooka regen syscall files
 1.122 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.121 03-Dec-2015  pgoyette Regen
 1.120 01-Dec-2015  pgoyette Regen
 1.119 30-Nov-2015  pgoyette Finish the regen - some of the files from sys/kern got committed
accidentally with the fix to makesyscalls.sh - sorry about that.
 1.118 30-Nov-2015  pgoyette Regen for 7.99.23
 1.117 14-Oct-2015  christos CID 1327233: Expicitly ignore return values of syscalls that don't fail.
 1.116 10-Oct-2015  pgoyette Regen
 1.115 24-Sep-2015  christos regen
 1.114 24-Aug-2015  pooka regen
 1.113 18-Jun-2015  pooka regen
 1.112 13-May-2015  pgoyette Regenerate
 1.111 10-May-2015  pgoyette Regen for changes related to separation of compat_sysv syscalls into a
separate module.
 1.110 09-May-2015  pgoyette Regen again, this time without the extra word in the "generated from" line.
 1.109 09-May-2015  pgoyette Regen from syscalls.master
 1.108 08-Apr-2015  justin regen after syscall update
 1.107 08-Mar-2015  christos regen
 1.106 07-Mar-2015  christos regen
 1.105 25-Feb-2015  christos belated regen (posix_fallocate, readlinkat)
 1.104 25-Jul-2014  dholland branches: 1.104.2; 1.104.4;
Regen for fdiscard and posix_fallocate.
 1.103 24-Jul-2014  pooka regen
 1.102 23-Jul-2014  pooka regen
 1.101 12-Jun-2014  joerg Regenerate
 1.100 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 5:

regen syscalls to eliminate weak aliases and link-time initialization
 1.99 09-Apr-2014  pooka regen
 1.98 14-Mar-2014  pooka branches: 1.98.2;
regen: time/timer related syscalls for rump kernels
 1.97 11-Dec-2013  pooka reregengen
 1.96 09-Dec-2013  pooka regen
 1.95 09-Dec-2013  pooka regen
 1.94 09-Dec-2013  pooka regen
 1.93 09-Dec-2013  pooka regen
 1.92 17-Oct-2013  njoly Regen for mknodat(2) device argument type change.
 1.91 10-Sep-2013  pooka regen
 1.90 03-Sep-2013  pooka regen
 1.89 30-Aug-2013  pooka regen
 1.88 15-Aug-2013  pooka regen
 1.87 10-May-2013  christos branches: 1.87.2;
regen (stale)
 1.86 07-Mar-2013  pooka regen
 1.85 17-Jan-2013  pooka regen
 1.84 02-Oct-2012  christos regen
 1.83 20-Sep-2012  pooka regen
 1.82 03-Aug-2012  pooka branches: 1.82.2;
reregen
 1.81 03-Aug-2012  pooka regen
 1.80 20-Jul-2012  pooka reregen
 1.79 20-Jul-2012  pooka regen
 1.78 08-Mar-2012  joerg Implement sem_timedwait.
 1.77 11-Feb-2012  martin branches: 1.77.2;
Regen for posix_spawn
 1.76 01-Feb-2012  dholland Regen syscalls with proper id info.
 1.75 01-Feb-2012  dholland Change the syscall API for quotas over to the new non-proplib one.

- struct vfs_quotactl_args -> struct quotactl_args
- add sys/stdint.h to sys/quotactl.h for clean userland build
- install sys/quotactl.h in /usr/include
- update set lists for same
- add new marshalling code in libquota
- add new unmarshalling code in vfs_syscalls.c
- discard proplib interpreter code in vfs_quotactl.c
- add dispatching code for the 14 quotactl ops in vfs_quotactl.c
- mark the proplib quotactl syscall obsolete
- add a new syscall number for the new quotactl syscall
- change the name of the syscall to __quotactl()
- remove the decl of the old quotactl from quota/quotaprop.h
- add a decl of the new quotactl to sys/quotactl.h
- update the libc build
- update ktruss
- remove proplib marshalling code from libquota
- update copy of syscall table in gdb ppc sources
- hack rumphijack to accomodate new quotactl name (as I recall,
pooka wanted such a name change to simplify something, but I
don't really see what/how)

This change appears to require a kernel version bump for rumpish
reasons.
 1.74 08-Aug-2011  manu branches: 1.74.2; 1.74.6;
regen
 1.73 18-Jul-2011  drochner regen after *setxattr constification
 1.72 26-Jun-2011  christos regen
 1.71 08-Mar-2011  pooka regen: include rumpclient syscall headers from source tree instead of host
 1.70 06-Mar-2011  bouyer merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.69 22-Feb-2011  pooka omstart
 1.68 22-Feb-2011  pooka regenagain: make returning off_t work (without breaking other return
types on some archs)
 1.67 22-Feb-2011  pooka unregen
 1.66 22-Feb-2011  pooka regen: cast rval to return type instead of just using rval[0]
 1.65 21-Feb-2011  pooka regen: NOERR syscalls
 1.64 21-Feb-2011  pooka regen: preadv/pwritev
 1.63 21-Feb-2011  pooka regen: always explicitly set errno (fixes some apps)
 1.62 21-Feb-2011  pooka commit regen for int -> pid_t fix
 1.61 17-Jan-2011  pooka branches: 1.61.2;
regen: more compat syscalls
 1.60 17-Jan-2011  pooka regen: rework rump syscall stubs (see makesyscalls.sh log for details)
 1.59 10-Jan-2011  christos branches: 1.59.2;
regen
 1.58 30-Dec-2010  pooka regen for comments
 1.57 30-Dec-2010  pooka regen: SYCALL_NOSYS in rump_sysent[]
 1.56 30-Dec-2010  pooka regen: whitespace polish police
 1.55 17-Nov-2010  pooka regen: optimize local syscall path a bit
 1.54 11-Nov-2010  pooka +posix_fadvise
 1.53 04-Nov-2010  pooka regen: standalone client support for rump syscalls
 1.52 01-Nov-2010  pooka regen: whitespace blues
 1.51 07-Sep-2010  pooka regen: getcwd
 1.50 06-Sep-2010  pooka regen: umask
 1.49 30-Aug-2010  pooka regen: rump syscalls for kern_prot interfaces
 1.48 30-Aug-2010  pooka Empty commit to show makesyscalls.sh rev 1.99 didn't change anything (yet).
 1.47 19-Jul-2010  pooka Regen syscalls to get compat header included.
 1.46 10-Jun-2010  pooka regen: ksem syscalls
 1.45 04-Jun-2010  njoly Regen for pathconf/fpathconf rumpification.
 1.44 11-May-2010  pooka regen: _RUMPKERNEL -> _KERNEL
 1.43 27-Apr-2010  pooka regen: rump_enosys -> sys_nomodule for modular system calls
 1.42 21-Apr-2010  pooka regen: get/setrlimit
 1.41 05-Mar-2010  pooka branches: 1.41.2;
regen (for lfs syscalls #ifdef removal).
 1.40 26-Nov-2009  pooka branches: 1.40.2;
regen for rump_sys_pipe()
 1.39 26-Nov-2009  pooka regen: retval -> retval[2]
 1.38 26-Nov-2009  pooka regen: rump_sys_modctl()
 1.37 13-Oct-2009  pooka regen: fix rump varargs syscalls prototypes
 1.36 21-Jul-2009  pooka regen: fh syscalls
 1.35 15-May-2009  pooka regen: removal of pad arguments from the public interfaces
 1.34 28-Mar-2009  pooka regen: new syscalls
 1.33 19-Mar-2009  pooka regen: rump_sys_mount()
 1.32 18-Mar-2009  pooka regen: kevent and kqueue
 1.31 18-Mar-2009  pooka regen: arg -> callarg
 1.30 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.29 20-Feb-2009  pooka regen: make syscalls through a table
 1.28 26-Jan-2009  pooka branches: 1.28.2;
regen for new syscalls
 1.27 23-Jan-2009  pooka regen: int *error is dead.
 1.26 14-Jan-2009  pooka regen: internal prototype for rump_syscalls.c
 1.25 13-Jan-2009  pooka Regen. We now have compat __RENAME(). E.g. what was previously
rump_sys___stat50() is now rump_sys_stat() from the code.
 1.24 11-Jan-2009  tsutsui Regen to pull proper "created from" revision strings.
 1.23 11-Jan-2009  christos merge christos-time_t
 1.22 26-Nov-2008  pooka regen
 1.21 16-Nov-2008  pooka regen
 1.20 16-Oct-2008  wrstuden branches: 1.20.2; 1.20.4; 1.20.8;
Regen syscall tables. I forgot to do it after revivesa. While pooka
did some, not all are regenerated. Do them all at once for consistency.
 1.19 16-Oct-2008  pooka regen: ioctl
 1.18 15-Oct-2008  pooka regen: few networking calls
 1.17 15-Oct-2008  wrstuden Merge wrstuden-revivesa into HEAD.
 1.16 13-Oct-2008  pooka regen: properly create weak references to sys_foo()
 1.15 13-Oct-2008  pooka regen - weak aliasing for default syscall
 1.14 07-Sep-2008  pooka regen: return -1 for error
 1.13 01-Aug-2008  pooka regen: sys___sysctl
 1.12 16-Jul-2008  pooka regen: fsync
 1.11 07-Jul-2008  pooka branches: 1.11.2;
regen: u times, lu times, you know i had my share
 1.10 01-Jul-2008  pooka regen
 1.9 17-Jun-2008  tsutsui Regen from syscalls.master rev 1.204.
 1.8 29-May-2008  pooka branches: 1.8.2;
regen
 1.7 24-Apr-2008  ad branches: 1.7.2; 1.7.4;
Regen.
 1.6 21-Apr-2008  ad Regen.
 1.5 27-Mar-2008  ad branches: 1.5.2; 1.5.4; 1.5.6;
Regen.
 1.4 24-Mar-2008  yamt regen.
 1.3 24-Mar-2008  yamt regen.
 1.2 21-Mar-2008  ad branches: 1.2.2; 1.2.4;
Er, regen...
 1.1 11-Mar-2008  pooka branches: 1.1.2;
gen
 1.1.2.3 24-Mar-2008  yamt sync with head.
 1.1.2.2 17-Mar-2008  yamt sync with head.
 1.1.2.1 11-Mar-2008  yamt file rump_syscalls.c was added on branch yamt-lazymbuf on 2008-03-17 09:15:46 +0000
 1.2.4.2 24-Mar-2008  keiichi sync with head.
 1.2.4.1 21-Mar-2008  keiichi file rump_syscalls.c was added on branch keiichi-mipv6 on 2008-03-24 07:16:28 +0000
 1.2.2.2 23-Mar-2008  matt sync with HEAD
 1.2.2.1 21-Mar-2008  matt file rump_syscalls.c was added on branch matt-armv6 on 2008-03-23 02:05:09 +0000
 1.5.6.2 04-Jun-2008  yamt sync with head
 1.5.6.1 18-May-2008  yamt sync with head.
 1.5.4.7 17-Jan-2009  mjf Sync with HEAD.
 1.5.4.6 28-Sep-2008  mjf Sync with HEAD.
 1.5.4.5 02-Jul-2008  mjf Sync with HEAD.
 1.5.4.4 29-Jun-2008  mjf Sync with HEAD.
 1.5.4.3 02-Jun-2008  mjf Sync with HEAD.
 1.5.4.2 03-Apr-2008  mjf Sync with HEAD.
 1.5.4.1 27-Mar-2008  mjf file rump_syscalls.c was added on branch mjf-devfs2 on 2008-04-03 12:43:11 +0000
 1.5.2.9 29-Dec-2008  christos regen
 1.5.2.8 28-Dec-2008  christos missing const
 1.5.2.7 27-Dec-2008  christos merge with head.
 1.5.2.6 20-Nov-2008  christos catch up with head.
 1.5.2.5 20-Nov-2008  christos merge with head.
 1.5.2.4 09-Nov-2008  christos regen
 1.5.2.3 09-Nov-2008  christos regen
 1.5.2.2 01-Nov-2008  christos Sync with head.
 1.5.2.1 29-Mar-2008  christos Welcome to the time_t=long long dev_t=uint64_t branch.
 1.7.4.6 24-Sep-2008  wrstuden Merge in changes between wrstuden-revivesa-base-2 and
wrstuden-revivesa-base-3.
 1.7.4.5 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.7.4.4 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.7.4.3 28-May-2008  wrstuden Regen.
 1.7.4.2 14-May-2008  wrstuden Per discussion with ad, remove most of the #include <sys/sa.h> lines
as they were including sa.h just for the type(s) needed for syscallargs.h.

Instead, create a new file, sys/satypes.h, which contains just the
types needed for syscallargs.h. Yes, there's only one now, but that
may change and it's probably more likely to change if it'd be difficult
to handle. :-)

Per discussion with matt at n dot o, add an include of satypes.h to
sigtypes.h. Upcall handlers are kinda signal handlers, and signalling
is the header file that's already included for syscallargs.h that
closest matches SA.

This shaves about 3000 lines off of the diff of the branch relative
to the base. That also represents about 18% of the total before this
checkin.

I think this reduction is very good thing.
 1.7.4.1 10-May-2008  wrstuden Initial checkin of re-adding SA. Everything except kern_sa.c
compiles in GENERIC for i386. This is still a work-in-progress, but
this checkin covers most of the mechanical work (changing signalling
to be able to accomidate SA's process-wide signalling and re-adding
includes of sys/sa.h and savar.h). Subsequent changes will be much
more interesting.

Also, kern_sa.c has received partial cleanup. There's still more
to do, though.
 1.7.2.6 09-Oct-2010  yamt sync with head
 1.7.2.5 11-Aug-2010  yamt sync with head.
 1.7.2.4 11-Mar-2010  yamt sync with head
 1.7.2.3 19-Aug-2009  yamt sync with head.
 1.7.2.2 16-May-2009  yamt sync with head
 1.7.2.1 04-May-2009  yamt sync with head.
 1.8.2.3 18-Jul-2008  simonb Sync with head.
 1.8.2.2 03-Jul-2008  simonb Sync with head.
 1.8.2.1 18-Jun-2008  simonb Sync with head.
 1.11.2.3 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.11.2.2 19-Oct-2008  haad Sync with HEAD.
 1.11.2.1 07-Jul-2008  haad file rump_syscalls.c was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.20.8.1 21-Apr-2010  matt sync to netbsd-5
 1.20.4.1 17-Sep-2011  bouyer Pull up following revision(s) (requested by manu in ticket #1658):
sys/rump/include/rump/rump_syscalls.h: revision 1.52 via patch
sys/kern/init_sysent.c: revision 1.257 via patch
sys/rump/include/rump/rumpvnode_if.h: revision 1.12 via patch
lib/libc/sys/Makefile.inc: revision 1.208 via patch
sys/sys/syscallargs.h: revision 1.227 via patch
sys/kern/kern_exec.c: revision 1.317 via patch
sys/rump/librump/rumpkern/rump_syscalls.c: revision 1.74 via patch
include/limits.h: revision 1.30 via patch
sys/kern/syscalls.master: revision 1.251 via patch
sys/sys/vnode_if.h: revision 1.83 via patch
sys/sys/fcntl.h: revision 1.40 via patch
sys/sys/fcntl.h: revision 1.41 via patch
sys/kern/vfs_syscalls.c: revision 1.433 via patch
sys/rump/librump/rumpvfs/rumpvnode_if.c: revision 1.11 via patch
sys/kern/syscalls.c: revision 1.248 via patch
sys/sys/syscall.h: revision 1.244 via patch
lib/libc/sys/link.2: revision 1.25 via patch
include/unistd.h: revision 1.127 via patch
distrib/sets/lists/comp/mi: revision 1.1659 via patch
sys/sys/stat.h: revision 1.61 via patch
First stage of support for Extended API set 2. Most of the think is
unimplemented, except enough of linkat(2) to hardlink to a symlink.
Everything new in headers is guarded #ifdef _INCOMPLETE_XOPEN_C063 since
some software (e.g.: xcvs in our own tree) will assume they can use openat(2)
when AT_FDCWD is defined. _INCOMPLETE_XOPEN_C063 will go away once support
will be completed.
regen
improve comment about AT_* defines: they are not only used by linkat(2)
Add macros to hide OpenGroup extened API set 2 from GNU configure. This
is a temporary workaround until the implementation is completed.
 1.20.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.20.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.20.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.28.2.2 23-Jul-2009  jym Sync with HEAD.
 1.28.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.40.2.4 06-Nov-2010  uebayasi Sync with HEAD.
 1.40.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.40.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.40.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.41.2.4 21-Apr-2011  rmind sync with head
 1.41.2.3 05-Mar-2011  rmind sync with head
 1.41.2.2 03-Jul-2010  rmind sync with head
 1.41.2.1 30-May-2010  rmind sync with head
 1.59.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.61.2.2 05-Mar-2011  bouyer Sync with HEAD
 1.61.2.1 20-Jan-2011  bouyer Snapshot of work in progress on a modernised disk quota system:
- new quotactl syscall (versionned for backward compat), which takes
as parameter a path to a mount point, and a prop_dictionary
(in plistref format) describing commands and arguments.
For each command, status and data are returned as a prop_dictionary.
quota commands features will be added to take advantage of this,
exporting quota data or getting quota commands as plists.

- new on disk-format storage (all 64bit wide), integrated to metadata for
ffs (and playing nicely with wapbl).
Quotas are enabled on a ffs filesystem via superblock flags.
tunefs(8) can enable or disable quotas.
On a quota-enabled filesystem, fsck_ffs(8) will track per-uid/gid
block and inode usages, and will check and update quotas in Pass 6.
quota usage and limits are stored in unliked files (one for users,
one for groups)l fsck_ffs(8) will create the files if needed, or
free them if needed. This means that after enabling or disabling
quotas on a filesystem; a fsck_ffs(8) run is required.
quotacheck(8) is not needed any more, on a unclean shutdown
fsck or journal replay will take care of fixing quotas.
newfs(8) can create a ready-to-mount quota-enabled filesystem
(superblock flags are set and quota inodes are created).
Other new features or semantic changes:
- default quota datas, applied to users or groups which don't already
have a quota entry
- per-user/group grace time (instead of a filesystem global one)
- 0 really means "nothing allowed at all", not "no limit".
If you want "no limit", set the limit to UQUAD_MAX (tools will
understand "unlimited" and "-")

A quota file is structured as follow:
it starts with a header, containing a few per-filesystem values,
and the default quota limits.
Quota entries are linked together as a simple list, each entry has a
pointer (as an offset withing the file) to the next.
The header has a pointer to a list of free quota entries, and
a hash table of in-use entries. The size of the hash table depends
on the filesystem block size (header+hash table should fit in the
first block). The file is not sparse and is a multiple of
filesystem block size (when the free quota entry list is empty a new
filesystem block is allocated). quota entries to not cross
filesystem block boundaries.

In memory, the kernel keeps a cache of recently used quota entries
as a reference to the block number, and offset withing the block.
The quota entry itself is keept in the buf cache.

fsck_ffs(8), tunefs(8) and newfs(8) supports are completed (with
related atf tests :)
The kernel can update disk usage and report it via quotactl(2).

Todo: enforce quotas limits (limits are not checked by kernel yet)
update repquota, edquota and rpc.rquotad to the new world
implement compat_50_quotactl ioctl.
update quotactl(2) man page

fsck_ffs required fixes so that allocating new blocks or inodes will
properly update the superblock and cg sumaries. This was not an issue up
to now because superblock and cg sumaries check happened last, but now
allocations or frees can happen in pass 6.
 1.74.6.2 11-Mar-2012  mrg sync to latest -current
 1.74.6.1 18-Feb-2012  mrg merge to -current.
 1.74.2.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.74.2.3 23-Jan-2013  yamt sync with head
 1.74.2.2 30-Oct-2012  yamt sync with head
 1.74.2.1 17-Apr-2012  yamt sync with head
 1.77.2.1 14-Apr-2015  msaitoh Pull up following revision(s) (requested by khorben in ticket #1264):

include/unistd.h 1.144
sys/kern/init_sysent.c regen
sys/kern/syscalls.c regen
sys/kern/syscalls.master 1.272
sys/rump/include/rump/rump_syscalls.h regen
sys/rump/librump/rumpkern/rump_syscalls.c regen
sys/sys/syscall.h regen
sys/sys/syscallargs.h regen
sys/compat/netbds32/netbsd32_syscall.h regen
sys/compat/netbds32/netbsd32_syscallargs.h regen
sys/compat/netbds32/netbsd32_syscalls.c regen
sys/compat/netbds32/netbsd32_sysent.c regen
sys/compat/netbsd32/syscalls.master 1.102

Fix return type of the readlinkat(2) syscall. PR#49684.
 1.82.2.5 03-Dec-2017  jdolecek update from HEAD
 1.82.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.82.2.3 23-Jun-2013  tls resync from head
 1.82.2.2 25-Feb-2013  tls resync with head
 1.82.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.87.2.1 18-May-2014  rmind sync with head
 1.98.2.1 10-Aug-2014  tls Rebase.
 1.104.4.9 05-Dec-2016  skrll Sync with HEAD
 1.104.4.8 09-Jul-2016  skrll Sync with HEAD
 1.104.4.7 29-May-2016  skrll Sync with HEAD
 1.104.4.6 22-Apr-2016  skrll Sync with HEAD
 1.104.4.5 19-Mar-2016  skrll Sync with HEAD
 1.104.4.4 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.104.4.3 22-Sep-2015  skrll Sync with HEAD
 1.104.4.2 06-Jun-2015  skrll Sync with HEAD
 1.104.4.1 06-Apr-2015  skrll Sync with HEAD
 1.104.2.1 24-Feb-2015  martin regen
 1.129.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.129.2.1 04-Nov-2016  pgoyette Sync with HEAD
 1.131.6.1 11-May-2017  pgoyette Sync with HEAD
 1.137.4.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.137.4.1 10-Jun-2019  christos Sync with HEAD
 1.137.2.9 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.137.2.8 28-Jul-2018  pgoyette Sync with HEAD
 1.137.2.7 18-Apr-2018  pgoyette Regen
 1.137.2.6 27-Mar-2018  pgoyette Regen
 1.137.2.5 25-Mar-2018  pgoyette Regen
 1.137.2.4 17-Mar-2018  pgoyette Regen
 1.137.2.3 16-Mar-2018  pgoyette Regen
 1.137.2.2 15-Mar-2018  pgoyette Regen
 1.137.2.1 10-Mar-2018  pgoyette Regen
 1.143.2.1 25-Jan-2020  ad Sync with head.
 1.145.2.1 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.154.2.3 14-Dec-2020  thorpej Regen for timerfd.
 1.154.2.2 14-Dec-2020  thorpej Regen for eventfd(2).
 1.154.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.161.2.1 02-Aug-2025  perseant Sync with HEAD
 1.21 17-Nov-2008  pooka regen
 1.20 16-Oct-2008  wrstuden branches: 1.20.2; 1.20.4; 1.20.8;
Regen syscall tables. I forgot to do it after revivesa. While pooka
did some, not all are regenerated. Do them all at once for consistency.
 1.19 16-Oct-2008  pooka regen: ioctl
 1.18 15-Oct-2008  pooka regen: few networking calls
 1.17 15-Oct-2008  wrstuden Merge wrstuden-revivesa into HEAD.
 1.16 13-Oct-2008  pooka regen: properly create weak references to sys_foo()
 1.15 13-Oct-2008  pooka regen - weak aliasing for default syscall
 1.14 07-Sep-2008  pooka regen: return -1 for error
 1.13 01-Aug-2008  pooka regen: sys___sysctl
 1.12 16-Jul-2008  pooka regen: fsync
 1.11 07-Jul-2008  pooka branches: 1.11.2;
regen: u times, lu times, you know i had my share
 1.10 01-Jul-2008  pooka regen
 1.9 17-Jun-2008  tsutsui Regen from syscalls.master rev 1.204.
 1.8 29-May-2008  pooka branches: 1.8.2;
regen
 1.7 24-Apr-2008  ad branches: 1.7.2; 1.7.4;
Regen.
 1.6 21-Apr-2008  ad Regen.
 1.5 27-Mar-2008  ad branches: 1.5.2; 1.5.4; 1.5.6;
Regen.
 1.4 24-Mar-2008  yamt regen.
 1.3 24-Mar-2008  yamt regen.
 1.2 21-Mar-2008  ad branches: 1.2.2; 1.2.4;
Er, regen...
 1.1 11-Mar-2008  pooka branches: 1.1.2;
gen
 1.1.2.3 24-Mar-2008  yamt sync with head.
 1.1.2.2 17-Mar-2008  yamt sync with head.
 1.1.2.1 11-Mar-2008  yamt file rump_syscalls.h was added on branch yamt-lazymbuf on 2008-03-17 09:15:46 +0000
 1.2.4.2 24-Mar-2008  keiichi sync with head.
 1.2.4.1 21-Mar-2008  keiichi file rump_syscalls.h was added on branch keiichi-mipv6 on 2008-03-24 07:16:28 +0000
 1.2.2.2 23-Mar-2008  matt sync with HEAD
 1.2.2.1 21-Mar-2008  matt file rump_syscalls.h was added on branch matt-armv6 on 2008-03-23 02:05:09 +0000
 1.5.6.2 04-Jun-2008  yamt sync with head
 1.5.6.1 18-May-2008  yamt sync with head.
 1.5.4.7 17-Jan-2009  mjf Sync with HEAD.
 1.5.4.6 28-Sep-2008  mjf Sync with HEAD.
 1.5.4.5 02-Jul-2008  mjf Sync with HEAD.
 1.5.4.4 29-Jun-2008  mjf Sync with HEAD.
 1.5.4.3 02-Jun-2008  mjf Sync with HEAD.
 1.5.4.2 03-Apr-2008  mjf Sync with HEAD.
 1.5.4.1 27-Mar-2008  mjf file rump_syscalls.h was added on branch mjf-devfs2 on 2008-04-03 12:43:11 +0000
 1.5.2.5 20-Nov-2008  christos merge with head.
 1.5.2.4 09-Nov-2008  christos regen
 1.5.2.3 09-Nov-2008  christos regen
 1.5.2.2 01-Nov-2008  christos Sync with head.
 1.5.2.1 29-Mar-2008  christos Welcome to the time_t=long long dev_t=uint64_t branch.
 1.7.4.5 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.7.4.4 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.7.4.3 28-May-2008  wrstuden Regen.
 1.7.4.2 14-May-2008  wrstuden Per discussion with ad, remove most of the #include <sys/sa.h> lines
as they were including sa.h just for the type(s) needed for syscallargs.h.

Instead, create a new file, sys/satypes.h, which contains just the
types needed for syscallargs.h. Yes, there's only one now, but that
may change and it's probably more likely to change if it'd be difficult
to handle. :-)

Per discussion with matt at n dot o, add an include of satypes.h to
sigtypes.h. Upcall handlers are kinda signal handlers, and signalling
is the header file that's already included for syscallargs.h that
closest matches SA.

This shaves about 3000 lines off of the diff of the branch relative
to the base. That also represents about 18% of the total before this
checkin.

I think this reduction is very good thing.
 1.7.4.1 10-May-2008  wrstuden Initial checkin of re-adding SA. Everything except kern_sa.c
compiles in GENERIC for i386. This is still a work-in-progress, but
this checkin covers most of the mechanical work (changing signalling
to be able to accomidate SA's process-wide signalling and re-adding
includes of sys/sa.h and savar.h). Subsequent changes will be much
more interesting.

Also, kern_sa.c has received partial cleanup. There's still more
to do, though.
 1.7.2.1 04-May-2009  yamt sync with head.
 1.8.2.3 18-Jul-2008  simonb Sync with head.
 1.8.2.2 03-Jul-2008  simonb Sync with head.
 1.8.2.1 18-Jun-2008  simonb Sync with head.
 1.11.2.3 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.11.2.2 19-Oct-2008  haad Sync with HEAD.
 1.11.2.1 07-Jul-2008  haad file rump_syscalls.h was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.20.8.1 21-Apr-2010  matt sync to netbsd-5
 1.20.4.1 17-Sep-2011  bouyer Pull up following revision(s) (requested by manu in ticket #1658):
sys/rump/include/rump/rump_syscalls.h: revision 1.52 via patch
sys/kern/init_sysent.c: revision 1.257 via patch
sys/rump/include/rump/rumpvnode_if.h: revision 1.12 via patch
lib/libc/sys/Makefile.inc: revision 1.208 via patch
sys/sys/syscallargs.h: revision 1.227 via patch
sys/kern/kern_exec.c: revision 1.317 via patch
sys/rump/librump/rumpkern/rump_syscalls.c: revision 1.74 via patch
include/limits.h: revision 1.30 via patch
sys/kern/syscalls.master: revision 1.251 via patch
sys/sys/vnode_if.h: revision 1.83 via patch
sys/sys/fcntl.h: revision 1.40 via patch
sys/sys/fcntl.h: revision 1.41 via patch
sys/kern/vfs_syscalls.c: revision 1.433 via patch
sys/rump/librump/rumpvfs/rumpvnode_if.c: revision 1.11 via patch
sys/kern/syscalls.c: revision 1.248 via patch
sys/sys/syscall.h: revision 1.244 via patch
lib/libc/sys/link.2: revision 1.25 via patch
include/unistd.h: revision 1.127 via patch
distrib/sets/lists/comp/mi: revision 1.1659 via patch
sys/sys/stat.h: revision 1.61 via patch
First stage of support for Extended API set 2. Most of the think is
unimplemented, except enough of linkat(2) to hardlink to a symlink.
Everything new in headers is guarded #ifdef _INCOMPLETE_XOPEN_C063 since
some software (e.g.: xcvs in our own tree) will assume they can use openat(2)
when AT_FDCWD is defined. _INCOMPLETE_XOPEN_C063 will go away once support
will be completed.
regen
improve comment about AT_* defines: they are not only used by linkat(2)
Add macros to hide OpenGroup extened API set 2 from GNU configure. This
is a temporary workaround until the implementation is completed.
 1.20.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.25 01-Jul-2020  riastradh copystr is now in libkern; don't redefine it in rumpcopy.c.

Should fix build breakage from the copystr changes.
 1.24 05-Apr-2020  kamil Return early on 0-sized transfers (usually to/from NULL-objects)

This logic is already present in subr_copy.c:copyin_vmspace() and
rumpcopy.c:copyinstr().

This avoids memcpy() calls for NULL objects that is Undefined Behavior,
allowed in the kernel space (-fno-delete-null-pointer-checks), but not
in userland.

Reported by UBSan.
 1.23 06-Apr-2019  thorpej Overhaul the API used to fetch and store individual memory cells in
userspace. The old fetch(9) and store(9) APIs (fubyte(), fuword(),
subyte(), suword(), etc.) are retired and replaced with new ufetch(9)
and ustore(9) APIs that can return proper error codes, etc. and are
implemented consistently across all platforms. The interrupt-safe
variants are no longer supported (and several of the existing attempts
at fuswintr(), etc. were buggy and not actually interrupt-safe).

Also augmement the ucas(9) API, making it consistently available on
all plaforms, supporting uniprocessor and multiprocessor systems, even
those that do not have CAS or LL/SC primitives.

Welcome to NetBSD 8.99.37.
 1.22 25-May-2016  christos branches: 1.22.18;
Introduce security.pax.mprotect.ptrace sysctl which can be used to bypass
mprotect settings so that debuggers can write to the text segment of traced
processes so that they can insert breakpoints. Turned off by default.
Ok: chuq (for now)
 1.21 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.20 18-Apr-2015  pooka Give remote clients struct pmap storage. Although the pmap is unused,
that way we can sure that the pmap macro framework doesn't access all
the wrong places.
 1.19 03-Jan-2015  pooka Put all sysproxy routines to their own C module, sysproxy.c
 1.18 26-Jul-2013  njoly branches: 1.18.6;
Make copyinstr/copyoutstr return EFAULT for special NULL "user"
address.
Ok pooka@.
 1.17 18-Jan-2011  haad branches: 1.17.6; 1.17.16; 1.17.20;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.16 13-Jan-2011  pooka branches: 1.16.2;
Introduce RUMP_LOCALPROC_P() macro and use it.
 1.15 09-Jan-2011  pooka Shortcircuit remote 0-len copyin/out already in the kernel.
 1.14 09-Jan-2011  pooka accept '\0' as a valid string
 1.13 25-Nov-2010  pooka *facepalm*, adjust remote copyinstr to work in cases where the end
of the max copyin extends to an unmapped page.

Noticed, as usual, by tests.
 1.12 22-Nov-2010  pooka the usual wuninit stuff
 1.11 22-Nov-2010  pooka Support physio for remote processes.
==> add support for remote vmspace vmapbuf/vunmapbuf
==> add proper support for copyin/out_vmspace
==> add support for remote vmspace uvm_io
==> add support for non-curproc rumpuser_sp_copyin/out
==> store remote context in vm_map->pmap instead of
pthread_specificdata

In short, makes read/write of most (all?) block devices work from
a remote rump client via rump syscalls.
 1.10 17-Nov-2010  pooka cleanup some old garbage
 1.9 09-Nov-2010  pooka Fix off-by-one in the rpc path of copyinstr()
 1.8 09-Nov-2010  pooka fix copystr/copyinstr/copyoutstr to return ENAMETOOLONG where appropriate
 1.7 29-Oct-2010  pooka minor knf
 1.6 27-Oct-2010  pooka Start rework of system call proxying over socket ("sysproxy").
This incarnation is written in the user namespace as opposed to
the previous one which was done in kernel namespace. Also, rump
does all the handshaking now instead of excepting an application
to come up with the user namespace socket.

There's still a lot to do, including making code "a bit" more
robust, actually running different clients in a different process
inside the kernel and splitting the client side library from librump.
I'm committing this now so that I don't lose it, plus it generally
works as long as you don't use it in unexcepted ways: i've tested
ifconfig(8), route(8), envstat(8) and sysctl(8).
 1.5 18-Jul-2010  pooka Ignore errors when copyin/out len == 0.
 1.4 12-Jul-2010  pooka Implement poor man's (or woman's) fault handler (or handlim).

from Stan (or Loretta)
 1.3 10-Jun-2010  pooka Use kern_proc.c instead of a collection of stubs. But what we
really wanted from this commit was the support for proc_specificdata.

TODO: make creating a new process actually use kern_proc and
maybe even add an interface which starts a process with
"any pid you don't like"
 1.2 04-Nov-2009  pooka branches: 1.2.2; 1.2.4; 1.2.6;
trim trailing whitespace
 1.1 04-Nov-2009  pooka move copy-related routines to their own module
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 03-Jul-2010  rmind sync with head
 1.2.4.3 11-Aug-2010  yamt sync with head.
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 04-Nov-2009  yamt file rumpcopy.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.2.2.2 06-Nov-2010  uebayasi Sync with HEAD.
 1.2.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.16.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.17.20.1 28-Aug-2013  rmind sync with head
 1.17.16.2 03-Dec-2017  jdolecek update from HEAD
 1.17.16.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.17.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.18.6.4 29-May-2016  skrll Sync with HEAD
 1.18.6.3 19-Mar-2016  skrll Sync with HEAD
 1.18.6.2 06-Jun-2015  skrll Sync with HEAD
 1.18.6.1 06-Apr-2015  skrll Sync with HEAD
 1.22.18.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.22.18.1 10-Jun-2019  christos Sync with HEAD
 1.5 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.4 22-Jun-2012  rmind branches: 1.4.2; 1.4.4;
rumpkern:
- Add subr_kcpuset.c and subr_pserialize.c modules.
- Add kcpuset_{running,attached} for RUMP env.
 1.3 04-Jan-2011  pooka branches: 1.3.8; 1.3.14;
Add SMP support for all architectures.

tested on sparc64 by martin
 1.2 27-Apr-2010  pooka Fix multiple virtual cpu support.

... or at least on x86. CPU_INFO_FOREACH() still isn't MI, and I
don't want to support 2^n different versions.
 1.1 15-Oct-2009  pooka branches: 1.1.2; 1.1.4; 1.1.6;
forgot to commit with previous batch
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-May-2010  rmind sync with head
 1.1.4.3 11-Aug-2010  yamt sync with head.
 1.1.4.2 11-Mar-2010  yamt sync with head
 1.1.4.1 15-Oct-2009  yamt file rumpcpu_generic.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.1.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.14.1 26-Jun-2012  riz Pull up following revision(s) (requested by rmind in ticket #365):
sys/rump/librump/rumpkern/rumpcpu_generic.c: revision 1.4
sys/net/npf/npf_session.c: revision 1.13
sys/net/npf/npf_tableset.c: revision 1.11
sys/net/npf/npf_state_tcp.c: revision 1.7
sys/net/npf/npf_inet.c: revision 1.12
sys/net/npf/npf.h: revision 1.17
sys/net/npf/npf_instr.c: revision 1.11
usr.sbin/npf/npftest/libnpftest/npf_table_test.c: revision 1.2
sys/net/npf/npf_state.c: revision 1.8
sys/net/npf/npf_log.c: revision 1.4
sys/net/npf/npf_alg.c: revision 1.4
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.118
sys/net/npf/npf_nat.c: revision 1.13
sys/net/npf/npf.c: revision 1.11
sys/net/npf/npf_sendpkt.c: revision 1.11
sys/net/npf/npf_impl.h: revision 1.16
sys/rump/librump/rumpkern/scheduler.c: revision 1.28
rumpkern:
- Add subr_kcpuset.c and subr_pserialize.c modules.
- Add kcpuset_{running,attached} for RUMP env.
NPF:
- Rename some functions for consistency and de-inline them.
- Fix few invalid asserts (add regressoin test).
- Use pserialize(9) for ALG interface.
- Minor fixes, sprinkle many comments.
 1.3.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.8.1 30-Oct-2012  yamt sync with head
 1.4.4.1 18-May-2014  rmind sync with head
 1.4.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.14 26-Jan-2016  pooka generate privhdrs to new location
 1.13 25-Apr-2014  pooka branches: 1.13.4;
Move the etfs linkage from rumpvfs to rumpkern, and replace the
weak alias show with an honest pointer indirection.

No client-visible change. (apart from this version working e.g.
on musl w/ dlopen)
 1.12 10-Mar-2014  pooka branches: 1.12.2;
rump_getversion() does not require a thread context, so make it a straight
call instead of being wrapped around rump_pub_getversion().
 1.11 07-Mar-2013  pooka branches: 1.11.6;
Support multiple syscall emuls.

Rump kernels with only local clients have it easy, since they have to
support at most two syscall vectors (some calls such as mount/unmount
can be made only through the "native" NetBSD vector). Remote clients
are a whole different tin of green beans. This change addresses local
clients only.
 1.10 02-Jan-2011  pooka branches: 1.10.8; 1.10.18;
There is a use case where preserving the parent's fd table is
relevant, so to accommodate that change rump_lwproc_newproc() to
rump_lwproc_rfork(). The new interface has the rfork() fd table
semantics. The equivalent of rump_lwproc_newproc() is
rump_lwproc_rfork(RUMP_RFCFDG).
 1.9 21-Nov-2010  pooka Realize the >1yo comment above rump_reboot and retire them to make
room for sys_reboot.
 1.8 17-Nov-2010  pooka remove rump_pub_syscall -- unused/unusable
 1.7 27-Oct-2010  pooka Retire the old sysproxy nonsense (as part of doing it slightly better).

Introduce rump_pub_syscall() as the generic interface for making
system calls with already marshalled arguments. So it's kinda like
syscall(2), except it also remembered to breathe instead of having
to figure out how to deal with 64bit values.
 1.6 01-Sep-2010  pooka Rewrite rump process and lwp allocation routines now that I have
some idea of how they should be done. This change essentially
moves the responsibility of pid/lwpid management from the application
side into the rump kernel. It also introduces clear rules on what
happens when, i.e. introduces semantics (these semantics will be
documented on the man page, and more importantly in atf tests).
 1.5 14-Apr-2010  pooka Use "struct kauth_cred *" instead of kauth_cred_t in all exported
interfaces. Allows to remove hairbrained _t typedef dance.
 1.4 05-Mar-2010  pooka branches: 1.4.2; 1.4.4;
Use improved kernel module interfaces: instead of adding + loading
modules in bootstrap, just add them. Load them later the same way
as the kernel does: module_init_class().

Change the signature of rump_module_init() to take a vector instead
of just one module. All modules in a DSO should be init'd at the
same time because they might depend on each other, and code outside
the rump kernel cannot know which way. (binary kernel modules are
still loaded with rump_sys_modctl() the usual way).
 1.3 26-Nov-2009  pooka branches: 1.3.2;
Add rump_kernelfsym_load(), which loads the kernel symbol table.
 1.2 15-Oct-2009  pooka Give lwp usage some much-needed love: stop treating lwp0 as the
all-sink and make sure each separate thread in rump has its own
lwp. Happy-go-lucky callers will get scheduled a temporary lwp
on entry, while true lwp connoisseurs may request a stable lwp
for their purposes. Some more love may be required later down the
road, but for now different threads will stepping on each others
toes.
 1.1 14-Oct-2009  pooka Create rump public interfaces from description tables. This allows
us to control and wrap all entry points from "userspace" into rump.
This in turn is necessary for the upcoming rump cpu scheduler.

For each interface "foo" a public wrapper called "rump_foo" is
created. It calls the internal implementation "rumppriv_foo". In
case foo is to be called from inside of rump kernel space, the
private interface "rumppriv_foo" is used -- the userspace wrapper
prototypes are not even exported into the rump kernel namespace.
Needless to say, the rump kernel internal interfaces are not exported
for users.

Now, three classes of interfaces fight for control of rump:
+ the noble local control interfaces (which this commit addresses)
+ the insidious rump system calls (which are generated from syscalls.master)
+ and the evil vnode interfaces (which are generated from vnode_if.src)
 1.3.2.3 06-Nov-2010  uebayasi Sync with HEAD.
 1.3.2.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.3.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.4.4.2 05-Mar-2011  rmind sync with head
 1.4.4.1 30-May-2010  rmind sync with head
 1.4.2.4 09-Oct-2010  yamt sync with head
 1.4.2.3 11-Aug-2010  yamt sync with head.
 1.4.2.2 11-Mar-2010  yamt sync with head
 1.4.2.1 05-Mar-2010  yamt file rumpkern.ifspec was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.10.18.3 03-Dec-2017  jdolecek update from HEAD
 1.10.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.10.18.1 23-Jun-2013  tls resync from head
 1.10.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.11.6.1 18-May-2014  rmind sync with head
 1.12.2.1 10-Aug-2014  tls Rebase.
 1.13.4.1 19-Mar-2016  skrll Sync with HEAD
 1.17 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.16 25-Apr-2014  pooka branches: 1.16.4;
regen
 1.15 25-Apr-2014  pooka regen for etfs move from rumpvfs to rumpkern
 1.14 10-Mar-2014  pooka branches: 1.14.2;
rump_getversion() does not require a thread context, so make it a straight
call instead of being wrapped around rump_pub_getversion().
 1.13 07-Mar-2013  pooka branches: 1.13.6;
*** empty log message ***
 1.12 02-Jan-2011  pooka branches: 1.12.8; 1.12.18;
regen: rump_lwproc_rfork
 1.11 21-Nov-2010  pooka regen: rump_reboot is gone
 1.10 17-Nov-2010  pooka regen: -rump_pub_syscall
 1.9 27-Oct-2010  pooka regen:
- rump_sysproxy
+ rump_syscall
 1.8 01-Sep-2010  pooka regen: new lwp/proc interfaces
 1.7 14-Apr-2010  pooka regen: kauth_cred_t -> struct kauth_cred *
 1.6 05-Mar-2010  pooka branches: 1.6.2; 1.6.4;
regen for rump_module interface change
 1.5 26-Nov-2009  pooka branches: 1.5.2;
regen: rump_kernelfsym_load()
 1.4 15-Oct-2009  pooka regen: lwp interface changes
 1.3 15-Oct-2009  pooka regen: scheduling points in rump_pub wrappers
 1.2 14-Oct-2009  pooka regen: put all public interfaces created by ifspec into a rump_pub namespace
 1.1 14-Oct-2009  pooka generate rump local interfaces
 1.5.2.3 06-Nov-2010  uebayasi Sync with HEAD.
 1.5.2.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.5.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.6.4.2 05-Mar-2011  rmind sync with head
 1.6.4.1 30-May-2010  rmind sync with head
 1.6.2.4 09-Oct-2010  yamt sync with head
 1.6.2.3 11-Aug-2010  yamt sync with head.
 1.6.2.2 11-Mar-2010  yamt sync with head
 1.6.2.1 05-Mar-2010  yamt file rumpkern_if_priv.h was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.12.18.3 03-Dec-2017  jdolecek update from HEAD
 1.12.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12.18.1 23-Jun-2013  tls resync from head
 1.12.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.6.1 18-May-2014  rmind sync with head
 1.14.2.1 10-Aug-2014  tls Rebase.
 1.16.4.1 19-Mar-2016  skrll Sync with HEAD
 1.18 26-Jan-2016  pooka regen rump kernel interfaces for header change.
(they were already manually edited for a prior commit, so not much change)
 1.17 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.16 25-Apr-2014  pooka branches: 1.16.4;
regen
 1.15 25-Apr-2014  pooka regen for etfs move from rumpvfs to rumpkern
 1.14 10-Mar-2014  pooka branches: 1.14.2;
rump_getversion() does not require a thread context, so make it a straight
call instead of being wrapped around rump_pub_getversion().
 1.13 07-Mar-2013  pooka branches: 1.13.6;
*** empty log message ***
 1.12 02-Jan-2011  pooka branches: 1.12.8; 1.12.18;
regen: rump_lwproc_rfork
 1.11 21-Nov-2010  pooka regen: rump_reboot is gone
 1.10 17-Nov-2010  pooka regen: -rump_pub_syscall
 1.9 27-Oct-2010  pooka regen:
- rump_sysproxy
+ rump_syscall
 1.8 01-Sep-2010  pooka regen: new lwp/proc interfaces
 1.7 14-Apr-2010  pooka regen: kauth_cred_t -> struct kauth_cred *
 1.6 05-Mar-2010  pooka branches: 1.6.2; 1.6.4;
regen for rump_module interface change
 1.5 26-Nov-2009  pooka branches: 1.5.2;
regen: rump_kernelfsym_load()
 1.4 15-Oct-2009  pooka regen: lwp interface changes
 1.3 15-Oct-2009  pooka regen: scheduling points in rump_pub wrappers
 1.2 14-Oct-2009  pooka regen: put all public interfaces created by ifspec into a rump_pub namespace
 1.1 14-Oct-2009  pooka generate rump local interfaces
 1.5.2.3 06-Nov-2010  uebayasi Sync with HEAD.
 1.5.2.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.5.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.6.4.2 05-Mar-2011  rmind sync with head
 1.6.4.1 30-May-2010  rmind sync with head
 1.6.2.4 09-Oct-2010  yamt sync with head
 1.6.2.3 11-Aug-2010  yamt sync with head.
 1.6.2.2 11-Mar-2010  yamt sync with head
 1.6.2.1 05-Mar-2010  yamt file rumpkern_if_wrappers.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.12.18.3 03-Dec-2017  jdolecek update from HEAD
 1.12.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12.18.1 23-Jun-2013  tls resync from head
 1.12.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.6.1 18-May-2014  rmind sync with head
 1.14.2.1 10-Aug-2014  tls Rebase.
 1.16.4.1 19-Mar-2016  skrll Sync with HEAD
 1.11 20-May-2024  christos regen
 1.10 19-May-2024  christos regen
 1.9 29-Jul-2023  rin rump: Regen again to fix missing __kevent100 symbol.

makerumpsyscalls.sh requires rebuilt rump libraries installed in
/usr/lib or directory specified by its first argument.

Now, new failures observed for ATF after __kevent100 addition are
fixed at least for aarch64.
 1.8 28-Jul-2023  christos regen
 1.7 10-Jul-2023  christos Regen
 1.6 27-May-2020  christos regen for lpathconf.
 1.5 22-Sep-2019  christos regen
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 18-Jun-2015  pooka regen
 1.2 27-Apr-2014  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.10; 1.2.12;
regen
 1.1 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 6:

Generate component constructors which establish non-modular syscalls.
 1.2.12.2 19-Mar-2016  skrll Sync with HEAD
 1.2.12.1 22-Sep-2015  skrll Sync with HEAD
 1.2.10.3 03-Dec-2017  jdolecek update from HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 27-Apr-2014  tls file rumpkern_syscalls.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.2.6.2 10-Aug-2014  tls Rebase.
 1.2.6.1 27-Apr-2014  tls file rumpkern_syscalls.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 27-Apr-2014  yamt file rumpkern_syscalls.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.2.2 18-May-2014  rmind sync with head
 1.2.2.1 27-Apr-2014  rmind file rumpkern_syscalls.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.3 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.2 17-Nov-2008  pooka reregen to get those most important rcsids right
 1.1 17-Nov-2008  pooka regen
 1.55 05-Oct-2023  ad Arrange to update cached LWP credentials in userret() rather than during
syscall/trap entry, eliminating a test+branch on every syscall/trap.

This wasn't possible in the 3.99.x timeframe when l->l_cred came about
because there wasn't a reliable/timely way to force an ONPROC LWP running on
a remote CPU into the kernel (which is just about the only new thing in
this scheme).
 1.54 04-Oct-2023  ad Eliminate l->l_ncsw and l->l_nivcsw. From memory think they were added
before we had per-LWP struct rusage; the same is now tracked there.
 1.53 09-Apr-2022  riastradh rumpkern/scheduler: Use membar_release.

...but add an XXX comment asking for clarity on what it pairs with.
 1.52 01-Nov-2020  christos PR/55664: Ruslan Nikolaev: Fix:

1. A race condition (bug) in sys/rump/librump/rumpkern/intr.c since
rumpuser_cv_signal() is called without holding a mutex
2. sleepq is implemented using a single (global) conditional
variable; that should be done per each sleepq separately
 1.51 14-Mar-2020  ad branches: 1.51.4;
- Hide the details of SPCF_SHOULDYIELD and related behind a couple of small
functions: preempt_point() and preempt_needed().

- preempt(): if the LWP has exceeded its timeslice in kernel, strip it of
any priority boost gained earlier from blocking.
 1.50 15-Feb-2020  ad - Move the LW_RUNNING flag back into l_pflag: updating l_flag without lock
in softint_dispatch() is risky. May help with the "softint screwup"
panic.

- Correct the memory barriers around zombies switching into oblivion.
 1.49 08-Jan-2020  ad Hopefully fix some problems seen with MP support on non-x86, in particular
where curcpu() is defined as curlwp->l_cpu:

- mi_switch(): undo the ~2007ish optimisation to unlock curlwp before
calling cpu_switchto(). It's not safe to let other actors mess with the
LWP (in particular l->l_cpu) while it's still context switching. This
removes l->l_ctxswtch.

- Move the LP_RUNNING flag into l->l_flag and rename to LW_RUNNING since
it's now covered by the LWP's lock.

- Ditch lwp_exit_switchaway() and just call mi_switch() instead. Everything
is in cache anyway so it wasn't buying much by trying to avoid saving old
state. This means cpu_switchto() will never be called with prevlwp ==
NULL.

- Remove some KERNEL_LOCK handling which hasn't been needed for years.
 1.48 16-Dec-2019  ad branches: 1.48.2;
- Extend the per-CPU counters matt@ did to include all of the hot counters
in UVM, excluding uvmexp.free, which needs special treatment and will be
done with a separate commit. Cuts system time for a build by 20-25% on
a 48 CPU machine w/DIAGNOSTIC.

- Avoid 64-bit integer divide on every fault (for rnd_add_uint32).
 1.47 01-Dec-2019  ad Another instance of cpu_onproc to replace.
 1.46 01-Dec-2019  ad cpu_onproc -> ci_onproc
 1.45 23-Nov-2019  ad Minor scheduler cleanup:

- Adapt to cpu_need_resched() changes. Avoid lost & duplicate IPIs and ASTs.
sched_resched_cpu() and sched_resched_lwp() contain the logic for this.
- Changes for LSIDL to make the locking scheme match the intended design.
- Reduce lock contention and false sharing further.
- Numerous small bugfixes, including some corrections for SCHED_FIFO/RT.
- Use setrunnable() in more places, and merge cut & pasted code.
 1.44 19-Feb-2016  pooka branches: 1.44.18;
add cpu_lock

from freqlabs on irc
 1.43 08-Feb-2016  pooka Allocate struct cpu_info dynamically. Saves quite a lot of BSS in the
common case and reduces rump kernel memory requirements by 10% or more
in really tiny deployments.
 1.42 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.41 25-Aug-2015  pooka add ncpuonline
 1.40 22-Apr-2015  pooka track cpu_onproc
 1.39 07-Jun-2014  rmind branches: 1.39.4;
Make kpreempt_disabled() always return true in RUMP kernels for now.
May revisit once RUMP provides better splfoo/splx() handling.
 1.38 05-Jun-2014  rmind librump: add kpreempt_disabled(9) and softint_schedule_cpu(9).
 1.37 09-Apr-2014  pooka implement lwp_create() and a few related interfaces.
main raison d'impalerment: the aio driver
 1.36 15-Mar-2014  pooka branches: 1.36.2;
Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.35 09-Dec-2013  pooka Reenable calls to KPREEMPT_EN/DISABLE(). I'm almost certain I commented
them out accidentally in rev 1.30.

... not that they do much in rump kernels which are always
run-to-completion, but maybe there's some driver debugging value.
 1.34 15-May-2013  pooka branches: 1.34.2;
Add RUMPUSER_LWP_CLEAR instead of overloading RUMPUSER_LWP_SET.
This simplifies some alternative hypervisor implementations.
 1.33 02-May-2013  pooka Inform the rump kernel hypervisor of valid thread contexts so
that the implementation can allocate and release storage for them
in an optimal fashion, if necessary.
 1.32 27-Apr-2013  pooka Make sure spin mutexes get allocated as spin mutexes (the hypervisor
asserts it now).
 1.31 27-Apr-2013  pooka roll mutex init hypercalls into one (one of them already took a flag anyway)
 1.30 13-Nov-2012  pooka kill some -Wunused-but-set-variable warnings
 1.29 15-Sep-2012  pooka In the "interlock" case (where the scheduler lock is used as the condvar
lock), we need to take the CPU interlock before releasing the CPU.
Otherwise other threads can be scheduled before we get the interlock,
leading to e.g. missed condvar wakeups. This affected only "locks_up.c"
locking (nomen est omen?).

Also, remove various __predicts since they don't have a positive
performance impact in any setup.
 1.28 22-Jun-2012  rmind branches: 1.28.2;
rumpkern:
- Add subr_kcpuset.c and subr_pserialize.c modules.
- Add kcpuset_{running,attached} for RUMP env.
 1.27 31-Oct-2011  yamt branches: 1.27.2; 1.27.8;
comment
 1.26 21-Mar-2011  pooka Update copyright statements.

no functional change.
 1.25 28-Jan-2011  pooka Some lwp-walkers expect the correct value for l_stat, so use a flag
in l_flag instead of l_stat for the purpose of flagging lwps in a
dying proc.
 1.24 11-Jan-2011  pooka branches: 1.24.2; 1.24.4;
KASSERT we don't return back to userspace with the kernel lock held.
 1.23 01-Dec-2010  pooka If the pagedaemon cannot free any memory due to not being able to
lock any uvm objects, check if lockholders are currently on CPU
and yield to try very soon again instead of assuming deadlock.

This makes limited-memory kernels perform the same as memory-unlimited
kernels (provided there is a reasonable amount of memory available).
For example, for large file copy off of ffs where the image is
backed on host memory (i.e. no disk i/o, i.e. ideal conditions)
the figures are, per rump kernel memory limit:

3000kB: same
1000kB: 10% slower
500kB: 50% slower

(per pagedaemon code might still be able to use some tweak, though)
 1.22 21-Nov-2010  pooka Fix situation where we try to configure >MAXCPUS cpus.
 1.21 29-Oct-2010  pooka Attach implicit threads to initproc instead of proc0. This way
applications which alter, by purpose or by accident, the uid in an
implicit thread are don't affect kernel threads.

from discussion with njoly
 1.20 07-Sep-2010  pooka Attach only one CPU for the bootstrap phase.
 1.19 01-Sep-2010  pooka Implement rump_lwproc: the new lwp/proc management routines for
rump. These move the management of the pid/lwpid space from the
application into the kernel, make code more robust, and make it
possible to attach multiple lwp's to non-proc0 processes.
 1.18 15-Aug-2010  pooka Increment lwp's context switch counter when it is scheduled onto
a CPU. This fixes some heavy-load problems with the pool code when
rump kernels essentially lied and caused the pool code not to do
a proper backdown from the fastpath when a context switch happened
when taking a lock.
 1.17 11-Jul-2010  pooka Assert that l_target_cpu isn't null, just in case we had some memory
corruption issues (like passing wrong size to kmem_free ....).
 1.16 28-May-2010  pooka Deal with the "we get a portably arbitrary set of headers on
different archs" problem.
 1.15 28-May-2010  pooka Improve the CPU scheduler for a host MP system with multithreaded
access. The old scheduler had a global freelist which caused a
cache crisis with multiple host threads trying to schedule a virtual
CPU simultaneously.

The rump scheduler is different from a normal thread scheduler, so
it has different requirements. First, we schedule a CPU for a
thread (which we get from the host scheduler) instead of scheduling
a thread onto a CPU. Second, scheduling points are at every
entry/exit to/from the rump kernel, including (but not limited to)
syscall entry points and hypercalls. This means scheduling happens
a lot more frequently than in a normal kernel.

For every lwp, cache the previously used CPU. When scheduling,
attempt to reuse the same CPU. If we get it, we can use it directly
without any memory barriers or expensive locks. If the CPU is
taken, migrate. Use a lock/wait only in the slowpath. Be very
wary of walking the entire CPU array because that does not lead to
a happy cacher.

The migration algorithm could probably benefit from improved
heuristics and tuning. Even as such, with the new scheduler an
application which has two threads making rlimit syscalls in a tight
loop experiences almost 400% speedup. The exact speedup is difficult
to pinpoint, though, since the old scheduler caused very jittery
results due to cache contention. Also, the rump version is now
70% faster than the counterpart which calls the host kernel.
 1.14 18-May-2010  pooka Make it possible to use the scheduler lock as the rumpuser condvar
interlock. This is applicable in cases where the actual interlock
is the CPU the currently running thread is scheduled on. Borrowing
the scheduler lock as the mutex mandated by pthread_cond_wait()
does away with need to have an additional mutex. This both optimizes
runtime execution and simplifies code, as the extra lock typically
lead to quite some trickeries to avoid the dungeon collapsing due
to zaps from the wand of deadlock.
 1.13 28-Apr-2010  pooka Limit virtual CPUs to MAXCPUS for now.
 1.12 27-Apr-2010  pooka Fix multiple virtual cpu support.

... or at least on x86. CPU_INFO_FOREACH() still isn't MI, and I
don't want to support 2^n different versions.
 1.11 21-Apr-2010  pooka support kern_resource
 1.10 17-Apr-2010  pooka Move scheduling related routines from emul.c to scheduler.c
 1.9 25-Jan-2010  pooka branches: 1.9.2; 1.9.4; 1.9.6;
Set attached cpus as running, otherwise (evil) state-probing code
will not execute properly.
 1.8 01-Dec-2009  pooka Almost there for virtual CPU MP support:
* support bound kernel threads
* bind softint threads to specific virtual cpus
+ remove now-unnecessary locks from softint code

Now, if we only had MI CPU_INFO_FOREACH() .... (hi rmind ;)
 1.7 09-Nov-2009  pooka Hash out soft interrupts to be a little closer to real softints:
* split them into levels
* allow only one per level to be active at a time
* fire softints only when we are unscheduling from a CPU instead
of immediately in softint_schedule(). this will later morph
into return from interrupt, but that part isn't done yet.
 1.6 06-Nov-2009  pooka In case a temp thread is exiting, borrow lwp0 for the respective
kmem_free().
 1.5 04-Nov-2009  pooka Implement yield()/preempt() now that there is a CPU scheduler.
 1.4 16-Oct-2009  pooka Include sys_select.c for proper select()/poll() support.
 1.3 15-Oct-2009  pooka When allocating the temporary lwp we must have an lwp context. So
take turns using lwp0 for this purpose, nothing else uses it.
 1.2 15-Oct-2009  pooka Give lwp usage some much-needed love: stop treating lwp0 as the
all-sink and make sure each separate thread in rump has its own
lwp. Happy-go-lucky callers will get scheduled a temporary lwp
on entry, while true lwp connoisseurs may request a stable lwp
for their purposes. Some more love may be required later down the
road, but for now different threads will stepping on each others
toes.
 1.1 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.9.6.3 21-Apr-2011  rmind sync with head
 1.9.6.2 05-Mar-2011  rmind sync with head
 1.9.6.1 30-May-2010  rmind sync with head
 1.9.4.4 09-Oct-2010  yamt sync with head
 1.9.4.3 11-Aug-2010  yamt sync with head.
 1.9.4.2 11-Mar-2010  yamt sync with head
 1.9.4.1 25-Jan-2010  yamt file scheduler.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.9.2.4 06-Nov-2010  uebayasi Sync with HEAD.
 1.9.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.9.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.9.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.24.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.24.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.27.8.1 26-Jun-2012  riz Pull up following revision(s) (requested by rmind in ticket #365):
sys/rump/librump/rumpkern/rumpcpu_generic.c: revision 1.4
sys/net/npf/npf_session.c: revision 1.13
sys/net/npf/npf_tableset.c: revision 1.11
sys/net/npf/npf_state_tcp.c: revision 1.7
sys/net/npf/npf_inet.c: revision 1.12
sys/net/npf/npf.h: revision 1.17
sys/net/npf/npf_instr.c: revision 1.11
usr.sbin/npf/npftest/libnpftest/npf_table_test.c: revision 1.2
sys/net/npf/npf_state.c: revision 1.8
sys/net/npf/npf_log.c: revision 1.4
sys/net/npf/npf_alg.c: revision 1.4
sys/rump/librump/rumpkern/Makefile.rumpkern: revision 1.118
sys/net/npf/npf_nat.c: revision 1.13
sys/net/npf/npf.c: revision 1.11
sys/net/npf/npf_sendpkt.c: revision 1.11
sys/net/npf/npf_impl.h: revision 1.16
sys/rump/librump/rumpkern/scheduler.c: revision 1.28
rumpkern:
- Add subr_kcpuset.c and subr_pserialize.c modules.
- Add kcpuset_{running,attached} for RUMP env.
NPF:
- Rename some functions for consistency and de-inline them.
- Fix few invalid asserts (add regressoin test).
- Use pserialize(9) for ALG interface.
- Minor fixes, sprinkle many comments.
 1.27.2.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.27.2.3 16-Jan-2013  yamt sync with (a bit old) head
 1.27.2.2 30-Oct-2012  yamt sync with head
 1.27.2.1 30-Nov-2011  yamt implement a rump version of kpreempt_disabled
 1.28.2.4 03-Dec-2017  jdolecek update from HEAD
 1.28.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.28.2.2 23-Jun-2013  tls resync from head
 1.28.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.34.2.1 18-May-2014  rmind sync with head
 1.36.2.1 10-Aug-2014  tls Rebase.
 1.39.4.3 19-Mar-2016  skrll Sync with HEAD
 1.39.4.2 22-Sep-2015  skrll Sync with HEAD
 1.39.4.1 06-Jun-2015  skrll Sync with HEAD
 1.44.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.48.2.2 29-Feb-2020  ad Sync with head.
 1.48.2.1 17-Jan-2020  ad Sync with head.
 1.51.4.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.1 22-Apr-2023  riastradh secmodel_extensions: Split vfs part into separate .c file.

This way we can provide weak rumpkern stubs that don't require
rumpvfs for things that are relevant to vfs, but if you do link
rumpvfs then you get the same logic in secmodel extensions.
 1.17 23-May-2020  ad Move proc_lock into the data segment. It was dynamically allocated because
at the time we had mutex_obj_alloc() but not __cacheline_aligned.
 1.16 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.15 18-Apr-2015  pooka Give remote clients struct pmap storage. Although the pmap is unused,
that way we can sure that the pmap macro framework doesn't access all
the wrong places.
 1.14 03-Jan-2015  pooka Put all sysproxy routines to their own C module, sysproxy.c
 1.13 20-Feb-2014  pooka branches: 1.13.6;
Remove the "host" signal model. I'm not sure it ever made any sense.
I'm also quite sure nobody ever really wanted to use it.

Change the "raise" sigmodel to include the rump kernel PID in the call
to rumpuser_kill(). The purpose is to provide some hint for non-POSIX
platforms which don't sport signals and multiplex many clients in a
single address space.

While this is technically an ABI change, see above. Also, since
rumpuser_kill() was not documented, I'll just claim I'm fixing a bug in
the implementation (and will be sure to document the interface correctly
very soon).
 1.12 22-Nov-2013  christos we now use TAILQ
 1.11 30-Apr-2013  pooka branches: 1.11.4;
Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.10 28-May-2011  tron branches: 1.10.4; 1.10.14;
Fix rump build which got broken by the fix for PR kern/44986.
 1.9 18-May-2011  christos add a hacky version of sigsuspendsetup() to satisfy link requirements.
 1.8 20-Feb-2011  pooka Change the default sigmodel to "raise", it makes more sense than
causing a panic.
 1.7 14-Jan-2011  pooka branches: 1.7.2; 1.7.4;
Support SIGMODEL_RAISE for non-local clients.
 1.6 08-Jan-2011  pooka SIGPIPE is generated internally by the kernel, so include it in
the list of "no panic" sigs.
 1.5 03-Jan-2011  pooka kqueue signal filters are not supported, so be explicit about it.
 1.4 15-Nov-2010  pooka Add a new signal model RUMP_SIGMODEL_RECORD which records all
signals which are posted to a process.
 1.3 10-Jun-2010  pooka branches: 1.3.2;
Use kern_proc.c instead of a collection of stubs. But what we
really wanted from this commit was the support for proc_specificdata.

TODO: make creating a new process actually use kern_proc and
maybe even add an interface which starts a process with
"any pid you don't like"
 1.2 22-Apr-2010  pooka branches: 1.2.2; 1.2.4;
more signal stuff to group. no functional change.
 1.1 21-Apr-2010  pooka Move all signal-related from emul.c to signals.c. Additionally,
define a few alternate signal models for the rump kernel, including
ones where signals are ignored or sent to host processes.
 1.2.4.5 31-May-2011  rmind sync with head
 1.2.4.4 05-Mar-2011  rmind sync with head
 1.2.4.3 03-Jul-2010  rmind sync with head
 1.2.4.2 30-May-2010  rmind sync with head
 1.2.4.1 22-Apr-2010  rmind file signals.c was added on branch rmind-uvmplock on 2010-05-30 05:18:06 +0000
 1.2.2.3 17-Aug-2010  uebayasi Sync with HEAD.
 1.2.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.2.1 22-Apr-2010  uebayasi file signals.c was added on branch uebayasi-xip on 2010-04-30 14:44:30 +0000
 1.3.2.2 11-Aug-2010  yamt sync with head.
 1.3.2.1 10-Jun-2010  yamt file signals.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:07 +0000
 1.7.4.1 05-Mar-2011  bouyer Sync with HEAD
 1.7.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.10.14.3 03-Dec-2017  jdolecek update from HEAD
 1.10.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.10.14.1 23-Jun-2013  tls resync from head
 1.10.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.11.4.1 18-May-2014  rmind sync with head
 1.13.6.3 19-Mar-2016  skrll Sync with HEAD
 1.13.6.2 06-Jun-2015  skrll Sync with HEAD
 1.13.6.1 06-Apr-2015  skrll Sync with HEAD
 1.28 13-Oct-2023  ad Rump: sleepq_remove(): don't unlock the sleepq. Spotted by hannken@.
 1.27 08-Oct-2023  ad Ensure that an LWP that has taken a legitimate wakeup never produces an
error code from sleepq_block(). Then, it's possible to make cv_signal()
work as expected and only ever wake a singular LWP.
 1.26 05-Oct-2023  ad Resolve !MULTIPROCESSOR build problem with the nasty kernel lock macros.
 1.25 04-Oct-2023  ad Eliminate l->l_biglocks. Originally I think it had a use but these days a
local variable will do.
 1.24 23-Sep-2023  ad - Simplify how priority boost for blocking in kernel is handled. Rather
than setting it up at each site where we block, make it a property of
syncobj_t. Then, do not hang onto the priority boost until userret(),
drop it as soon as the LWP is out of the run queue and onto a CPU.
Holding onto it longer is of questionable benefit.

- This allows two members of lwp_t to be deleted, and mi_userret() to be
simplified a lot (next step: trim it down to a single conditional).

- While here, constify syncobj_t and de-inline a bunch of small functions
like lwp_lock() which turn out not to be small after all (I don't know
why, but atomic_*_relaxed() seem to provoke a compiler shitfit above and
beyond what volatile does).
 1.23 30-Jun-2022  knakahara Fix rump build failure after sleepq.h:r1.35.
 1.22 09-Apr-2022  riastradh rumpkern/sleepq: Convert membar_exit/store to atomic_store_release.
 1.21 01-Nov-2020  christos PR/55664: Ruslan Nikolaev: Fix:

1. A race condition (bug) in sys/rump/librump/rumpkern/intr.c since
rumpuser_cv_signal() is called without holding a mutex
2. sleepq is implemented using a single (global) conditional
variable; that should be done per each sleepq separately
 1.20 25-Apr-2020  bouyer branches: 1.20.2;
Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.19 19-Apr-2020  ad good grief..
 1.18 26-Mar-2020  ad branches: 1.18.2;
sleepq_t is now a LIST. Forgot to commit earlier.
 1.17 26-Jan-2016  pooka branches: 1.17.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.16 24-Apr-2014  pooka branches: 1.16.4;
Make sleepq_wake() type void. The return value hasn't been used in
almost 6 years. Even if it were, returning an arbitrary lwp is a bit
of a wonky interface and can really work only when expected == 1.
 1.15 24-Apr-2014  pooka in sleepq_wake(), honor the "expected" parameter
 1.14 10-Mar-2013  pooka branches: 1.14.6; 1.14.10;
Make RUN_ONCE actually run only once. Also, remove a "slightly"
outdated comment.
 1.13 28-Jan-2011  pooka branches: 1.13.4; 1.13.14;
these days make sure we have an lwp lock (for lwp walker smiths)
 1.12 27-Jan-2011  pooka Fill in l_wmesg since some proc-walkers assume it.
 1.11 12-Jan-2011  pooka branches: 1.11.2; 1.11.4;
When the client and the rump kernel are the same host process, all
threads blocking in the kernel automatically exit when the process
exists. However, for the sysproxy case this does not hold.
Typically it's ~harmless, but e.g. in the case of socket binding
following by poll it gets annoying.

Introduce sysproxy procexit, which wakes up all threads blocking
on a condition when a process's communication socket is closed.
The code is a little different from the regular kernel simply
because in a rump kernel l_mutex is not available at all times
(this is because scheduling happens on every kernel entry and exit,
and that path must be kept lockless for any reasonable performance).
Instead, use gating which makes sure all threads are either out of
the cv code or suspended in a well-known state. Then, wake up the
threads and tell them to get the hell out of our galaxy.
 1.10 18-Dec-2010  skrll Pull in sys/atomic.h so that hp700 can build - needed for membar_exit.
 1.9 18-Dec-2010  rmind - Fix a few possible locking issues in execve1() and exit1(). Add a note
that scheduler locks are special in this regard - adaptive locks cannot
be in the path due to turnstiles. Randomly spotted/reported by uebayasi@.
- Remove unused lwp_relock() and replace lwp_lock_retry() by simplifying
lwp_lock() and sleepq_enter() a little.
- Give alllwp its own cache-line and mark lwp_cache pointer as read-mostly.

OK ad@
 1.8 23-Jul-2010  pooka If a thread wake up spuriously, re-set l_mutex to make sure it's
still at the original value and not the schedstate one. This makes
select not miss wakeups in cases where there was a lot of selecting
going on (which is not all that common in a rump kernel).
 1.7 22-Jul-2010  pooka Reset l_mutex when waking up a thread. select uses it to determine
if a thread is still selecting, and would get a KASSERT panic if
the thread had been woken up but not run yet when selnotify() was
called.
 1.6 17-Nov-2009  pooka branches: 1.6.2; 1.6.4;
init global cv only once
 1.5 21-Oct-2009  rmind Sync rump with kernel changes.
 1.4 16-Oct-2009  pooka In case of timeout, remember to remove ourselves from the sleep staleq.
 1.3 16-Oct-2009  pooka Include sys_select.c for proper select()/poll() support.
 1.2 18-Dec-2008  pooka branches: 1.2.2; 1.2.6;
__KERNEL_RCSID
 1.1 10-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Support callouts and call callout_hardclock() from the timer
interrupt thread.

The sleepq implementation required for callouts is horrible, kludged
only for callouts, and generally unacceptable. It needs revisiting,
but I'm not sure yet should rump or kern_timeout be improved. It's
almost untested as of now, but committing this will give me some
maneuvering space while letting application compile.
 1.1.6.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 10-Oct-2008  haad file sleepq.c was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 10-Oct-2008  skrll file sleepq.c was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.2.6.4 11-Aug-2010  yamt sync with head.
 1.2.6.3 11-Mar-2010  yamt sync with head
 1.2.6.2 04-May-2009  yamt sync with head.
 1.2.6.1 18-Dec-2008  yamt file sleepq.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.2.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.2.1 18-Dec-2008  mjf file sleepq.c was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.6.4.1 05-Mar-2011  rmind sync with head
 1.6.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.11.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.11.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.13.14.3 03-Dec-2017  jdolecek update from HEAD
 1.13.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.13.14.1 23-Jun-2013  tls resync from head
 1.13.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.14.10.1 10-Aug-2014  tls Rebase.
 1.14.6.1 18-May-2014  rmind sync with head
 1.16.4.1 19-Mar-2016  skrll Sync with HEAD
 1.17.18.2 21-Apr-2020  martin Sync with HEAD
 1.17.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.18.2.1 20-Apr-2020  bouyer Sync with HEAD
 1.20.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.30 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.29 18-Nov-2008  pooka Pass biodone() to rumpuser as a callback instead of hardcoding it.
Also, explicitly init rumpuser async io thread.
 1.28 16-Nov-2008  pooka <sys/buf.h> police
 1.27 11-Sep-2008  pooka branches: 1.27.2;
* fsync after !B_ASYNC write
* replace some b_flags magic with BUF_ISREAD/WRITE()
 1.26 09-Sep-2008  tron Fix build problem with puffs enabled caused by the fix for PR kern/39493.
Problem noted by Thomas Klausner, patch provided by Juan RP.
 1.25 12-Aug-2008  pooka Make it possible to control starting of threads per env variable
instead of only at compile-time.
 1.24 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.23 21-Jul-2008  pooka Call mountpoint VFS_FSYNC() from specfs fsync.

Makes rump kern/38057-happy.
 1.22 20-Jul-2008  pooka assert -> KASSERT
 1.21 18-Jul-2008  pooka Don't biohazardwait B_ASYNC buffers.
 1.20 01-Jul-2008  pooka branches: 1.20.2;
Fixes to build rump utilities as host binaries on Linux by removing
sys namespace pollution which has crept in.

Submitted in private mail by takemura, domain ca2.so-net.ne.jp
 1.19 27-Jan-2008  pooka branches: 1.19.6; 1.19.10; 1.19.12; 1.19.14;
Use vfs_subr.c from sys/kern. This brings differences in the vnode
life cycle between rump and a real kernel to a minimum.
 1.18 22-Jan-2008  pooka Until debugging threaded programs in NetBSD is fixed, supply the
cpp option RUMP_WITHOUT_THREADS as a workaround. If defined, it
makes rump itself operate single-threaded and prevents kthread_create()
from working.
 1.17 21-Jan-2008  pooka Implement dummy bmap which just does 1:1 translation.
 1.16 03-Jan-2008  pooka Theoretically this is supposed to be interchangeable with real
kernel code. Use kmem_alloc/free instead of some wily homerolled
rump interfaces for memory allocation.
 1.15 02-Jan-2008  pooka Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.14 02-Jan-2008  pooka fix vmlocking2 fallout:

* I heard a wild rumor that vp_interlock is a mutex these days (hi ad!)
* init new locks (hi ad)
* observe that with simple_locks only deadlocks would be caught while
releasing unlocked locks would go unnoticed. make locking work (hi pooka)
 1.13 07-Nov-2007  pooka branches: 1.13.6;
Execute I/O in a separate thread for async I/O where previously
everything was written/read in caller context.

Also, make the "kernel" lock recursive. It works better that way ...
 1.12 06-Nov-2007  pooka Sprinkle some more locking, especially to the vm. Due to some
additional fixes, it's now possible to run file systems with
spinlocks actually enabled. The genfs_putpages() locking is still
working only due to greater powers, but I'll eventually get around to
fixing it.
 1.11 04-Nov-2007  pooka branches: 1.11.2;
Make the strategy routine get the results through biowait() and
the "disk driver" (rumpuser) call biodone() to indicate the completion
of I/O. Support for B_ASYNC is coming at some point, but I need
more locking support in the emulated vm for that.
 1.10 31-Oct-2007  pooka branches: 1.10.2;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.9 24-Sep-2007  pooka branches: 1.9.2;
print 0x before hex, print proper types
 1.8 20-Sep-2007  pooka branches: 1.8.2;
fsync() device fd if doing a non-B_ASYNC write. This makes the
file system safe, but less performant as the kernel, as it syncs
*all* outstanding dirty buffers. However, we don't have much choice
in userspace currently.
 1.7 10-Sep-2007  pooka Provide errno from rumpuser_{gettimeofday,close}() to be consistent.
 1.6 20-Aug-2007  pooka branches: 1.6.2; 1.6.4; 1.6.6;
Hide NetBSD kernel headers completely from ukfs. This includes creating
accessors for:
* struct mount & VFS ops
* struct uio
* struct vnode
* struct vattr

and some namespace games for:
* namei flags
* VOPs
* enum vtype

Also, split rump services into two categories: library private and public
(rump_private.h and rump.h, respectively).

As a result, it is now possible to compile and use the NetBSD kernel
file systems on Linux (and probably other systems too with very
little work), although the makefiles need a bit of work to make it
a pleasureable experience.
 1.5 14-Aug-2007  pooka branches: 1.5.2;
Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.4 14-Aug-2007  pooka Add some barely staggering code to get more disklabel support.
 1.3 13-Aug-2007  pooka Use supermarket variety vfs_vnops.c instead of homecooked routines
(that's actually a good thing here).
 1.2 09-Aug-2007  pooka * fix symlink
* actually call a couple of VOPs
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file specfs.c was added on branch matt-mips64 on 2007-08-05 22:28:10 +0000
 1.5.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.5.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.5.2.1 14-Aug-2007  skrll file specfs.c was added on branch nick-csl-alignment on 2007-08-15 13:50:41 +0000
 1.6.6.6 04-Feb-2008  yamt sync with head.
 1.6.6.5 21-Jan-2008  yamt sync with head
 1.6.6.4 15-Nov-2007  yamt sync with head.
 1.6.6.3 27-Oct-2007  yamt sync with head.
 1.6.6.2 03-Sep-2007  yamt sync with head.
 1.6.6.1 20-Aug-2007  yamt file specfs.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:35 +0000
 1.6.4.4 23-Mar-2008  matt sync with HEAD
 1.6.4.3 09-Jan-2008  matt sync with HEAD
 1.6.4.2 08-Nov-2007  matt sync with -HEAD
 1.6.4.1 06-Nov-2007  matt sync with HEAD
 1.6.2.3 09-Oct-2007  ad Sync with head.
 1.6.2.2 20-Aug-2007  ad Sync with HEAD.
 1.6.2.1 20-Aug-2007  ad file specfs.c was added on branch vmlocking on 2007-08-20 22:07:30 +0000
 1.8.2.1 06-Oct-2007  yamt sync with head.
 1.9.2.1 13-Nov-2007  bouyer Sync with HEAD
 1.10.2.6 11-Nov-2007  joerg Sync with HEAD.
 1.10.2.5 06-Nov-2007  joerg Sync with HEAD.
 1.10.2.4 04-Nov-2007  jmcneill Sync with HEAD.
 1.10.2.3 02-Nov-2007  joerg Remove the rest of the unintentional diff in sys/rump.
 1.10.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.10.2.1 31-Oct-2007  joerg file specfs.c was added on branch jmcneill-pm on 2007-10-31 23:14:18 +0000
 1.11.2.2 18-Feb-2008  mjf Sync with HEAD.
 1.11.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.13.6.3 23-Jan-2008  bouyer Sync with HEAD.
 1.13.6.2 08-Jan-2008  bouyer Sync with HEAD
 1.13.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.19.14.3 31-Jul-2008  simonb Sync with head.
 1.19.14.2 21-Jul-2008  simonb Sync with head.
 1.19.14.1 03-Jul-2008  simonb Sync with head.
 1.19.12.2 24-Sep-2008  wrstuden Merge in changes between wrstuden-revivesa-base-2 and
wrstuden-revivesa-base-3.
 1.19.12.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.19.10.1 04-May-2009  yamt sync with head.
 1.19.6.3 17-Jan-2009  mjf Sync with HEAD.
 1.19.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.19.6.1 02-Jul-2008  mjf Sync with HEAD.
 1.20.2.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.20.2.1 19-Oct-2008  haad Sync with HEAD.
 1.27.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.2 07-Jan-2015  pooka Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.1 03-Jan-2015  pooka Put all sysproxy routines to their own C module, sysproxy.c
 1.10 27-Oct-2010  pooka Retire the old sysproxy nonsense (as part of doing it slightly better).

Introduce rump_pub_syscall() as the generic interface for making
system calls with already marshalled arguments. So it's kinda like
syscall(2), except it also remembered to breathe instead of having
to figure out how to deal with 64bit values.
 1.9 01-Sep-2010  pooka use curlwp
 1.8 01-Sep-2010  pooka Implement rump_lwproc: the new lwp/proc management routines for
rump. These move the management of the pid/lwpid space from the
application into the kernel, make code more robust, and make it
possible to attach multiple lwp's to non-proc0 processes.
 1.7 11-Aug-2010  pgoyette Keep condvar wmesg within 8 char limit
 1.6 01-Mar-2010  pooka branches: 1.6.2;
Add types for LWP_CREATE and LWP_EXIT rpc calls. Currently unimplemented.
 1.5 15-Oct-2009  pooka branches: 1.5.2;
Give lwp usage some much-needed love: stop treating lwp0 as the
all-sink and make sure each separate thread in rump has its own
lwp. Happy-go-lucky callers will get scheduled a temporary lwp
on entry, while true lwp connoisseurs may request a stable lwp
for their purposes. Some more love may be required later down the
road, but for now different threads will stepping on each others
toes.
 1.4 14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.3 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.2 30-Apr-2009  skrll branches: 1.2.2; 1.2.4;
+#include <sys/atomic.h>
 1.1 29-Apr-2009  pooka Add proof-of-concept code for enabling system calls to rump virtual
kernels running in other processes on the same machine or on an
entirely different host. I wrote this a while ago and am now
committing it mainly to avoid losing it. It works, but could do
with a little tuning here and there.

What this will hopefully eventually buy us is the ability to use
standard userland tools to configure rump kernels, e.g. ifconfig(8)
and route(8) could be used to configure the networking stack provided
by a rump kernel. Also some distributed OS implications may apply.

fun fact: a system call which just does copyin/copyout takes >1000x
longer when made over the LAN as compared to when made on the same
machine.
 1.2.4.2 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.2.4.1 30-Apr-2009  jym file sysproxy_socket.c was added on branch jym-xensuspend on 2009-05-13 17:22:58 +0000
 1.2.2.4 09-Oct-2010  yamt sync with head
 1.2.2.3 11-Mar-2010  yamt sync with head
 1.2.2.2 04-May-2009  yamt sync with head.
 1.2.2.1 30-Apr-2009  yamt file sysproxy_socket.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.5.2.4 06-Nov-2010  uebayasi Sync with HEAD.
 1.5.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.5.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.5.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.6.2.1 05-Mar-2011  rmind sync with head
 1.28 04-Oct-2023  ad rump now needs lwp_need_userret()
 1.27 01-Aug-2020  riastradh Define kthread_fpu_enter/exit for rump.

XXX Not 100% sure that it's safe to touch curlwp->l_flag in this
context, but this change will make progress, at least.
 1.26 21-Apr-2017  kamil Fix build of rump after change in lwp_create's signature
 1.25 21-Apr-2017  christos - Propagate the signal mask from the ucontext_t to the newly created thread
as specified by _lwp_create(2)
- Reset the signal stack for threads created with _lwp_create(2)
 1.24 26-Jan-2016  pooka branches: 1.24.2; 1.24.4;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.23 09-Apr-2014  pooka branches: 1.23.4;
implement lwp_create() and a few related interfaces.
main raison d'impalerment: the aio driver
 1.22 15-Mar-2014  pooka branches: 1.22.2;
Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.21 02-May-2013  pooka branches: 1.21.4;
Inform the rump kernel hypervisor of valid thread contexts so
that the implementation can allocate and release storage for them
in an optimal fashion, if necessary.
 1.20 30-Apr-2013  pooka In kthread_create(), pass the priority and cpu index down to the
rump kernel hypervisor (though the current implementation doesn't take
advantage of them).
 1.19 27-Apr-2013  pooka roll mutex init hypercalls into one (one of them already took a flag anyway)
 1.18 10-Mar-2013  pooka Don't allow kernel threads to run before all CPUs have been initialized
to avoid them getting scheduled on non-initialized CPUs.
 1.17 04-Nov-2012  pooka Add vdrain to the list of kernel threads.
 1.16 04-Nov-2012  pooka Use a table to check for kernel threads.
 1.15 07-Aug-2011  rmind branches: 1.15.2; 1.15.12;
Rename slightly misleading KTHREAD_JOINABLE to KTHREAD_MUSTJOIN.
 1.14 17-Jul-2011  joerg Retire varargs.h support. Move machine/stdarg.h logic into MI
sys/stdarg.h and expect compiler to provide proper builtins, defaulting
to the GCC interface. lint still has a special fallback.
Reduce abuse of _BSD_VA_LIST_ by defining __va_list by default and
derive va_list as required by standards.
 1.13 29-Oct-2010  pooka Attach implicit threads to initproc instead of proc0. This way
applications which alter, by purpose or by accident, the uid in an
implicit thread are don't affect kernel threads.

from discussion with njoly
 1.12 01-Sep-2010  pooka Implement rump_lwproc: the new lwp/proc management routines for
rump. These move the management of the pid/lwpid space from the
application into the kernel, make code more robust, and make it
possible to attach multiple lwp's to non-proc0 processes.
 1.11 03-Jun-2010  pooka Don't use rumpuser_malloc() directly.
 1.10 31-May-2010  pooka Support KTHREAD_JOINABLE/kthread_join(). Also fixes earlier bug
where all pthreads were created non-detached.
 1.9 28-May-2010  pooka Improve the CPU scheduler for a host MP system with multithreaded
access. The old scheduler had a global freelist which caused a
cache crisis with multiple host threads trying to schedule a virtual
CPU simultaneously.

The rump scheduler is different from a normal thread scheduler, so
it has different requirements. First, we schedule a CPU for a
thread (which we get from the host scheduler) instead of scheduling
a thread onto a CPU. Second, scheduling points are at every
entry/exit to/from the rump kernel, including (but not limited to)
syscall entry points and hypercalls. This means scheduling happens
a lot more frequently than in a normal kernel.

For every lwp, cache the previously used CPU. When scheduling,
attempt to reuse the same CPU. If we get it, we can use it directly
without any memory barriers or expensive locks. If the CPU is
taken, migrate. Use a lock/wait only in the slowpath. Be very
wary of walking the entire CPU array because that does not lead to
a happy cacher.

The migration algorithm could probably benefit from improved
heuristics and tuning. Even as such, with the new scheduler an
application which has two threads making rlimit syscalls in a tight
loop experiences almost 400% speedup. The exact speedup is difficult
to pinpoint, though, since the old scheduler caused very jittery
results due to cache contention. Also, the rump version is now
70% faster than the counterpart which calls the host kernel.
 1.8 09-Feb-2010  pooka branches: 1.8.2; 1.8.4;
Store l_name for kernel threads.
 1.7 27-Jan-2010  pooka branches: 1.7.2;
ignore pmf threads if RUMP_THREADS == 0
 1.6 05-Dec-2009  pooka KERNEL_UNLOCK_LAST in non-mpsafe kthread exit.
 1.5 03-Dec-2009  pooka Soft-fail xcall thread creation to make RUMP_THREADS=0 work again.
 1.4 01-Dec-2009  pooka Almost there for virtual CPU MP support:
* support bound kernel threads
* bind softint threads to specific virtual cpus
+ remove now-unnecessary locks from softint code

Now, if we only had MI CPU_INFO_FOREACH() .... (hi rmind ;)
 1.3 09-Nov-2009  pooka adjust comment for previous
 1.2 09-Nov-2009  pooka set LP_INTR for KTHREAD_INTR
 1.1 04-Nov-2009  pooka Give the kthread->pthread interface emulation its own module.
 1.7.2.4 06-Nov-2010  uebayasi Sync with HEAD.
 1.7.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.7.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.7.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.8.4.3 05-Mar-2011  rmind sync with head
 1.8.4.2 03-Jul-2010  rmind sync with head
 1.8.4.1 30-May-2010  rmind sync with head
 1.8.2.4 09-Oct-2010  yamt sync with head
 1.8.2.3 11-Aug-2010  yamt sync with head.
 1.8.2.2 11-Mar-2010  yamt sync with head
 1.8.2.1 09-Feb-2010  yamt file threads.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.15.12.4 03-Dec-2017  jdolecek update from HEAD
 1.15.12.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.15.12.2 23-Jun-2013  tls resync from head
 1.15.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.15.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.15.2.1 16-Jan-2013  yamt sync with (a bit old) head
 1.21.4.1 18-May-2014  rmind sync with head
 1.22.2.1 10-Aug-2014  tls Rebase.
 1.23.4.2 28-Aug-2017  skrll Sync with HEAD
 1.23.4.1 19-Mar-2016  skrll Sync with HEAD
 1.24.4.2 23-Apr-2017  bouyer Sync with HEAD
 1.24.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.24.2.1 26-Apr-2017  pgoyette Sync with HEAD
 1.40 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.39 29-Jul-2008  pooka branches: 1.39.2;
Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.38 12-Mar-2008  pooka branches: 1.38.4; 1.38.6; 1.38.8; 1.38.10;
Support chdir. This is useful for example when testing and not
wanting to stress namei() so much as test individual ops.
XXX: it should be implemented per calling thread, not per fs.
 1.37 12-Mar-2008  pooka Support multiple file systems within one process with ukfs by using
a "chroot" for each file system.
 1.36 11-Mar-2008  pooka Backup some fixes for recent breakage from local tree. Also some
other improvements such as exporting the real kernel namei and
using that in ukfs instead of the homegrown heap'o hacks namei.
"etcetc".
 1.35 30-Jan-2008  ad branches: 1.35.2; 1.35.6;
Replace struct lock on vnodes with a simpler lock object built on
krwlock_t. This is a step towards removing lockmgr and simplifying
vnode locking. Discussed on tech-kern.
 1.34 27-Jan-2008  pooka Use vfs_subr.c from sys/kern. This brings differences in the vnode
life cycle between rump and a real kernel to a minimum.
 1.33 25-Jan-2008  pooka Nuke local copy of getcwd_common(), we compile in the real thing now.
 1.32 24-Jan-2008  pooka Use namei() etc. from kernel sources instead of a reimplementation.
To accommodate, give the rootvnode its own vnode op vector with a
simple lookup operation. This is used for looking up the file
system's device vnode instead of doing that directly in a homesmoked
namei().
 1.31 24-Jan-2008  pooka Make work again by repairing spec_node_init() and not being afraid
to use it.
 1.30 24-Jan-2008  ad specfs changes for PR kern/37717 (raidclose() is no longer called on
shutdown). There are still problems with device access and a PR will be
filed.

- Kill checkalias(). Allow multiple vnodes to reference a single device.

- Don't play dangerous tricks with block vnodes to ensure that only one
vnode can describe a block device. Instead, prohibit concurrent opens of
block devices. As a bonus remove the unreliable code that prevents
multiple file system mounts on the same device. It's no longer needed.

- Track opens by vnode and by device. Issue cdev_close() when the last open
goes away, instead of abusing vnode::v_usecount to tell if the device is
open.
 1.29 17-Jan-2008  ad Add a dummy vrevoke().
 1.28 03-Jan-2008  pooka Theoretically this is supposed to be interchangeable with real
kernel code. Use kmem_alloc/free instead of some wily homerolled
rump interfaces for memory allocation.
 1.27 03-Jan-2008  pooka use UVM_OBJ_INIT/DESTROY()
 1.26 03-Jan-2008  pooka valloc -> vnalloc, vfree -> vnfree
Avoids collision with userland valloc(3).

no functional change
ad ok
 1.25 02-Jan-2008  pooka Add the ability to run puffs in userspace. This means that puffs
can now be developed in userspace using puffs for development
(I hate emulators, they are annoyingly clumsy).

To e.g. mount psshfs using puffs-on-puffs, run fs/bin/syspuffs/syspuffs
with the regular mount_psshfs command line as an argument:

golem> ./syspuffs /usr/sbin/mount_psshfs ftp.netbsd.org:/pub /puffs

This will make the mount appear as usual, with the exception that the
requests will be passed through puffs both in the kernel and userspace:

ftp.netbsd.org:/pub on /puffs type puffs|p2k|puffs|psshfs
 1.24 02-Jan-2008  pooka fix vmlocking2 fallout:

* I heard a wild rumor that vp_interlock is a mutex these days (hi ad!)
* init new locks (hi ad)
* observe that with simple_locks only deadlocks would be caught while
releasing unlocked locks would go unnoticed. make locking work (hi pooka)
 1.23 02-Jan-2008  ad Provide valloc(), fix vfree().
 1.22 02-Jan-2008  ad Merge vmlocking2 to head.
 1.21 26-Nov-2007  pooka branches: 1.21.2; 1.21.6;
Remove the "struct lwp *" argument from all VFS and VOP interfaces.
The general trend is to remove it from all kernel interfaces and
this is a start. In case the calling lwp is desired, curlwp should
be used.

quick consensus on tech-kern
 1.20 14-Nov-2007  pooka Shield against returning EJUSTRETURN from relookup()
 1.19 06-Nov-2007  pooka initialize vnode interlock when creating one
 1.18 06-Nov-2007  pooka Sprinkle some more locking, especially to the vm. Due to some
additional fixes, it's now possible to run file systems with
spinlocks actually enabled. The genfs_putpages() locking is still
working only due to greater powers, but I'll eventually get around to
fixing it.
 1.17 27-Oct-2007  pooka branches: 1.17.2; 1.17.4;
Prevent recursion in INACTIVE -> vrecycle -> inactive -> ...
 1.16 26-Oct-2007  pooka more carefully emulate vget() and vrecycle()
 1.15 17-Oct-2007  pooka branches: 1.15.2;
Compile most genfs routines directly out of the kernel sources.
Move special I/O routines to genfs_io.c to mirror kernel naming.
 1.14 10-Oct-2007  ad Merge from vmlocking:

- Split vnode::v_flag into three fields, depending on field locking.
- simple_lock -> kmutex in a few places.
- Fix some simple locking problems.
 1.13 08-Sep-2007  pooka branches: 1.13.2;
honor LOCKLEAF in namei
 1.12 01-Sep-2007  pooka branches: 1.12.2;
vinvalbuf in vrecycle
 1.11 20-Aug-2007  pooka branches: 1.11.2; 1.11.4;
Hide NetBSD kernel headers completely from ukfs. This includes creating
accessors for:
* struct mount & VFS ops
* struct uio
* struct vnode
* struct vattr

and some namespace games for:
* namei flags
* VOPs
* enum vtype

Also, split rump services into two categories: library private and public
(rump_private.h and rump.h, respectively).

As a result, it is now possible to compile and use the NetBSD kernel
file systems on Linux (and probably other systems too with very
little work), although the makefiles need a bit of work to make it
a pleasureable experience.
 1.10 14-Aug-2007  pooka branches: 1.10.2;
Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.9 13-Aug-2007  pooka Use supermarket variety vfs_vnops.c instead of homecooked routines
(that's actually a good thing here).
 1.8 12-Aug-2007  pooka track lockmgr lock status. makes lfs work again
 1.7 09-Aug-2007  pooka Play catchup with ufs/ffs changes: compile subr_specificdata.c
and emulate kmem_foo() to support the prior.
 1.6 09-Aug-2007  pooka whoops, committed old signature of vrele2()
 1.5 09-Aug-2007  pooka Add some stubs for lfs.
 1.4 08-Aug-2007  pooka Provide rump_getvninfo() and use that in libp2k_lookup() to avoid an
extra getattr for stuff the file system already cached in the vnode.
 1.3 07-Aug-2007  pooka flush pages in vflushbuf()
 1.2 06-Aug-2007  pooka branches: 1.2.2;
Allow to de/register pathnames which should be faked as block
devices instead of faking all non-blks as blks in namei().
 1.1 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.2.2.2 06-Aug-2007  pooka Allow to de/register pathnames which should be faked as block
devices instead of faking all non-blks as blks in namei().
 1.2.2.1 06-Aug-2007  pooka file vfs.c was added on branch matt-mips64 on 2007-08-06 22:20:58 +0000
 1.10.2.4 10-Sep-2007  skrll Sync with HEAD.
 1.10.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.10.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.10.2.1 14-Aug-2007  skrll file vfs.c was added on branch nick-csl-alignment on 2007-08-15 13:50:42 +0000
 1.11.4.4 23-Mar-2008  matt sync with HEAD
 1.11.4.3 09-Jan-2008  matt sync with HEAD
 1.11.4.2 08-Nov-2007  matt sync with -HEAD
 1.11.4.1 06-Nov-2007  matt sync with HEAD
 1.11.2.4 23-Oct-2007  ad Sync with head.
 1.11.2.3 09-Oct-2007  ad Sync with head.
 1.11.2.2 20-Aug-2007  ad Sync with HEAD.
 1.11.2.1 20-Aug-2007  ad file vfs.c was added on branch vmlocking on 2007-08-20 22:07:30 +0000
 1.12.2.8 17-Mar-2008  yamt sync with head.
 1.12.2.7 04-Feb-2008  yamt sync with head.
 1.12.2.6 21-Jan-2008  yamt sync with head
 1.12.2.5 07-Dec-2007  yamt sync with head
 1.12.2.4 15-Nov-2007  yamt sync with head.
 1.12.2.3 27-Oct-2007  yamt sync with head.
 1.12.2.2 03-Sep-2007  yamt sync with head.
 1.12.2.1 01-Sep-2007  yamt file vfs.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:36 +0000
 1.13.2.2 18-Oct-2007  yamt sync with head.
 1.13.2.1 14-Oct-2007  yamt sync with head.
 1.15.2.2 18-Nov-2007  bouyer Sync with HEAD
 1.15.2.1 13-Nov-2007  bouyer Sync with HEAD
 1.17.4.3 18-Feb-2008  mjf Sync with HEAD.
 1.17.4.2 08-Dec-2007  mjf Sync with HEAD.
 1.17.4.1 19-Nov-2007  mjf Sync with HEAD.
 1.17.2.4 27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.17.2.3 14-Nov-2007  joerg Sync with HEAD.
 1.17.2.2 06-Nov-2007  joerg Sync with HEAD.
 1.17.2.1 27-Oct-2007  joerg file vfs.c was added on branch jmcneill-pm on 2007-11-06 19:25:37 +0000
 1.21.6.3 19-Jan-2008  bouyer Sync with HEAD
 1.21.6.2 08-Jan-2008  bouyer Sync with HEAD
 1.21.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.21.2.3 28-Dec-2007  ad Make rump build.
 1.21.2.2 08-Dec-2007  ad Fix merge error.
 1.21.2.1 04-Dec-2007  ad Pull the vmlocking changes into a new branch.
 1.35.6.3 17-Jan-2009  mjf Sync with HEAD.
 1.35.6.2 28-Sep-2008  mjf Sync with HEAD.
 1.35.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.35.2.1 24-Mar-2008  keiichi sync with head.
 1.38.10.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.38.10.1 19-Oct-2008  haad Sync with HEAD.
 1.38.8.1 31-Jul-2008  simonb Sync with head.
 1.38.6.1 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.38.4.1 04-May-2009  yamt sync with head.
 1.39.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.8 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.7 30-Sep-2008  pooka branches: 1.7.2;
Make spec_fsync() a do-nothing instead of a do-panic. Some file
systems have it directly in the specfs op vector.
 1.6 17-Oct-2007  pooka branches: 1.6.4; 1.6.20; 1.6.24; 1.6.26; 1.6.30;
Compile most genfs routines directly out of the kernel sources.
Move special I/O routines to genfs_io.c to mirror kernel naming.
 1.5 13-Aug-2007  pooka branches: 1.5.2; 1.5.4; 1.5.6; 1.5.8; 1.5.10;
Use supermarket variety vfs_vnops.c instead of homecooked routines
(that's actually a good thing here).
 1.4 09-Aug-2007  pooka * fix symlink
* actually call a couple of VOPs
 1.3 09-Aug-2007  pooka fool some KASSERTs
 1.2 08-Aug-2007  pooka Make genfs_islocked return always 1 instead of 0. But these should
really get tracked ...
 1.1 05-Aug-2007  pooka branches: 1.1.2;
Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.2 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.1.2.1 05-Aug-2007  pooka file vfsops_stub.c was added on branch matt-mips64 on 2007-08-05 22:28:11 +0000
 1.5.10.1 18-Oct-2007  yamt sync with head.
 1.5.8.3 27-Oct-2007  yamt sync with head.
 1.5.8.2 03-Sep-2007  yamt sync with head.
 1.5.8.1 13-Aug-2007  yamt file vfsops_stub.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:37 +0000
 1.5.6.1 06-Nov-2007  matt sync with HEAD
 1.5.4.3 23-Oct-2007  ad Sync with head.
 1.5.4.2 20-Aug-2007  ad Sync with HEAD.
 1.5.4.1 13-Aug-2007  ad file vfsops_stub.c was added on branch vmlocking on 2007-08-20 22:07:31 +0000
 1.5.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.5.2.1 13-Aug-2007  skrll file vfsops_stub.c was added on branch nick-csl-alignment on 2007-08-15 13:50:42 +0000
 1.6.30.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.6.30.1 19-Oct-2008  haad Sync with HEAD.
 1.6.26.1 10-Oct-2008  skrll Sync with HEAD.
 1.6.24.1 04-May-2009  yamt sync with head.
 1.6.20.2 17-Jan-2009  mjf Sync with HEAD.
 1.6.20.1 05-Oct-2008  mjf Sync with HEAD.
 1.6.4.2 02-Nov-2007  joerg Reduce diff to HEAD by adding files forgotten in early merges.
 1.6.4.1 17-Oct-2007  joerg file vfsops_stub.c was added on branch jmcneill-pm on 2007-11-02 12:43:54 +0000
 1.7.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.197 24-Sep-2023  martin PR kern/57626: instead of an (arbitrary) FAKE_PAGE_SHIFT (and always
using 4k pages), query the hypervisor for the real page size of the host
kernel and use that for architectures that do not have compile time
constant page sizes.
 1.196 22-Apr-2023  riastradh rump: Move ubc_uiomove, ubc_zerorange from rumpvfs to rumpkern.

Needed by kern_ksyms.c. We could split kern_ksyms.c up into kernel-
internal interfaces and the user/kernel /dev/ksyms interface, but
there's nothing vfs-specific about ubc_uiomove and ubc_zerorange
anyway, so let's just define them in rumpkern.
 1.195 22-Apr-2023  riastradh rumpkern: Provide stub uvm_vnodeops weak alias.

Needed for UVM_OBJ_IS_VNODE, but not for anything else in rumpkern
without rumpvfs.
 1.194 26-Oct-2022  riastradh sys/*: Get module_map consistently from sys/module.h.
 1.193 21-Aug-2022  riastradh rumpkern: Abusing struct pmap internals now requires extra effort.

(as it should)
 1.192 16-Sep-2021  andvar fix typos in word "successfully", mainly s/succesfully/successfully/.
 1.191 05-Dec-2020  chs update the rump copy of uvm_page_unbusy() to match the real version,
in particular handle PG_PAGEOUT. fixes a few atf tests.
 1.190 11-Jun-2020  ad branches: 1.190.2;
uvm_availmem(): give it a boolean argument to specify whether a recent
cached value will do, or if the very latest total must be fetched. It can
be called thousands of times a second and fetching the totals impacts not
only the calling LWP but other CPUs doing unrelated activity in the VM
system.
 1.189 06-Jun-2020  ad Correction to previous - set VI_PAGES correctly.
 1.188 03-Jun-2020  ad PR kern/55032 (rump/rumpkern/t_vm:uvmwait test case now fails)

Work around issues with rump's pagedaemon emulation, including one that's
sensitive to timing effects (i.e. scheduler changes). While here tidy up
some other stuff around the emulation of page alloc/free.
 1.187 17-Mar-2020  ad Tweak the March 14th change to make page waits interlocked by pg->interlock.
Remove unneeded changes and only deal with the PQ_WANTED flag, to exclude
possible bugs.
 1.186 14-Mar-2020  ad Make page waits (WANTED vs BUSY) interlocked by pg->interlock. Gets RW
locks out of the equation for sleep/wakeup, and allows observing+waiting
for busy pages when holding only a read lock. Proposed on tech-kern.
 1.185 14-Mar-2020  ad rump - page/object dirtyness tracking corrections.
 1.184 23-Feb-2020  ad UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.183 15-Jan-2020  ad Merge from yamt-pagecache (after much testing):

- Reduce unnecessary page scan in putpages esp. when an object has a ton of
pages cached but only a few of them are dirty.

- Reduce the number of pmap operations by tracking page dirtiness more
precisely in uvm layer.
 1.182 05-Jan-2020  para branches: 1.182.2;
remove unused predicate function

likely unused since kmem changes
 1.181 02-Jan-2020  ad rump: initialize pg->interlock
 1.180 31-Dec-2019  ad Fix rump.
 1.179 31-Dec-2019  ad Rename uvm_free() -> uvm_availmem().
 1.178 31-Dec-2019  ad Rename uvm_page_locked_p() -> uvm_page_owner_locked_p()
 1.177 21-Dec-2019  ad Add uvm_free(): returns number of free pages in system.
 1.176 15-Dec-2019  ad Merge from yamt-pagecache:

- do gang lookup of pages using radixtree.
- remove now unused uvm_object::uo_memq and vm_page::listq.queue.
 1.175 14-Dec-2019  ad Merge from yamt-pagecache: use radixtree for page lookup.

rbtree page lookup was introduced during the NetBSD 5.0 development cycle to
bypass lock contention problems with the (then) global page hash, and was a
temporary solution to allow us to make progress. radixtree is the intended
replacement.

Ok yamt@.
 1.174 13-Dec-2019  ad Break the global uvm_pageqlock into a per-page identity lock and a private
lock for use of the pagedaemon policy code. Discussed on tech-kern.

PR kern/54209: NetBSD 8 large memory performance extremely low
PR kern/54210: NetBSD-8 processes presumably not exiting
PR kern/54727: writing a large file causes unreasonable system behaviour
 1.173 14-May-2017  nat branches: 1.173.10; 1.173.14;
Add uvm_map_pageable dummy function. This means that the audio tests
should run again.

Ok christos@.
 1.172 07-May-2017  martin Provide stupid uvm_map() and uvm_unmap1() immplementations - might be enough
to get audio tests in rump going again.
XXX needs a RUMP chef to review/replace by something sane!
 1.171 07-May-2017  martin Add a dummy (non-working) uvm_map().
XXX someone with a clue please fix this for real!
 1.170 20-Jul-2016  christos branches: 1.170.6;
add uvm_km_protect()
 1.169 26-Jan-2016  pooka branches: 1.169.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.168 26-Nov-2015  martin Adapt to e_default_mapaddr signature changes
 1.167 02-Jun-2015  pooka In case pagedaemon can't release any more memory, use kpause() instead
of cv_timedwait() on the pagedaemon condvar -- it's no use constantly
waking the pagedaemon up for new memory allocation attempts, as will
happen e.g. if new network connections are constantly pouring in.
 1.166 18-Apr-2015  pooka Give remote clients struct pmap storage. Although the pmap is unused,
that way we can sure that the pmap macro framework doesn't access all
the wrong places.
 1.165 17-Apr-2015  pooka g/c rump_vmmap

No recollection what it was used for; didn't seem to be used even when
it was originally added 5th August 2007.
 1.164 17-Apr-2015  pooka Give the kernel/local pmaps actual storage.

That way friendly neighborhood macros won't go scribbling
in the wrong places.
 1.163 03-Apr-2015  pooka Use RUMP_PMAP_KERNEL and RUMP_PMAP_LOCAL to denote
kernel and local client pmaps, respectively.
 1.162 03-Apr-2015  pooka Use a different vmspace for rump kernel proc0 and local clients.
While the rump kernel and local clients are by definition in the same
host vmspace, there are subtle differences in how in-kernel code works
in case accessing the kernel vmspace or a user process vmspace.

Problem discovered by riastradh's "read(fd, NULL, 1)" test.
 1.161 03-Jan-2015  pooka Put all sysproxy routines to their own C module, sysproxy.c
 1.160 14-Dec-2014  chs add a new "fo_mmap" fileops method to allow use of arbitrary uvm_objects for
mappings of file objects. move vnode-specific details of mmap()ing a vnode
from uvm_mmap() to the new vnode-specific vn_mmap(). add new uvm_mmap_dev()
and uvm_mmap_anon() convenience functions for mapping character devices
and anonymous memory, and replace all other calls to uvm_mmap() with those.
use the new fileop in drm2 so that libdrm can use mmap() to map things
like on other platforms (instead of the ioctl that we have used so far).
 1.159 15-Jun-2014  pooka branches: 1.159.2; 1.159.4;
update comment
 1.158 13-Jun-2014  pooka make sure we don't underflow the memlimit
 1.157 13-Jun-2014  pooka fill in a few more uvmexp entries
 1.156 25-Apr-2014  pooka Init function pointers to nullop() so that callers don't need a dance
 1.155 12-Apr-2014  pooka apparently DFLSSIZ isn't defined on powerpc, so pull a value out of el stetson
 1.154 10-Apr-2014  pooka Pretend that we have slightly more reasonable stack size limits.
(we don't have stacks, that's why we pretend)
 1.153 09-Apr-2014  pooka implement lwp_create() and a few related interfaces.
main raison d'impalerment: the aio driver
 1.152 11-Mar-2014  pooka branches: 1.152.2;
kill undesirable #ifndef _RUMPKERNEL
 1.151 11-Mar-2014  pooka deduplicate uvm_object_printit() implementation
 1.150 03-Mar-2014  pooka Fix the memory limiter to work for non-pagedaemon threads again

reported by njoly
 1.149 18-Feb-2014  pooka Use same uvm_swap_shutdown() stub for !vmswap kernels and rump kernels.
 1.148 17-Feb-2014  pooka simply issue a warning if <1MB RAM configured. it might work, but
not going to start enumerating when and where it might.
 1.147 17-Feb-2014  pooka reserve a small amount of memory for the pagedaemon
 1.146 23-Nov-2013  christos add a copy of uvm_swap_shutdown() here so that it is not undefined when we
use it.
 1.145 14-Nov-2013  martin As discussed on tech-kern: make TOPDOWN-VM runtime selectable per process
(offer MD code or emulations to override it).
 1.144 30-Apr-2013  pooka branches: 1.144.4;
Flip parameter order in the clock hypercalls to make them consistent
with everything else wrt in/out parameters.
 1.143 30-Apr-2013  pooka add missing demogorgon
 1.142 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.141 29-Apr-2013  pooka Replace the various "get info from hypervisor" interfaces with one
unified rumpuser_getparam(), and make it return a plist. The
contents can come e.g. from the env or a config file. Make
identifiers starting with an underscore denote system identifiers
which must be implemented by hypervisor. (yea, j/k about the plist bit)
 1.140 28-Apr-2013  pooka Appearances count: spell "IPL_NONE" correctly.
 1.139 28-Apr-2013  pooka Improve the time-related hypercalls so that's it's possible to
sleep until an absolute time on the host's monotonic clock (should
something like that be supported).
 1.138 27-Apr-2013  pooka * treat kern_malloc.c as an unreal allocator (it's so lightweight)
* get rid of the rumpuser_realloc() hypercall
* pass size to rumpuser_free()
 1.137 10-Mar-2013  pooka Use kern_malloc.c instead of the relegated allocators in memalloc.c.
Previously this didn't make sense due to the use of kmem_map, but the
new malloc is more dynamic and puts sense into using it.
 1.136 06-Mar-2013  yamt simplify code
add a comment
 1.135 29-Jan-2013  para make vmem(9) ready to be used early during bootstrap to replace extent(9)
pass memory for vmem structs into the initialization function and
do away with the static pool of vmem structs.
remove special bootstrapping of the quantum cache pools of the kmem_va_arena
as memory for pool_caches is allocated via pool_allocator_meta which is
fully operational at this point.
 1.134 26-Jan-2013  para revert previous commit not yet fully functional, sorry
 1.133 26-Jan-2013  para make vmem(9) ready to be used early during bootstrap to replace extent(9).
pass memory for vmem structs into the initialization functions and
do away with the static pools for this.
factor out the vmem internal structures into a private header.
remove special bootstrapping of the kmem_va_arena as all necessary memory
comes from pool_allocator_meta wich is fully operational at this point.
 1.132 14-Jan-2013  pooka Don't use __weak_alias where the component framework is sufficient.
 1.131 13-Nov-2012  pooka kill some -Wunused-but-set-variable warnings
 1.130 27-Jul-2012  pooka branches: 1.130.2;
Use mmap hypercall for memory allocation only when absolutely necessary
(map == module_map). Otherwise, use the malloc hypercall. This avoids
relying on the platform's mmap() to be able to return arbitrarily
alignment memory.
 1.129 20-Jul-2012  pooka Make it possible to select between real and unreal allocators from
make. Plus some gratuitous renaming.
 1.128 20-Jul-2012  pooka make unreal allocators work again
 1.127 05-Jun-2012  jym Now that pool_cache_invalidate() is synchronous and can handle per-CPU
caches, merge together pool_drain_start() and pool_drain_end() into

bool pool_drain(struct pool **ppp);

"bool" value indicates whether reclaiming was fully done (true) or not (false)
"ppp" will contain a pointer to the pool that was drained (optional).

See http://mail-index.netbsd.org/tech-kern/2012/06/04/msg013287.html
 1.126 23-May-2012  martin Recently uvm_page_locked_p() leaked outside of uvm/MD code, so rump
needs to provide one.
 1.125 17-Mar-2012  hannken Don't take a mutex we already took 6 lines above.
 1.124 05-Mar-2012  para adjust rump for static pool_cache count
should have went in with subr_vmem 1.73
 1.123 19-Feb-2012  martin Adapt to constification in sys/uvm/uvm_export.h
 1.122 29-Jan-2012  njoly branches: 1.122.2;
Move pool subsystem init from rump__init() to uvm_init(), following
kernel code. Fix RUMP_LOCKDEBUG early panic.
 1.121 27-Jan-2012  para extending vmem(9) to be able to allocated resources for it's own needs.
simplifying uvm_map handling (no special kernel entries anymore no relocking)
make malloc(9) a thin wrapper around kmem(9)
(with private interface for interrupt safety reasons)

releng@ acknowledged
 1.120 31-Oct-2011  yamt branches: 1.120.2; 1.120.6;
replace a non us-ascii character in a comment
 1.119 02-Sep-2011  christos trylockowner is not needed anymore.
 1.118 01-Sep-2011  christos fix the build for rumpserver.
 1.117 19-Jun-2011  hannken Make ubc_purge() a noop.
 1.116 12-Jun-2011  mrg include uvm_object.c in the rump kernel for the new uvm_obj* functions.
don't build the uvm_object.c uvm_object_printit() for _RUMPKERNEL. (XXX)
add empty panic() stubs for uvm_loanbreak() and ubc_purge().

fixes some more 5.99.53 rump build issues.
 1.115 12-Jun-2011  rmind Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.114 21-Mar-2011  pooka branches: 1.114.2;
Update copyright statements.

no functional change.
 1.113 22-Feb-2011  pooka Shuffle the pagedaemon algorithm a bit to record the number of
pageouts active and give up only if the pagedaemon could not free
memory and there are no outstanding pageouts.

This should fix the "out of memory" pauses reported by Mihai Chelaru
and Taylor R Campbell. Tested by copying files to and from an ffs
backed by /dev/wd0 (with and without -o log) using a 1MB rump kernel
memory limit.
 1.112 22-Feb-2011  pooka complete the incomplete pagesize rototill
 1.111 10-Feb-2011  pooka Make vmapbuf() return success/error and make physio deal with a
failure.
 1.110 10-Feb-2011  pooka Set b_error in vunmapbuf() if copyout_proc fails.
XXX: what if copyin fails in vmapbuf()?
 1.109 05-Feb-2011  pooka Use correct strtoululululu variant.

from Taylor R Campbell
 1.108 22-Jan-2011  pooka Add a comment explaning why uvm_reclaim_hook is not currently
necessary for rump.

XXX: strictly speaking, the zfs implementation does not work
correctly since it just wakes up a thread instead of performing
the scan in the context of the pagedaemon
 1.107 18-Jan-2011  haad branches: 1.107.2;
Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
 1.106 13-Jan-2011  pooka branches: 1.106.2;
Introduce RUMP_LOCALPROC_P() macro and use it.
 1.105 08-Jan-2011  pooka Do a minidehumanizenumber for RUMP_MEMLIMIT. Now you can set it
to e.g. 16m instead of having to type out 16777216.
 1.104 01-Dec-2010  pooka If the pagedaemon cannot free any memory due to not being able to
lock any uvm objects, check if lockholders are currently on CPU
and yield to try very soon again instead of assuming deadlock.

This makes limited-memory kernels perform the same as memory-unlimited
kernels (provided there is a reasonable amount of memory available).
For example, for large file copy off of ffs where the image is
backed on host memory (i.e. no disk i/o, i.e. ideal conditions)
the figures are, per rump kernel memory limit:

3000kB: same
1000kB: 10% slower
500kB: 50% slower

(per pagedaemon code might still be able to use some tweak, though)
 1.103 01-Dec-2010  pooka Make uvm_pagealloc_tele() fail if the request can't be immediately
satisfied. This allows the caller to unlock the object and the
pagedaemon to avoid deadlock even if ~all memory is consumed by
one vm object. This in turn makes is possible to copy a large file
into a rump kernel with a 10MB memory limit (where large >> 10MB).
A little more tuning will be required to avoid the pagedaemon
hitting the sleep-and-retry path, though.

+ fix some outdated unrelated comments
 1.102 22-Nov-2010  pooka Support physio for remote processes.
==> add support for remote vmspace vmapbuf/vunmapbuf
==> add proper support for copyin/out_vmspace
==> add support for remote vmspace uvm_io
==> add support for non-curproc rumpuser_sp_copyin/out
==> store remote context in vm_map->pmap instead of
pthread_specificdata

In short, makes read/write of most (all?) block devices work from
a remote rump client via rump syscalls.
 1.101 17-Nov-2010  pooka cleanup some old garbage
 1.100 16-Nov-2010  uebayasi Define uvmexp_pagemask and friends used by sparc to set PAGE_SIZE,
PAGE_MASK, PAGE_SHIFT dynamically.
 1.99 12-Nov-2010  uebayasi Abstraction fix; move physical address -> per-page metadata (struct
vm_page *) "reverse" lookup code from uvm_page.h to uvm_page.c, to
help migration to not do that.

Likewise move per-page metadata (struct vm_page *) -> physical
address "forward" conversion code into *.c too. This is called
only low-layer VM and MD code.
 1.98 27-Oct-2010  pooka Start rework of system call proxying over socket ("sysproxy").
This incarnation is written in the user namespace as opposed to
the previous one which was done in kernel namespace. Also, rump
does all the handshaking now instead of excepting an application
to come up with the user namespace socket.

There's still a lot to do, including making code "a bit" more
robust, actually running different clients in a different process
inside the kernel and splitting the client side library from librump.
I'm committing this now so that I don't lose it, plus it generally
works as long as you don't use it in unexcepted ways: i've tested
ifconfig(8), route(8), envstat(8) and sysctl(8).
 1.97 13-Oct-2010  pooka Don't reorder page on the age queue if the lookup is done by the
pagedaemon. This mimics normal kernel behaviour where pmap_kentered
mappings are not tracked for references. Without this change the
vnode pager's clustering could cause one page to be released by
the pagedaemon, and the rest of the pages in the pageout cluster
made unlikely candidates to be released soon.
 1.96 24-Sep-2010  rmind Fixes/improvements to RB-tree implementation:
1. Fix inverted node order, so that negative value from comparison operator
would represent lower (left) node, and positive - higher (right) node.
2. Add an argument (i.e. "context"), passed to comparison operators.
3. Change rb_tree_insert_node() to return a node - either inserted one or
already existing one.
4. Amend the interface to manipulate the actual object, instead of the
rb_node (in a similar way as Patricia-tree interface does).
5. Update all RB-tree users accordingly.

XXX: Perhaps rename rb.h to rbtree.h, since cleaning-up..

1-3 address the PR/43488 by Jeremy Huddleston.

Passes RB-tree regression tests.
Reviewed by: matt@, christos@
 1.95 09-Sep-2010  pooka * unlock object in "error" branch
* fix typo (not in comment)
* improve indentation tailspin
 1.94 09-Sep-2010  pooka Assert that object is locked in page unbusy.
 1.93 08-Sep-2010  pooka Actually, we want to say "no aobjs" instead of "only vnodes" to
make component boundaries go right.
 1.92 08-Sep-2010  pooka Improve pagedaemon performance:
* page out vnode objects
* drain kmem/kernel_map

As long as there is a reasonable memory hardlimit (>600kB or so),
a rump kernel can now survive file system metadata access for an
arbitrary size file system (provided, of course, that the file
system does not use wired kernel memory for metadata ...).

Data handling still needs a little give&take finetuning. The
general problem is that a single vm object can easily be the owner
of all vm pages in a rump kernel. now, if a thread wants to allocate
memory while holding that object locked, there's very little the
pagedaemon can do to avoid deadlock. but I think the problem can
be solved by making an object release a page when it wants to
allocate a page if a) the system is short on memory and b) too many
pages belong to the object. that still doesn't take care of the
pathological situation where 1000 threads hold an object with 1
page of memory locked and try to allocate more. but then again,
running 1000 threads with <1MB of memory is an unlikely scenario.
and ultimately, I call upon the fundamental interaction which is
the basis of why any operating works: luck.
 1.91 07-Sep-2010  pooka Make the Diabolical (Page)Daemon Director drain vfs buffers when
we are short of memory.

There are still some funnies left to iron out. For example, with
a certain file system / memory size configuration it's still not
possible to create enough files to make the file system run out of
inodes before the kernel runs out of memory. Also, with some other
configurations disk access slows down gargantually (though i'm sure
there are >0 buffers available). Anyway, it ~works for now and
it's by no means worse than what it was before.
 1.90 07-Sep-2010  pooka Improve page allocator performance by using pool_cache for the
structure itself and allocating the backing page directly from the
hypervisor.

* initial write to a large tmpfs file is almost 2x faster
* truncating the file to 0 length after write is over 50% faster
* rewrite of the file is just slightly faster (indicating that
kmem does a good job with caching, as expected)
 1.89 07-Sep-2010  pooka Use rb_tree for page lookup instead of list. Unshockingly, this
makes dealing with large uobjs (files) quite a bit faster.
 1.88 06-Sep-2010  pooka Use standard uvm aobj pager. Most of the kernel aobj pager complexity
comes from swap handling, but that is included only with VMSWAP.
 1.87 29-Jul-2010  hannken Correct previous. Skip marker pages in uvm_pagelookup().
Already awake :-)
 1.86 29-Jul-2010  pooka Remove questionable KASSERT from previous. hannken can look at
this more closely when he wakes up. Normally I wouldn't be in such
a huge rush, but due to atf bug #53 the whole test run breaks now.
At least with the KASSERT removed all tests pass again.
 1.85 29-Jul-2010  hannken Add vm page flag PG_MARKER and use it to tag dummy marker pages
in genfs_do_putpages() and uao_put().
Use 'v_uobj.uo_npages' to check for an empty memq.
Put some assertions where these marker pages may not appear.

Ok: YAMAMOTO Takashi <yamt@netbsd.org>
 1.84 14-Jun-2010  pooka Make it possible to define an upper limit for memory consumed by
the rump kernel by specifying RUMP_MEMLIMIT. In case allocation
over that limit is attempted, essentially pool reclaim and uvm_wait()
is done. The default is to allow to allocate as much as the host
will give.

XXX: uvm_km_alloc and malloc(9) do not currently conform. the
former is easy, the latter requires kern_malloc.c (rump malloc is
currently directly relegated to host malloc).
 1.83 10-Jun-2010  pooka Use kern_proc.c instead of a collection of stubs. But what we
really wanted from this commit was the support for proc_specificdata.

TODO: make creating a new process actually use kern_proc and
maybe even add an interface which starts a process with
"any pid you don't like"
 1.82 09-Jun-2010  pooka On amd64, allocate module_map memory from the lowest 2GB.
 1.81 09-Jun-2010  pooka Add the ability to specify a preferred address the "map anon memory"
hypercall.
 1.80 03-Jun-2010  pooka Implement a sort-of pagedaemon: adjust all memory allocators to go
through an in-rumpkernel hypermemory allocator which knows it should
kick the pagedaemon and block in case ``waitok'' memory allocation
fails.

This allows us to recover from some out-of-memory situations.
Realworld'istically speaking (as opposed to whatever "should be"
theory), these OOM situations will happen extremely rarely if ever
when our hypervisor is a regular process. Speculatively, this
should be useful for other types of hosts.

issues remaining:
* the hypervisor does not know how to reclaim kernel memory (and
for the reason I stated above, I'm not sure if it makes sense
to teach the current implementation about that)
* vfs memory (buffers, vm object pages etc.) is not reclaimed
 1.79 02-Jun-2010  pooka rumpvm_init -> uvm_init to get rid of local prototype.
no functional change
 1.78 01-Jun-2010  pooka Don't pass "canfail" down to rumpuser_malloc -- there's quite little
we can do with that info way down there. Instead, pass alignment.
Implement rumpuser_malloc() with posix_memalign().
 1.77 01-Jun-2010  pooka Always use rumpuser_malloc() for allocating both poolpage and
poolpage_cache -- its bootstrap cost is slightly higher than
anonmmap, but it's faster in the long run.
 1.76 01-Jun-2010  pooka * remove rumpvm_makepage, just use uvm_pagealloc()
* update copyright to reflect reality a little better
 1.75 26-May-2010  pooka print vm object refcount
 1.74 14-May-2010  pooka Pick up after people who find build-testing their changes too difficult.
 1.73 11-May-2010  pooka uvm_object_printit() should be wrapped in DEBUGPRINT
 1.72 28-Apr-2010  pooka Instead of causing a catastrophic failure when uvm_loanuobjpages()
is called, just pretend it hit a wired page and return EBUSY. This
should cause callers to use a non-loaning access path instead.

Fixes file read path of stock nfs kernel module (previously it was
easy to just frob the nfsd_use_loan boolean into the other position
by simple value assingment, but now that nfsserver can be autoloaded
at runtime into the rump kernel, that approach is a little more
challenging since the variable isn't available in application
linkage. yes, things like adding a sysctl for the variable would
work, but now everything works out-of-the-box).
 1.71 21-Apr-2010  pooka support kern_resource
 1.70 04-Dec-2009  pooka branches: 1.70.2; 1.70.4;
g/c unused functions (previously used by the vnode pager).
 1.69 04-Dec-2009  pooka Implement enough of uvm_mmap() to make the creative proplib ioctl
copyout code work. No comments ... okok, if that'll make you leave
me alone: it's ioctl, so it's supposed to be funky (with a score
or two of psychedelic rock).
 1.68 04-Dec-2009  pooka Provide the default_mapaddr method in default rump emul (since some
kernel callers want to use it).
 1.67 04-Nov-2009  pooka Pull all relegating memory allocators under a common roof in memalloc.c
 1.66 04-Nov-2009  pooka Use std. uiomove() & friends.
 1.65 21-Oct-2009  rmind Sync rump with kernel changes.
 1.64 21-Oct-2009  rmind Remove uarea swap-out functionality:

- Addresses the issue described in PR/38828.
- Some simplification in threading and sleepq subsystems.
- Eliminates pmap_collect() and, as a side note, allows pmap optimisations.
- Eliminates XS_CTL_DATA_ONSTACK in scsipi code.
- Avoids few scans on LWP list and thus potentially long holds of proc_lock.
- Cuts ~1.5k lines of code. Reduces amd64 kernel size by ~4k.
- Removes __SWAP_BROKEN cases.

Tested on x86, mips, acorn32 (thanks <mpumford>) and partly tested on
acorn26 (thanks to <bjh21>).

Discussed on <tech-kern>, reviewed by <ad>.
 1.63 19-Oct-2009  pooka remove stale uvm_readahead() stub
 1.62 16-Oct-2009  pooka Include sys_select.c for proper select()/poll() support.
 1.61 04-Aug-2009  pooka * support uvm_pagermapin/out(), adapt uvm_pageratop()

Instead of doing actual page remapping, which we can't portably
do in userspace without extensive trickery (read: signals), simply
allocate the kva window with new physical backing, copy page
contents, return, and copy contents back in mapout. Since the
pages are locked during the mapping cycle, we can do this without
hazard.

* add lots of stubbies necessary for new stuff coming soon
 1.60 03-Aug-2009  pooka g/c cachepgmtx, i have no idea what it was supposed to be useful for.
 1.59 03-Aug-2009  pooka track number of pages associated with vm object
 1.58 10-Jun-2009  he Add a dummy uvm_readahead() function, to fix build issues after it
recently got added to the kernel.
OK'ed by pooka@
 1.57 03-Jun-2009  pooka Add user vmspace locking and remapping routines. Obviously, these
currently work only if the vmspace is local to the rump kernel.
 1.56 03-May-2009  pooka define DEBUGPRINT
 1.55 28-Apr-2009  pooka Free uao lock when destroying object. Fixes tmpfs rename leak
reported by njoly.
 1.54 24-Apr-2009  pooka * init pool linksets, makes proplib work. reported by Arnaud Ysmal.
(linksets, sigh)
* reduce #ifdef for RUMP_USE_REAL_ALLOCATORS
 1.53 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.52 06-Feb-2009  pooka branches: 1.52.2;
Call uvm_page_unbusy() instead of manually yanking PG_BUSY out.
 1.51 23-Jan-2009  pooka last-minute pasto in previous
 1.50 23-Jan-2009  pooka Add a compile-time option to use kmem/vmem/pools from the kernel
sources instead of homegrown allocators. Default to "on", even
though they appear to be a few percent slower at least on short
jobs (e.g. untar to tmpfs).
 1.49 04-Jan-2009  pooka Include libkern contents in librump.
 1.48 18-Dec-2008  pooka __KERNEL_RCSID
 1.47 16-Dec-2008  pooka Mark pages busy during VOP_PUTPAGES(). Deals with KASSERT in nfs write.
 1.46 16-Dec-2008  pooka Make rumpflushva flush only the atop info for a certain uvm object.
Better, but still not completely race-free (if two threads call
RUMP_VOP_PUTPAGES() directly for the same vm object).
 1.45 27-Nov-2008  pooka Move more vfs-related vm routines from rumpkern to rumpvfs.
 1.44 27-Nov-2008  pooka Remove the whole magic ubc window thingie. All file systems use
ubc_uiomove() now, so we can hook ourselves there.
 1.43 26-Nov-2008  pooka Add a few symbols required by nfsd
 1.42 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.41 15-Oct-2008  pooka branches: 1.41.2; 1.41.8;
Add support bits necessary for rumpnet functionality.
 1.40 10-Oct-2008  pooka * implement uvm_km_alloc/free_poolpage()
* add silly stubs for uvm_lwp_hold/rele()
 1.39 10-Oct-2008  pooka reorganize routines a bit better. no functional change
 1.38 30-Sep-2008  pooka Make sure proc0.p_vmspace qualifies as VMSPACE_IS_KERNEL_P().
 1.37 07-Aug-2008  pooka pg->flags &= PG_CLEAN --> &= ~PG_CLEAN;

Fixes at least writing to the fs for msdosfs.
 1.36 05-Aug-2008  pooka Honor PG_RELEASED when unbusying a page.

Fixes ufs file system full problem discovered by Simon Burge.
 1.35 04-Aug-2008  pooka Add support for using real kmem/vmem. Don't enable it by default,
though, since it a) is a lot of unnecessary indirection in rump
b) requires callouts which are so far unimplemented.
 1.34 29-Jul-2008  pooka Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly
 1.33 20-Jul-2008  pooka assert -> KASSERT
 1.32 05-Jun-2008  ad branches: 1.32.2; 1.32.4;
Make it build again.
 1.31 04-Jun-2008  ad Make it build.
 1.30 11-Mar-2008  pooka branches: 1.30.2; 1.30.4; 1.30.6;
Backup some fixes for recent breakage from local tree. Also some
other improvements such as exporting the real kernel namei and
using that in ukfs instead of the homegrown heap'o hacks namei.
"etcetc".
 1.29 27-Jan-2008  pooka branches: 1.29.2; 1.29.6;
honor pager locking protocol in uao_detach()
 1.28 27-Jan-2008  pooka Fix locking botches: take vm object lock before calling pager,
not inside the pager.
 1.27 03-Jan-2008  pooka Theoretically this is supposed to be interchangeable with real
kernel code. Use kmem_alloc/free instead of some wily homerolled
rump interfaces for memory allocation.
 1.26 02-Jan-2008  pooka fix vmlocking2 fallout:

* I heard a wild rumor that vp_interlock is a mutex these days (hi ad!)
* init new locks (hi ad)
* observe that with simple_locks only deadlocks would be caught while
releasing unlocked locks would go unnoticed. make locking work (hi pooka)
 1.25 02-Jan-2008  ad Merge vmlocking2 to head.
 1.24 01-Dec-2007  yamt branches: 1.24.2; 1.24.6;
constify pagerops.
 1.23 06-Nov-2007  pooka Fix locking issues with the anonymous pager too so that tmpfs can work.
 1.22 06-Nov-2007  pooka Sprinkle some more locking, especially to the vm. Due to some
additional fixes, it's now possible to run file systems with
spinlocks actually enabled. The genfs_putpages() locking is still
working only due to greater powers, but I'll eventually get around to
fixing it.
 1.21 04-Nov-2007  pooka branches: 1.21.2;
* sprinkle some locking into the vm code
* avoid extra insert+search+remove step in file systems using
ubc_uiomove() instead of standard uiomove()
 1.20 31-Oct-2007  pooka branches: 1.20.2;
Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads. It also makes rump file system behaviour better match
file system behaviour in the kernel.
 1.19 28-Oct-2007  pooka In uvm_estimatepageable() "estimate" pageable.
 1.18 10-Oct-2007  ad branches: 1.18.2;
Merge from vmlocking:

- Split vnode::v_flag into three fields, depending on field locking.
- simple_lock -> kmutex in a few places.
- Fix some simple locking problems.
 1.17 12-Sep-2007  pooka branches: 1.17.2;
don't allocate variable-sized arrays from the stack
 1.16 01-Sep-2007  pooka branches: 1.16.2;
Make bioops a pointer and point it to the softdeps struct in softdep
init. Decouples "options SOFTDEP" from the main kernel and ffs code.
 1.15 01-Sep-2007  pooka * add a very crude version of uvm_pageatop()
* add biodone/aiodone
 1.14 26-Aug-2007  pooka branches: 1.14.2;
few panicky functions
 1.13 20-Aug-2007  pooka branches: 1.13.2;
Hide NetBSD kernel headers completely from ukfs. This includes creating
accessors for:
* struct mount & VFS ops
* struct uio
* struct vnode
* struct vattr

and some namespace games for:
* namei flags
* VOPs
* enum vtype

Also, split rump services into two categories: library private and public
(rump_private.h and rump.h, respectively).

As a result, it is now possible to compile and use the NetBSD kernel
file systems on Linux (and probably other systems too with very
little work), although the makefiles need a bit of work to make it
a pleasureable experience.
 1.12 14-Aug-2007  pooka branches: 1.12.2;
Kill handrolled buffercache and use vfs_bio from the kernel. This is
mostly to get the flag jungle in sync with the kernel.
 1.11 13-Aug-2007  pooka Use supermarket variety vfs_vnops.c instead of homecooked routines
(that's actually a good thing here).
 1.10 11-Aug-2007  pooka * move rump_vopwrite_fault() into history - we now support the file
system faulting in pages if it does e.g. fragment reallocation
* get rid of rumpvm_findpage() and always use uvm_pagelookup()
* determine a vnode's cleanness by flagging it as being on the work
list if we "take" a write fault and removing it from the worklist
once pages are flushed. There is no work list here, but at least
there is symmetry with the kernel.
 1.9 09-Aug-2007  pooka Play catchup with ufs/ffs changes: compile subr_specificdata.c
and emulate kmem_foo() to support the prior.
 1.8 09-Aug-2007  pooka Fix it a bit & wait for the dust to settle. Also, enable UBC by default.

ffs in userspace on top of puffs/p2k/rump is now stable enough to
host a make -j4 kernel build (well, at least my kernel build ...
but, yes, I am currently running that kernel on my desktop)
 1.7 09-Aug-2007  pooka Add some stubs for lfs.
 1.6 07-Aug-2007  pooka remove the allocstorage param from makepage - not needed
 1.5 07-Aug-2007  pooka track dirty vm objects
 1.4 07-Aug-2007  pooka When doing "ubc faults", truncate offsets to page boundary to get
the last page also if it's accessed from the middle of the page.
 1.3 06-Aug-2007  pooka branches: 1.3.2;
Instead of going for a PAGE_SIZE nuke, do getpages() in a more
sniper style. Makes efs (& other file systems with bsize < PAGE_SIZE)
work better.
 1.2 06-Aug-2007  pooka implement uvm_vnp_zerorange()
 1.1 05-Aug-2007  pooka Introduce RUMPs - Runnable Userspace Meta-Programs

/sys/rump contains programs which run unmodified kernel code in an
emulated userspace environment. The kernel environment is provided
by librump. Currently supported are a number of file systems,
which by using puffs integrate seamlessly into the system and
provide a similar user experience to if the code was running as
part of the kernel. Potential future rumpification targets include
for example parts of the networking stack and some device drivers.

This work was supported by Google Summer of Code 2007.
 1.3.2.2 06-Aug-2007  pooka Instead of going for a PAGE_SIZE nuke, do getpages() in a more
sniper style. Makes efs (& other file systems with bsize < PAGE_SIZE)
work better.
 1.3.2.1 06-Aug-2007  pooka file vm.c was added on branch matt-mips64 on 2007-08-06 20:46:29 +0000
 1.12.2.3 03-Sep-2007  skrll Sync with HEAD.
 1.12.2.2 15-Aug-2007  skrll Sync with HEAD.
 1.12.2.1 14-Aug-2007  skrll file vm.c was added on branch nick-csl-alignment on 2007-08-15 13:50:43 +0000
 1.13.2.3 09-Oct-2007  ad Sync with head.
 1.13.2.2 20-Aug-2007  ad Sync with HEAD.
 1.13.2.1 20-Aug-2007  ad file vm.c was added on branch vmlocking on 2007-08-20 22:07:31 +0000
 1.14.2.4 23-Mar-2008  matt sync with HEAD
 1.14.2.3 09-Jan-2008  matt sync with HEAD
 1.14.2.2 08-Nov-2007  matt sync with -HEAD
 1.14.2.1 06-Nov-2007  matt sync with HEAD
 1.16.2.8 17-Mar-2008  yamt sync with head.
 1.16.2.7 04-Feb-2008  yamt sync with head.
 1.16.2.6 21-Jan-2008  yamt sync with head
 1.16.2.5 07-Dec-2007  yamt sync with head
 1.16.2.4 15-Nov-2007  yamt sync with head.
 1.16.2.3 27-Oct-2007  yamt sync with head.
 1.16.2.2 03-Sep-2007  yamt sync with head.
 1.16.2.1 01-Sep-2007  yamt file vm.c was added on branch yamt-lazymbuf on 2007-09-03 14:45:38 +0000
 1.17.2.1 14-Oct-2007  yamt sync with head.
 1.18.2.1 13-Nov-2007  bouyer Sync with HEAD
 1.20.2.6 03-Dec-2007  joerg Sync with HEAD.
 1.20.2.5 06-Nov-2007  joerg Sync with HEAD.
 1.20.2.4 04-Nov-2007  jmcneill Sync with HEAD.
 1.20.2.3 02-Nov-2007  joerg Remove the rest of the unintentional diff in sys/rump.
 1.20.2.2 31-Oct-2007  joerg Sync with HEAD.
 1.20.2.1 31-Oct-2007  joerg file vm.c was added on branch jmcneill-pm on 2007-10-31 23:14:18 +0000
 1.21.2.3 18-Feb-2008  mjf Sync with HEAD.
 1.21.2.2 08-Dec-2007  mjf Sync with HEAD.
 1.21.2.1 19-Nov-2007  mjf Sync with HEAD.
 1.24.6.2 08-Jan-2008  bouyer Sync with HEAD
 1.24.6.1 02-Jan-2008  bouyer Sync with HEAD
 1.24.2.1 28-Dec-2007  ad Make rump build.
 1.29.6.5 17-Jan-2009  mjf Sync with HEAD.
 1.29.6.4 05-Oct-2008  mjf Sync with HEAD.
 1.29.6.3 28-Sep-2008  mjf Sync with HEAD.
 1.29.6.2 05-Jun-2008  mjf Sync with HEAD.

Also fix build.
 1.29.6.1 03-Apr-2008  mjf Sync with HEAD.
 1.29.2.1 24-Mar-2008  keiichi sync with head.
 1.30.6.3 10-Oct-2008  skrll Sync with HEAD.
 1.30.6.2 18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.30.6.1 23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.30.4.6 09-Oct-2010  yamt sync with head
 1.30.4.5 11-Aug-2010  yamt sync with head.
 1.30.4.4 11-Mar-2010  yamt sync with head
 1.30.4.3 19-Aug-2009  yamt sync with head.
 1.30.4.2 20-Jun-2009  yamt sync with head
 1.30.4.1 04-May-2009  yamt sync with head.
 1.30.2.1 17-Jun-2008  yamt sync with head.
 1.32.4.2 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.32.4.1 19-Oct-2008  haad Sync with HEAD.
 1.32.2.2 31-Jul-2008  simonb Sync with head.
 1.32.2.1 21-Jul-2008  simonb Sync with head.
 1.41.8.3 19-Dec-2013  matt Adapt to new uvm_estimatepageable arguments
 1.41.8.2 10-Feb-2012  matt uvm_pageout_done doesn't return anything more (it's void).
 1.41.8.1 09-Feb-2012  matt Update uvm_pageout_done defintion.
 1.41.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.41.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.41.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.52.2.2 23-Jul-2009  jym Sync with HEAD.
 1.52.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.70.4.6 12-Jun-2011  rmind Sync RUMP's uvm_pagealloc_strat() and processpage() with branch changes.
 1.70.4.5 21-Apr-2011  rmind sync with head
 1.70.4.4 05-Mar-2011  rmind sync with head
 1.70.4.3 03-Jul-2010  rmind sync with head
 1.70.4.2 30-May-2010  rmind sync with head
 1.70.4.1 16-Mar-2010  rmind Change struct uvm_object::vmobjlock to be dynamically allocated with
mutex_obj_alloc(). It allows us to share the locks among UVM objects.
 1.70.2.5 06-Nov-2010  uebayasi Sync with HEAD.
 1.70.2.4 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.70.2.3 17-Aug-2010  uebayasi Sync with HEAD.
 1.70.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.70.2.1 29-Apr-2010  uebayasi Fix build of rump.
 1.106.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.107.2.3 05-Mar-2011  bouyer Sync with HEAD
 1.107.2.2 17-Feb-2011  bouyer Sync with HEAD
 1.107.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.114.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.120.6.5 02-Jun-2012  mrg sync to latest -current.
 1.120.6.4 05-Apr-2012  mrg sync to latest -current.
 1.120.6.3 06-Mar-2012  mrg sync to -current
 1.120.6.2 24-Feb-2012  mrg sync to -current.
 1.120.6.1 18-Feb-2012  mrg merge to -current.
 1.120.2.10 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.120.2.9 23-Jan-2013  yamt sync with head
 1.120.2.8 16-Jan-2013  yamt sync with (a bit old) head
 1.120.2.7 02-Nov-2012  yamt fix a merge botch
 1.120.2.6 30-Oct-2012  yamt sync with head
 1.120.2.5 17-Apr-2012  yamt sync with head
 1.120.2.4 25-Jan-2012  yamt uvm_loanabj: take an access pattern hint.
 1.120.2.3 14-Jan-2012  yamt implement a rump stub of uvm_loanobj
 1.120.2.2 10-Nov-2011  yamt remove uobj->memq
 1.120.2.1 02-Nov-2011  yamt page cache related changes

- maintain object pages in radix tree rather than rb tree.
- reduce unnecessary page scan in putpages. esp. when an object has a ton of
pages cached but only a few of them are dirty.
- reduce the number of pmap operations by tracking page dirtiness more
precisely in uvm layer.
- fix nfs commit range tracking.
- fix nfs write clustering. XXX hack
 1.122.2.2 03-Apr-2012  riz Pull up following revision(s) (requested by para in ticket #155):
sys/kern/subr_vmem.c: revision 1.73
sys/kern/subr_kmem.c: revision 1.43
sys/rump/librump/rumpkern/vm.c: revision 1.124
make accounting for vm_inuse sane
while here don't statically allocated for more caches then required
adjust rump for static pool_cache count
should have went in with subr_vmem 1.73
don't overallocated once we leave the caches
 1.122.2.1 25-Mar-2012  bouyer Pull up following revision(s) (requested by hannken in ticket #141):
tests/rump/rumpkern/t_vm.c: revision 1.3
sys/rump/librump/rumpkern/vm.c: revision 1.125
Don't take a mutex we already took 6 lines above.
Starting with Rev. 1.191 of kern/subr_pool.c a pool has to be inactive
for at least 10 seconds before it can be reclaimed.
Change the uvmwait test timeout from 10 to 30 seconds so it has a chance
to reclaim memory and succeed.
 1.130.2.5 03-Dec-2017  jdolecek update from HEAD
 1.130.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.130.2.3 23-Jun-2013  tls resync from head
 1.130.2.2 25-Feb-2013  tls resync with head
 1.130.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.144.4.1 18-May-2014  rmind sync with head
 1.152.2.1 10-Aug-2014  tls Rebase.
 1.159.4.6 28-Aug-2017  skrll Sync with HEAD
 1.159.4.5 05-Oct-2016  skrll Sync with HEAD
 1.159.4.4 19-Mar-2016  skrll Sync with HEAD
 1.159.4.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.159.4.2 06-Jun-2015  skrll Sync with HEAD
 1.159.4.1 06-Apr-2015  skrll Sync with HEAD
 1.159.2.1 31-Dec-2014  snj Pull up following revision(s) (requested by chs in ticket #363):
common/lib/libprop/prop_kern.c: revision 1.18
sys/arch/mac68k/dev/grf_compat.c: revision 1.27
sys/arch/x68k/dev/grf.c: revision 1.45
sys/external/bsd/drm/dist/bsd-core/drm_bufs.c: revision 1.12
sys/external/bsd/drm2/drm/drm_drv.c: revision 1.12
sys/external/bsd/drm2/drm/drm_vm.c: revision 1.6
sys/external/bsd/drm2/include/linux/mm.h: revision 1.4
sys/kern/vfs_vnops.c: revision 1.192 via patch
sys/rump/librump/rumpkern/vm.c: revision 1.160
sys/sys/file.h: revision 1.78 via patch
sys/uvm/uvm_device.c: revision 1.64
sys/uvm/uvm_device.h: revision 1.13
sys/uvm/uvm_extern.h: revision 1.192
sys/uvm/uvm_mmap.c: revision 1.150 via patch
add a new "fo_mmap" fileops method to allow use of arbitrary uvm_objects for
mappings of file objects. move vnode-specific details of mmap()ing a vnode
from uvm_mmap() to the new vnode-specific vn_mmap(). add new uvm_mmap_dev()
and uvm_mmap_anon() convenience functions for mapping character devices
and anonymous memory, and replace all other calls to uvm_mmap() with those.
use the new fileop in drm2 so that libdrm can use mmap() to map things
like on other platforms (instead of the ioctl that we have used so far).
 1.169.2.1 26-Jul-2016  pgoyette Sync with HEAD
 1.170.6.2 19-May-2017  pgoyette Resolve conflicts from previous merge (all resulting from $NetBSD
keywork expansion)
 1.170.6.1 11-May-2017  pgoyette Sync with HEAD
 1.173.14.1 06-Jul-2021  martin Pull up following revision(s) - all via patch -
(requested by riastradh in ticket #1317):

sys/uvm/uvm_page.c: revision 1.248
sys/uvm/uvm_anon.c: revision 1.80
sys/rump/librump/rumpvfs/vm_vfs.c: revision 1.40
sys/rump/librump/rumpvfs/vm_vfs.c: revision 1.41
sys/rump/librump/rumpkern/vm.c: revision 1.191
sys/uvm/uvm_pager.c: revision 1.130
external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c: revision 1.71
tests/rump/rumpkern/t_vm.c: revision 1.5
tests/rump/rumpkern/t_vm.c: revision 1.6
sys/rump/librump/rumpvfs/vm_vfs.c: revision 1.39

Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to
uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to
handle this flag separately. Split out the pages part of uvm_aio_aiodone()
into uvm_aio_aiodone_pages() in rump just like in the real kernel.

In ZFS functions that can fail to copy data between the ARC and VM pages,
use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can
handle these "I/O" errors. Fixes PR 55702.

fix an incorrect assertion in the previous commit.

Handle PG_PAGEOUT in uvm_anon_release() too.

Commit the ZFS file that I forgot in this previous commit:

Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to
uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to
handle this flag separately. Split out the pages part of uvm_aio_aiodone()
into uvm_aio_aiodone_pages() in rump just like in the real kernel.

In ZFS functions that can fail to copy data between the ARC and VM pages,
use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can
handle these "I/O" errors. Fixes PR 55702.
update the rump copy of uvm_page_unbusy() to match the real version,
in particular handle PG_PAGEOUT. fixes a few atf tests.
the busypage test is buggy, expect it to fail.

make rump's uvm_aio_aiodone_pages() look more like the kernel version.
fixes some more rumpy assertions.

for the busypage test, replace atf_tc_expect_fail() with atf_tc_skip()
because atf apparently has no way to expect a test program to crash.
fixes PR 55945.
 1.173.10.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.182.2.2 29-Feb-2020  ad Sync with head.
 1.182.2.1 17-Jan-2020  ad Sync with head.
 1.190.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.4 22-Apr-2015  pooka Apparently new source files need to be added to each Makefile.inc
individually. Who comes up with this kind of crappy build infra?
 1.3 12-Feb-2014  pooka branches: 1.3.6;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.2 15-Oct-2009  pooka branches: 1.2.12; 1.2.22; 1.2.26;
include rumpcpu_generic
 1.1 06-Jan-2009  pooka branches: 1.1.2; 1.1.4; 1.1.8;
Add md crud to allow libkern softfloat code to build.
And while here, make alpha use the real elf relocation code.
 1.1.8.3 11-Mar-2010  yamt sync with head
 1.1.8.2 04-May-2009  yamt sync with head.
 1.1.8.1 06-Jan-2009  yamt file Makefile.inc was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.1.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.4.1 06-Jan-2009  skrll file Makefile.inc was added on branch nick-hppapmap on 2009-01-19 13:20:26 +0000
 1.1.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.1 06-Jan-2009  mjf file Makefile.inc was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.2.26.1 18-May-2014  rmind sync with head
 1.2.22.2 03-Dec-2017  jdolecek update from HEAD
 1.2.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.6.1 06-Jun-2015  skrll Sync with HEAD
 1.2 18-Mar-2009  cegger branches: 1.2.2;
Ansify function definitions w/o arguments. Generated with sed.
 1.1 06-Jan-2009  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Add md crud to allow libkern softfloat code to build.
And while here, make alpha use the real elf relocation code.
 1.1.6.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.1.4.3 28-Apr-2009  skrll Sync with HEAD.
 1.1.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.4.1 06-Jan-2009  skrll file rumpcrud.c was added on branch nick-hppapmap on 2009-01-19 13:20:26 +0000
 1.1.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.1 06-Jan-2009  mjf file rumpcrud.c was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.2.2.2 04-May-2009  yamt sync with head.
 1.2.2.1 18-Mar-2009  yamt file rumpcrud.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.5 22-Apr-2015  pooka Apparently new source files need to be added to each Makefile.inc
individually. Who comes up with this kind of crappy build infra?
 1.4 17-Jun-2014  alnsn branches: 1.4.4; 1.4.6;
Antti objected to including rumpuser_sync_icache. Exclude it from the build.
 1.3 17-Jun-2014  alnsn Implement rumpuser_sync_icache hypercall.
 1.2 12-Feb-2014  pooka branches: 1.2.2; 1.2.4;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1 08-Aug-2013  matt branches: 1.1.2;
Build kobj_machdep.c
 1.1.2.3 18-May-2014  rmind sync with head
 1.1.2.2 28-Aug-2013  rmind sync with head
 1.1.2.1 08-Aug-2013  rmind file Makefile.inc was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 12-Feb-2014  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.2.1 10-Aug-2014  tls Rebase.
 1.4.6.1 06-Jun-2015  skrll Sync with HEAD
 1.4.4.3 03-Dec-2017  jdolecek update from HEAD
 1.4.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.4.1 17-Jun-2014  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1 17-Jun-2014  alnsn branches: 1.1.2; 1.1.6;
Implement rumpuser_sync_icache hypercall.
 1.1.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 17-Jun-2014  tls file cpufunc.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.2.2 10-Aug-2014  tls Rebase.
 1.1.2.1 17-Jun-2014  tls file cpufunc.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.3 15-Nov-2018  riastradh Make the direct-map API always available, but fail if KASAN or rump.

(Only for architectures that support it at all; on others,
__HAVE_MM_MD_DIRECT_MAPPED_PHYS/IO are still undefined and the
functions unimplemented.)

This gives modules like zfs an opportunity to use it.

While here, fix the one caller of mm_md_direct_mapped_phys that
ignored the return value (and make sure to call pmap_kremove/update
before uvm_km_free).
 1.2 22-Apr-2015  pooka branches: 1.2.16; 1.2.18;
Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.12.1 06-Jun-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file Makefile.inc was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.2.18.1 10-Jun-2019  christos Sync with HEAD
 1.2.16.1 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.2 26-Jan-2016  pooka branches: 1.2.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 22-Apr-2015  pooka branches: 1.1.2;
Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.
 1.1.2.3 19-Mar-2016  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 22-Apr-2015  skrll file rump_generic_abi.c was added on branch nick-nhusb on 2015-06-06 14:40:29 +0000
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 26-Jan-2016  jdolecek file rump_generic_abi.c was added on branch tls-maxphys on 2017-12-03 11:39:16 +0000
 1.3 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 22-Apr-2015  pooka Apparently not all ports define struct clockframe in cpu.h, so we cannot
provide our definition that way. Instead, generate the struct clockframe
passed to hardclock() in MD code.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.12.2 19-Mar-2016  skrll Sync with HEAD
 1.1.12.1 06-Jun-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_generic_cpu.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_generic_cpu.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_generic_cpu.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.3 27-Jan-2019  pgoyette branches: 1.3.4;
Merge the [pgoyette-compat] branch
 1.2 12-Dec-2018  alnsn Add missing RCSIDs.
 1.1 15-Nov-2018  riastradh branches: 1.1.2;
Make the direct-map API always available, but fail if KASAN or rump.

(Only for architectures that support it at all; on others,
__HAVE_MM_MD_DIRECT_MAPPED_PHYS/IO are still undefined and the
functions unimplemented.)

This gives modules like zfs an opportunity to use it.

While here, fix the one caller of mm_md_direct_mapped_phys that
ignored the return value (and make sure to call pmap_kremove/update
before uvm_km_free).
 1.1.2.3 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.2.2 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.1.2.1 15-Nov-2018  pgoyette file rump_generic_directmap.c was added on branch pgoyette-compat on 2018-11-26 01:52:51 +0000
 1.3.4.2 10-Jun-2019  christos Sync with HEAD
 1.3.4.1 27-Jan-2019  christos file rump_generic_directmap.c was added on branch phil-wifi on 2019-06-10 22:09:54 +0000
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_generic_kobj.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_generic_kobj.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_generic_kobj.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.7 21-Aug-2022  riastradh rump: Define pmap_resident_count, pmap_wired_count conditionally.

These definitions will not be used by anything yet because on every
architecture except x86 as of yeterday, pmap_resident_count and
pmap_wired_count are defined as macros anyway. But if more struct
pmaps are made private these definitions will get used.
 1.6 21-Aug-2022  mlelstv Add stubs for pmap_resident_count, pmap_wired_count.
 1.5 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 17-Apr-2015  pooka Give the kernel/local pmaps actual storage.

That way friendly neighborhood macros won't go scribbling
in the wrong places.
 1.3 03-Apr-2015  pooka Use RUMP_PMAP_KERNEL and RUMP_PMAP_LOCAL to denote
kernel and local client pmaps, respectively.
 1.2 12-Feb-2014  pooka branches: 1.2.4; 1.2.6; 1.2.10; 1.2.12;
Minor comment massage, zero functionality massage.
 1.1 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.2.12.3 19-Mar-2016  skrll Sync with HEAD
 1.2.12.2 06-Jun-2015  skrll Sync with HEAD
 1.2.12.1 06-Apr-2015  skrll Sync with HEAD
 1.2.10.3 03-Dec-2017  jdolecek update from HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 12-Feb-2014  tls file rump_generic_pmap.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 12-Feb-2014  yamt file rump_generic_pmap.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 12-Feb-2014  rmind file rump_generic_pmap.c was added on branch rmind-smpnet on 2014-05-18 17:46:18 +0000
 1.7 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.6 16-Jun-2010  pooka branches: 1.6.8; 1.6.18; 1.6.22;
Reinstate the blanket pmap.h for archs which do not conform to the
kernel ABI (i.e. not i386 or amd64). Due to the "half function,
half macro, all noodles" nature of pmap.h, it's too entangling and
too brittle to keep up with an ifdeffy MI implementation.
 1.5 31-May-2010  pooka The x86 kernel ABI depends on __cpu_simple_lock stuff being present.
Since they are practically never used (only when prehistoric code
uses simple_lock()), their efficiency doesn't matter that much and
we can simply adapt the versions from x86 lock.h.
 1.4 11-May-2010  pooka add __HAVE_CPU_COUNTER stubs where possible (i.e. where the arch
doesn't think inlines are the second compiling)
 1.3 01-Jan-2009  pooka branches: 1.3.2; 1.3.4; 1.3.8; 1.3.10; 1.3.12;
Define MODULAR for rump core components. This enables module
loading via the kernel module framework (instead of dlopen()).
For now it only works on amd64 and i386, but for the rest it should
just be a matter of including the relevant kobj_machdep.c modules
from the kernel sources.
 1.2 01-Jan-2009  pooka Rename i386 and amd64 {cpu,spl}.c to rump{cpu,spl}.c to avoid
name collisions with other source files in the kernel tree.
 1.1 29-Dec-2008  pooka Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.
 1.3.12.2 03-Jul-2010  rmind sync with head
 1.3.12.1 30-May-2010  rmind sync with head
 1.3.10.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.3.8.3 11-Aug-2010  yamt sync with head.
 1.3.8.2 04-May-2009  yamt sync with head.
 1.3.8.1 01-Jan-2009  yamt file Makefile.inc was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.3.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.3.4.1 01-Jan-2009  skrll file Makefile.inc was added on branch nick-hppapmap on 2009-01-19 13:20:26 +0000
 1.3.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.3.2.1 01-Jan-2009  mjf file Makefile.inc was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.6.22.1 18-May-2014  rmind sync with head
 1.6.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2 01-Jan-2009  pooka Rename i386 and amd64 {cpu,spl}.c to rump{cpu,spl}.c to avoid
name collisions with other source files in the kernel tree.
 1.1 29-Dec-2008  pooka Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.
 1.2 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1 11-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24; 1.1.28;
add __HAVE_CPU_COUNTER stubs where possible (i.e. where the arch
doesn't think inlines are the second compiling)
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 11-May-2010  uebayasi file cpu_counter.c was added on branch uebayasi-xip on 2010-08-17 06:48:02 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 11-May-2010  yamt file cpu_counter.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:07 +0000
 1.1.2.2 30-May-2010  rmind sync with head
 1.1.2.1 11-May-2010  rmind file cpu_counter.c was added on branch rmind-uvmplock on 2010-05-30 05:18:06 +0000
 1.4 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.3 22-Jul-2012  joerg branches: 1.3.2; 1.3.4;
Needs pmap_write_protect to finish DBG=-g build with clang.
 1.2 17-Jun-2010  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.14;
Give the kernel pmap a container in case some tries to access it
via some pmap.h macro.
 1.1 16-Jun-2010  pooka Reinstate the blanket pmap.h for archs which do not conform to the
kernel ABI (i.e. not i386 or amd64). Due to the "half function,
half macro, all noodles" nature of pmap.h, it's too entangling and
too brittle to keep up with an ifdeffy MI implementation.
 1.2.14.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.14.1 30-Oct-2012  yamt sync with head
 1.2.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.2.6.1 17-Jun-2010  uebayasi file pmap_x86.c was added on branch uebayasi-xip on 2010-08-17 06:48:02 +0000
 1.2.4.2 11-Aug-2010  yamt sync with head.
 1.2.4.1 17-Jun-2010  yamt file pmap_x86.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:07 +0000
 1.2.2.2 03-Jul-2010  rmind sync with head
 1.2.2.1 17-Jun-2010  rmind file pmap_x86.c was added on branch rmind-uvmplock on 2010-07-03 01:20:03 +0000
 1.3.4.1 18-May-2014  rmind sync with head
 1.3.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.11 02-May-2013  pooka branches: 1.11.4;
Inform the rump kernel hypervisor of valid thread contexts so
that the implementation can allocate and release storage for them
in an optimal fashion, if necessary.
 1.10 19-Feb-2013  martin Stopgap fix to make rump cooperate with pserialize, may be revisited later.
Patch from pooka, ok: rmind. No related regressions in a complete atf test
run (which works again with this, even on non x86 SMP machines).
 1.9 28-Apr-2010  pooka branches: 1.9.8; 1.9.18;
set first attached cpu as primary
 1.8 27-Apr-2010  pooka Fix multiple virtual cpu support.

... or at least on x86. CPU_INFO_FOREACH() still isn't MI, and I
don't want to support 2^n different versions.
 1.7 15-Oct-2009  pooka branches: 1.7.2; 1.7.4;
Give lwp usage some much-needed love: stop treating lwp0 as the
all-sink and make sure each separate thread in rump has its own
lwp. Happy-go-lucky callers will get scheduled a temporary lwp
on entry, while true lwp connoisseurs may request a stable lwp
for their purposes. Some more love may be required later down the
road, but for now different threads will stepping on each others
toes.
 1.6 15-Oct-2009  pooka Add initial work on a rump virtual cpu scheduler. This is necessary
for kernel code which has been written to avoid MP contention by
using cpu-local storage (most prominently, select and pool_cache).

Instead of always assuming rump_cpu, the scheduler must now be run
(and unrun) on all entry points into rump. Likewise, rumpuser
unruns and re-runs the scheduler around each potentially blocking
operation. As an optimization, I modified some locking primitives
to try to get the lock without blocking before releasing the cpu.

Also, ltsleep was modified to assume that it is never called without
the biglock held and made to use the biglock as the sleep interlock.
Otherwise there is just too much drama with deadlocks. If some
kernel code wants to call ltsleep without the biglock, then, *snif*,
it's no longer supported and rump and should be modified to support
newstyle locks anyway.
 1.5 14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.4 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.3 18-Mar-2009  cegger branches: 1.3.2;
Ansify function definitions w/o arguments. Generated with sed.
 1.2 01-Jan-2009  pooka branches: 1.2.2; 1.2.4; 1.2.6;
Define MODULAR for rump core components. This enables module
loading via the kernel module framework (instead of dlopen()).
For now it only works on amd64 and i386, but for the rest it should
just be a matter of including the relevant kobj_machdep.c modules
from the kernel sources.
 1.1 01-Jan-2009  pooka Rename i386 and amd64 {cpu,spl}.c to rump{cpu,spl}.c to avoid
name collisions with other source files in the kernel tree.
 1.2.6.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.2.4.3 28-Apr-2009  skrll Sync with HEAD.
 1.2.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.2.4.1 01-Jan-2009  skrll file rumpcpu.c was added on branch nick-hppapmap on 2009-01-19 13:20:26 +0000
 1.2.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.2.1 01-Jan-2009  mjf file rumpcpu.c was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.3.2.4 11-Aug-2010  yamt sync with head.
 1.3.2.3 11-Mar-2010  yamt sync with head
 1.3.2.2 04-May-2009  yamt sync with head.
 1.3.2.1 18-Mar-2009  yamt file rumpcpu.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.7.4.1 30-May-2010  rmind sync with head
 1.7.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.9.18.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.18.2 23-Jun-2013  tls resync from head
 1.9.18.1 25-Feb-2013  tls resync with head
 1.9.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.11.4.1 18-May-2014  rmind sync with head
 1.3 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.2 06-Feb-2009  pooka branches: 1.2.4; 1.2.16; 1.2.26; 1.2.30;
Rip out the rwlock spl emulation code. It never did anything useful
except keep my feet warm by consuming an insane amount of cpu
cycles -- in rump our current "cpu" context is never interrupted
& we have MULTIPROCESSOR.

(itch i'm scratching: it made the networking stack 10-20% slower.
this is one of the places where fast code actually matters)
 1.1 01-Jan-2009  pooka branches: 1.1.2; 1.1.4;
Rename i386 and amd64 {cpu,spl}.c to rump{cpu,spl}.c to avoid
name collisions with other source files in the kernel tree.
 1.1.4.3 03-Mar-2009  skrll Sync with HEAD.
 1.1.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.4.1 01-Jan-2009  skrll file rumpspl.c was added on branch nick-hppapmap on 2009-01-19 13:20:26 +0000
 1.1.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.1 01-Jan-2009  mjf file rumpspl.c was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.2.30.1 18-May-2014  rmind sync with head
 1.2.26.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.16.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.2 04-May-2009  yamt sync with head.
 1.2.4.1 06-Feb-2009  yamt file rumpspl.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.3 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.2 22-Jan-2013  christos branches: 1.2.2;
use the definitions from lock.h
 1.1 31-May-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24;
The x86 kernel ABI depends on __cpu_simple_lock stuff being present.
Since they are practically never used (only when prehistoric code
uses simple_lock()), their efficiency doesn't matter that much and
we can simply adapt the versions from x86 lock.h.
 1.1.24.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.24.1 25-Feb-2013  tls resync with head
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.1 31-May-2010  uebayasi file spinlock.c was added on branch uebayasi-xip on 2010-08-17 06:48:02 +0000
 1.1.4.2 11-Aug-2010  yamt sync with head.
 1.1.4.1 31-May-2010  yamt file spinlock.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:07 +0000
 1.1.2.2 03-Jul-2010  rmind sync with head
 1.1.2.1 31-May-2010  rmind file spinlock.c was added on branch rmind-uvmplock on 2010-07-03 01:20:03 +0000
 1.2.2.1 18-May-2014  rmind sync with head
 1.2 01-Jan-2009  pooka Rename i386 and amd64 {cpu,spl}.c to rump{cpu,spl}.c to avoid
name collisions with other source files in the kernel tree.
 1.1 29-Dec-2008  pooka Switch i386 away from rump/include/machine. This means that rump
on i386 now uses the native kernel ABI. This in turn means that
rump modules and kernel modules are binary equivalent and can be
used interchangeably.
 1.4 25-Apr-2021  christos mipsn64* is native 64
 1.3 22-Apr-2015  pooka Apparently new source files need to be added to each Makefile.inc
individually. Who comes up with this kind of crappy build infra?
 1.2 12-Feb-2014  pooka branches: 1.2.6;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1 14-Dec-2009  matt branches: 1.1.4; 1.1.14; 1.1.24; 1.1.28;
Make librump play with mips nicely. Define ARCH_ELFSIZE for mips to be 32.
This works for N64 kernels because objcopy them to be 32bit to the bootloaders
can handle them.
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.2 03-Dec-2017  jdolecek update from HEAD
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 11-Mar-2010  yamt sync with head
 1.1.4.1 14-Dec-2009  yamt file Makefile.inc was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.2.6.1 06-Jun-2015  skrll Sync with HEAD
 1.6 22-Apr-2015  pooka Apparently new source files need to be added to each Makefile.inc
individually. Who comes up with this kind of crappy build infra?
 1.5 07-Mar-2014  matt branches: 1.5.6;
Be a little more careful checking MLIBDIR
 1.4 07-Mar-2014  matt Use ARCH_ELFSIZE=32 is MLIBDIR == "powerpc"
 1.3 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.2 24-Nov-2012  pgoyette branches: 1.2.2;
File is common between pp6 and ppc64 ports, so define ARCH_ELFSIZE
accordingly.

From christos@, resolves the latest build break
 1.1 03-Jul-2011  mrg branches: 1.1.2; 1.1.12;
define ARCH_ELFSIZE=32 and add kobj_stubs.c rumpcpu_generic.c.
 1.1.12.3 03-Dec-2017  jdolecek update from HEAD
 1.1.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.12.1 25-Feb-2013  tls resync with head
 1.1.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.1 16-Jan-2013  yamt sync with (a bit old) head
 1.2.2.1 18-May-2014  rmind sync with head
 1.5.6.1 06-Jun-2015  skrll Sync with HEAD
 1.2 22-Apr-2015  pooka Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.12.1 06-Jun-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file Makefile.inc was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2 26-Jan-2016  pooka branches: 1.2.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 22-Apr-2015  pooka branches: 1.1.2;
Define rump_nativeabi_p() under arch, where one would logically expect
it to be defined.
 1.1.2.3 19-Mar-2016  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 22-Apr-2015  skrll file rump_x86_abi.c was added on branch nick-nhusb on 2015-06-06 14:40:29 +0000
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 26-Jan-2016  jdolecek file rump_x86_abi.c was added on branch tls-maxphys on 2017-12-03 11:39:16 +0000
 1.5 21-Aug-2022  riastradh rump/x86: Need x86/cpufunc.h for declaration of wbinvd.
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 22-Apr-2015  pooka Apparently not all ports define struct clockframe in cpu.h, so we cannot
provide our definition that way. Instead, generate the struct clockframe
passed to hardclock() in MD code.
 1.2 15-Mar-2014  pooka branches: 1.2.4; 1.2.6; 1.2.10; 1.2.12;
Allow compile-time optimizations to curlwp. This can have a pretty
staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
 1.1 12-Feb-2014  pooka Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.2.12.2 19-Mar-2016  skrll Sync with HEAD
 1.2.12.1 06-Jun-2015  skrll Sync with HEAD
 1.2.10.3 03-Dec-2017  jdolecek update from HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 15-Mar-2014  tls file rump_x86_cpu.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 15-Mar-2014  yamt file rump_x86_cpu.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.2.4.2 18-May-2014  rmind sync with head
 1.2.4.1 15-Mar-2014  rmind file rump_x86_cpu.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2 15-Jun-2020  msaitoh Serialize rdtsc using with lfence, mfence or cpuid to read TSC more precisely.

x86/x86/tsc.c rev. 1.67 reduced cache problem and got big improvement, but it
still has room. I measured the effect of lfence, mfence, cpuid and rdtscp.
The impact to TSC skew and/or drift is:

AMD: mfence > rdtscp > cpuid > lfence-serialize > lfence = nomodify
Intel: lfence > rdtscp > cpuid > nomodify

So, mfence is the best on AMD and lfence is the best on Intel. If it has no
SSE2, we can use cpuid.

NOTE:
- An AMD's document says DE_CFG_LFENCE_SERIALIZE bit can be used for
serializing, but it's not so good.
- On Intel i386(not amd64), it seems the improvement is very little.
- rdtscp instruct can be used as serializing instruction + rdtsc, but
it's not good as [lm]fence. Both Intel and AMD's document say that
the latency of rdtscp is bigger than rdtsc, so I suspect the difference
of the result comes from it.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_x86_cpu_counter.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_x86_cpu_counter.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_x86_cpu_counter.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.5 21-Aug-2022  riastradh rump/x86: Add stubs for pmap_resident_count, pmap_wired_count.

These are no longer static inlines, now that struct pmap is private.
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 17-Apr-2015  pooka Give the kernel/local pmaps actual storage.

That way friendly neighborhood macros won't go scribbling
in the wrong places.
 1.2 03-Apr-2015  pooka Use RUMP_PMAP_KERNEL and RUMP_PMAP_LOCAL to denote
kernel and local client pmaps, respectively.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.12.3 19-Mar-2016  skrll Sync with HEAD
 1.1.12.2 06-Jun-2015  skrll Sync with HEAD
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_x86_pmap.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_x86_pmap.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_x86_pmap.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_x86_spinlock.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_x86_spinlock.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_x86_spinlock.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 12-Feb-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 12-Feb-2014  tls file rump_x86_spl.c was added on branch tls-maxphys on 2014-08-20 00:04:41 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 12-Feb-2014  yamt file rump_x86_spl.c was added on branch yamt-pagecache on 2014-05-22 11:41:15 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 12-Feb-2014  rmind file rump_x86_spl.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.9 15-Nov-2018  riastradh Make the direct-map API always available, but fail if KASAN or rump.

(Only for architectures that support it at all; on others,
__HAVE_MM_MD_DIRECT_MAPPED_PHYS/IO are still undefined and the
functions unimplemented.)

This gives modules like zfs an opportunity to use it.

While here, fix the one caller of mm_md_direct_mapped_phys that
ignored the return value (and make sure to call pmap_kremove/update
before uvm_km_free).
 1.8 12-Feb-2014  pooka branches: 1.8.28; 1.8.30;
Rototill a bit, and attempt to disguise it as non-gratuitous.

Add arch/generic and move non-x86 files from rumpkern/ there. Also,
move files from arch/i386 to arch/x86, and make both i386 and x86_64
use those.

This clarifies the situation with what is MD vs. MI code.

renames:
rumpcpu_generic,kobj_stubs,pmap_stubs => arch/generic/rump_generic_$x
arch/i386/* => arch/x86/rump_x86_$x

(for those who forget, x86 requires MD code because rump kernels
use the same ABI as kernel modules)
 1.7 16-Jun-2010  pooka branches: 1.7.8; 1.7.18; 1.7.22;
Reinstate the blanket pmap.h for archs which do not conform to the
kernel ABI (i.e. not i386 or amd64). Due to the "half function,
half macro, all noodles" nature of pmap.h, it's too entangling and
too brittle to keep up with an ifdeffy MI implementation.
 1.6 31-May-2010  pooka The x86 kernel ABI depends on __cpu_simple_lock stuff being present.
Since they are practically never used (only when prehistoric code
uses simple_lock()), their efficiency doesn't matter that much and
we can simply adapt the versions from x86 lock.h.
 1.5 11-May-2010  pooka add __HAVE_CPU_COUNTER stubs where possible (i.e. where the arch
doesn't think inlines are the second compiling)
 1.4 01-Jan-2009  pooka branches: 1.4.2; 1.4.4; 1.4.8; 1.4.10; 1.4.12;
add missing "arch/" as noted by a few people
 1.3 01-Jan-2009  pooka Define MODULAR for rump core components. This enables module
loading via the kernel module framework (instead of dlopen()).
For now it only works on amd64 and i386, but for the rest it should
just be a matter of including the relevant kobj_machdep.c modules
from the kernel sources.
 1.2 01-Jan-2009  pooka Rename i386 and amd64 {cpu,spl}.c to rump{cpu,spl}.c to avoid
name collisions with other source files in the kernel tree.
 1.1 30-Dec-2008  pooka Switch amd64 rumps to the kernel ABI.
 1.4.12.2 03-Jul-2010  rmind sync with head
 1.4.12.1 30-May-2010  rmind sync with head
 1.4.10.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.4.8.3 11-Aug-2010  yamt sync with head.
 1.4.8.2 04-May-2009  yamt sync with head.
 1.4.8.1 01-Jan-2009  yamt file Makefile.inc was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.4.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.4.4.1 01-Jan-2009  skrll file Makefile.inc was added on branch nick-hppapmap on 2009-01-19 13:20:26 +0000
 1.4.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.4.2.1 01-Jan-2009  mjf file Makefile.inc was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
 1.7.22.1 18-May-2014  rmind sync with head
 1.7.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.30.1 10-Jun-2019  christos Sync with HEAD
 1.8.28.1 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.1 15-Oct-2008  pooka branches: 1.1.2; 1.1.10; 1.1.16;
Add the basic rump networking library, which provides e.g. sockets
and mbufs. This is required by all network-using rump applications.
 1.1.16.2 04-May-2009  yamt sync with head.
 1.1.16.1 15-Oct-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.1.10.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.10.1 15-Oct-2008  mjf file Makefile was added on branch mjf-devfs2 on 2009-01-17 13:29:37 +0000
 1.1.2.2 19-Oct-2008  haad Sync with HEAD.
 1.1.2.1 15-Oct-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.25 03-Sep-2022  mlelstv netisr.c is gone.
 1.24 11-Oct-2021  knakahara Make pktq_rps_hash() pluggable for each interface type. Reviewed by gdt@n.o, thorpej@n.o, and riastradh@n.o, thanks.
 1.23 15-Nov-2018  maxv Merge uipc_mbuf2.c into uipc_mbuf.c. Reorder the latter a little to gather
similar functions. No functional change.
 1.22 14-Apr-2017  ozaki-r branches: 1.22.10; 1.22.12;
Rumpify netipsec

Note that we should modularize netipsec and reduce reverse symbol references
(referencing symbols of netipsec from net, netinet and netinet6) though,
the task needs lots of code changes. Prior to doing so, rumpifying it and
having ATF tests should be useful.
 1.21 02-Feb-2017  ozaki-r Defer some pr_input to workqueue

pr_input is currently called in softint. Some pr_input such as ICMP, ICMPv6
and CARP can add/delete/update IP addresses and routing table entries. For
example, icmp6_redirect_input updates an a routing table entry and
nd6_ra_input may delete an IP address.

Basically such operations shouldn't be done in softint. That aside, we have
a reason to avoid the situation; psz/psref waits cannot be used in softint,
however they are required to work in such pr_input in the MP-safe world.

The change implements the workqueue pr_input framework called wqinput which
provides a means to defer pr_input of a protocol to workqueue easily.
Currently icmp_input, icmp6_input, carp_proto_input and carp6_proto_input
are deferred to workqueue by the framework.

Proposed and discussed on tech-kern and tech-net
 1.20 17-Jan-2017  ozaki-r Fix build (undefined reference to `rumpns_pfil_init' on usr.sbin/puffs/rump_nfs)
 1.19 19-Oct-2015  pooka branches: 1.19.2; 1.19.4;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.18 24-Aug-2015  pooka remove librump/rumpnet/opt, consolidate in rump/include/opt
 1.17 03-Dec-2014  christos add printers.
 1.16 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.15 05-Jun-2014  rmind branches: 1.15.4;
- Implement pktqueue interface for lockless IP input queue.
- Replace ipintrq and ip6intrq with the pktqueue mechanism.
- Eliminate kernel-lock from ipintr() and ip6intr().
- Some preparation work to push softnet_lock out of ipintr().

Discussed on tech-net.
 1.14 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 7:

Build component constructors which establish syscalls at boottime.
 1.13 15-Mar-2013  pooka branches: 1.13.6; 1.13.10;
Allow Makefile.rump to append to SRCS.
 1.12 31-Mar-2011  dyoung branches: 1.12.4; 1.12.14;
Hide the radix-trie implementation of the forwarding table so that we
will have an easier time replacing it with something different, even if
it is a second radix-trie implementation.

sys/net/route.c and sys/net/rtsock.c no longer operate directly on
radix_nodes or radix_node_heads.

Hopefully this will reduce the temptation to implement multipath or
source-based routing using grotty hacks to the grotty old radix-trie
code, too. :-)
 1.11 01-Feb-2011  matt Add a new AF/PF_ROUTE which is 64-bit clean which makes the routing socket
interface (and its associated sysctls) act identically for both 32 and 64 bit
programs. The old unclean one remains for backward compatibility.
 1.10 19-Jan-2010  pooka branches: 1.10.4; 1.10.6; 1.10.8;
Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client. This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached. However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff. ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
 1.9 16-Oct-2009  pooka We have real pollsuck() now, so remove this, ahem, less-than-perfect one.
(XXX: only thing in the kernel using pollsuck is netsmb)
 1.8 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.7 06-Sep-2009  pooka add a very simple version of pollsock()
XXX: it seems to exist purely for the pleasure of netsmb??
 1.6 10-Jun-2009  pooka MAXUSERS comes from Makefile.rump
 1.5 10-Jun-2009  pooka libkern is fully included in rumpkern, no need for cherry-picking
modules elsewhere.
 1.4 23-Jan-2009  pooka branches: 1.4.2; 1.4.4;
include rtsock_50.c
 1.3 25-Nov-2008  pooka branches: 1.3.4;
fix comment (no functional change)
 1.2 25-Nov-2008  pooka Heave-ho radix.c from librumpnet_net to librumpnet.
 1.1 15-Oct-2008  pooka branches: 1.1.2; 1.1.4;
Add the basic rump networking library, which provides e.g. sockets
and mbufs. This is required by all network-using rump applications.
 1.1.4.2 03-Mar-2009  skrll Sync with HEAD.
 1.1.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.2.3 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.1.2.2 19-Oct-2008  haad Sync with HEAD.
 1.1.2.1 15-Oct-2008  haad file Makefile.rumpnet was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.3.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.3.4.1 25-Nov-2008  mjf file Makefile.rumpnet was added on branch mjf-devfs2 on 2009-01-17 13:29:37 +0000
 1.4.4.5 11-Mar-2010  yamt sync with head
 1.4.4.4 16-Sep-2009  yamt sync with head
 1.4.4.3 20-Jun-2009  yamt sync with head
 1.4.4.2 04-May-2009  yamt sync with head.
 1.4.4.1 23-Jan-2009  yamt file Makefile.rumpnet was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.4.2.1 23-Jul-2009  jym Sync with HEAD.
 1.10.8.1 08-Feb-2011  bouyer Sync with HEAD
 1.10.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.10.4.2 21-Apr-2011  rmind sync with head
 1.10.4.1 05-Mar-2011  rmind sync with head
 1.12.14.3 03-Dec-2017  jdolecek update from HEAD
 1.12.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12.14.1 23-Jun-2013  tls resync from head
 1.12.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.10.1 10-Aug-2014  tls Rebase.
 1.13.6.1 18-May-2014  rmind sync with head
 1.15.4.5 28-Aug-2017  skrll Sync with HEAD
 1.15.4.4 05-Feb-2017  skrll Sync with HEAD
 1.15.4.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.15.4.2 22-Sep-2015  skrll Sync with HEAD
 1.15.4.1 06-Apr-2015  skrll Sync with HEAD
 1.19.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.19.2.2 26-Apr-2017  pgoyette Sync with HEAD
 1.19.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.22.12.1 10-Jun-2019  christos Sync with HEAD
 1.22.10.1 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.2 16-Oct-2009  pooka We have real pollsuck() now, so remove this, ahem, less-than-perfect one.
(XXX: only thing in the kernel using pollsuck is netsmb)
 1.1 06-Sep-2009  pooka branches: 1.1.2;
add a very simple version of pollsock()
XXX: it seems to exist purely for the pleasure of netsmb??
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 16-Sep-2009  yamt sync with head
 1.1.2.1 06-Sep-2009  yamt file net_emul.c was added on branch yamt-nfs-mp on 2009-09-16 13:38:05 +0000
 1.49 04-Apr-2022  yamaguchi Move input processing of lagg(4) before ether_input
to get rid of dependence.

This implementation is similar with that of bridge(4).
 1.48 30-Sep-2021  yamaguchi vlan: Register vlan_ifdetach to ether_ifdetach hook
 1.47 30-Sep-2021  yamaguchi bridge: Register bridge_ifdetach to ether_ifdetach hook
 1.46 30-Sep-2021  yamaguchi vlan: Register the callback to update link-state of vlan I/F
to link-state change hook

The callback is registered in every vlan I/F even if the parent
interface is the same. Therefore it is not needed to search the
vlan I/F by the parent interface unlike the previous callback.
 1.45 30-Sep-2021  yamaguchi lagg: Register lagg_linkstate_changed to link-state change hook
 1.44 30-Sep-2021  yamaguchi bridge: Register bridge_calc_link_state to link-state change hook
 1.43 14-Jul-2021  ozaki-r Rump-ify ALTQ (librumpnet_altq.so)
 1.42 17-May-2021  yamaguchi Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable
 1.41 06-Nov-2020  christos branches: 1.41.4; 1.41.6;
PR/55777: Ruslan Nikolaev: Move the unp_sysctl_create to uipc_usrreq.c to
facilitate splitting rump modules and does not require a dummy function.
 1.40 27-Sep-2020  roy branches: 1.40.2;
rump: Add weak alias for bridge_calc_link_state
 1.39 27-Sep-2020  roy rump: Try to fix build
 1.38 28-Aug-2020  ozaki-r ipsec: rename ipsec_ip_input to ipsec_ip_input_checkpolicy

Because it just checks if a packet passes security policies.
 1.37 12-Dec-2018  rin PR kern/53562

Handle TX offload in software when a packet is sent via
bridge_output(). We can send it as is in the following
exceptional cases:

For unicast:

(1) When the destination interface is the same as source.

(2) When the destination supports all TX offload options
specified in a packet.

For multicast/broadcast:

(3) When all the members of the bridge support the specified
TX offload options.

For (3), add sc_csum_flags_tx flag to bridge softc, which is
logical AND b/w capabilities of TX offload options in member
interface (ifp->if_csum_flags_tx). The flag is updated when a
member is (i) added to or (ii) removed from a bridge, or (iii)
if_csum_flags_tx flag of a member interface is manipulated via
ifconfig(8).

Turn on M_CSUM_TSOv[46] bit in ifp->if_csum_flags_tx flag when
TSO[46] is enabled for that interface.

OK msaitoh thorpej
 1.36 14-May-2018  maxv branches: 1.36.2;
Merge ipsec4_input and ipsec6_input into ipsec_ip_input. Make the argument
a bool for clarity. Optimize the function: if M_CANFASTFWD is not there
(because already removed by the firewall) leave now.

Makes it easier to see that M_CANFASTFWD is not removed on IPv6.
 1.35 10-May-2018  maxv Rename ipsec4_forward -> ipsec_mtu, and switch to void.
 1.34 05-May-2018  christos add an empty stub
 1.33 28-Apr-2018  maxv Stop using a macro, rename the function to ipsec_init_pcbpolicy directly.
 1.32 12-Apr-2018  christos remove now unused crap.
 1.31 27-Feb-2018  maxv branches: 1.31.2;
Dedup: merge ipsec4_set_policy and ipsec6_set_policy. The content of the
original ipsec_set_policy function is inlined into the new one.
 1.30 27-Feb-2018  maxv Oops, forgot this file; I just merged two IPsec functions, so adapt
the rump stubs accordingly.
 1.29 26-Feb-2018  maxv Dedup: merge ipsec4_in_reject and ipsec6_in_reject into ipsec_in_reject.
While here fix misleading comment.

ok ozaki-r@
 1.28 26-Feb-2018  maxv Dedup: merge ipsec4_hdrsiz and ipsec6_hdrsiz into ipsec_hdrsiz.

ok ozaki-r@
 1.27 02-Aug-2017  ozaki-r Make IPsec SPD MP-safe

We use localcount(9), not psref(9), to make the sptree and secpolicy (SP)
entries MP-safe because SPs need to be referenced over opencrypto
processing that executes a callback in a different context.

SPs on sockets aren't managed by the sptree and can be destroyed in softint.
localcount_drain cannot be used in softint so we delay the destruction of
such SPs to a thread context. To do so, a list to manage such SPs is added
(key_socksplist) and key_timehandler_spd deletes dead SPs in the list.

For more details please read the locking notes in key.c.

Proposed on tech-kern@ and tech-net@
 1.26 14-Apr-2017  ozaki-r branches: 1.26.4;
Rumpify netipsec

Note that we should modularize netipsec and reduce reverse symbol references
(referencing symbols of netipsec from net, netinet and netinet6) though,
the task needs lots of code changes. Prior to doing so, rumpifying it and
having ATF tests should be useful.
 1.25 14-Mar-2017  ozaki-r Use if_acquire and if_release instead of using psref API directly

- Provide if_release for consistency to if_acquire
- Use if_acquire and if_release for ifp iterations
- Make ifnet_psref_class static
 1.24 26-Nov-2016  ozaki-r branches: 1.24.2;
Rumpify vlan(4)
 1.23 12-May-2016  ozaki-r branches: 1.23.2;
Protect ifnet list with psz and psref

The change ensures that ifnet objects in the ifnet list aren't freed during
list iterations by using pserialize(9) and psref(9).

Note that the change adds a pslist(9) for ifnet but doesn't remove the
original ifnet list (ifnet_list) to avoid breaking kvm(3) users. We
shouldn't use the original list in the kernel anymore.
 1.22 15-Apr-2016  ozaki-r Rump-ify if_pppoe

From s-yamaguchi@IIJ
 1.21 02-Dec-2014  ozaki-r Get rid of weak_alias for bridge_input

bridge_input is now not directly called from ether_input,
so we can remove weak_alias for it.
 1.20 02-Dec-2014  ozaki-r Revert "Pull if_drain routine out of m_reclaim"

The commit broke dlopen()'d rumpnet on platforms where ld.so does not
override weak aliases (e.g. musl, Solaris, potentially OS X, ...).

Requested by pooka@.
 1.19 27-Nov-2014  ozaki-r branches: 1.19.2;
Pull if_drain routine out of m_reclaim

It's if-specific and should be in if.c.

No functional change.
 1.18 18-May-2014  rmind Fix RUMP build.
 1.17 26-Apr-2014  pooka don't invade the __toolchain namespace
 1.16 26-Apr-2014  pooka Move a few stubs to where they really belong; allows us to create
them as strong instead of weak symbols.
 1.15 26-Apr-2014  pooka kill weak aliases which are no longer necessary
 1.14 26-Jun-2013  pooka branches: 1.14.2; 1.14.6;
Remove the route_info weak alias. It's unnecessary since 2011
and confused Linux ld.so, thus preventing dlopen() of librumpnet.
Reported in private email by Justin Cormack.

Also, g/c a few other stubs which are no longer necessary.
 1.13 05-Aug-2012  pooka branches: 1.13.2;
Remove stubs which have been provided elsewhere for almost 2 years now.
 1.12 01-Feb-2011  matt branches: 1.12.4;
Add a new AF/PF_ROUTE which is 64-bit clean which makes the routing socket
interface (and its associated sysctls) act identically for both 32 and 64 bit
programs. The old unclean one remains for backward compatibility.
 1.11 08-Dec-2010  pooka branches: 1.11.2; 1.11.4;
weak stubs for agr(4)
 1.10 08-Dec-2010  pooka add weak stubs for bridge (not the game)
 1.9 08-Dec-2010  joerg Don't alias the same symbol twice.
 1.8 23-Jan-2009  pooka branches: 1.8.4; 1.8.8;
Add a few stubs to allow to compile - i'll have to sort these out later.
 1.7 29-Dec-2008  pooka branches: 1.7.2;
Provide ifunit stub in the same place as others.
 1.6 29-Dec-2008  pooka __weak_alias some more networking symbols for the benefit of the
nfs boot code in case not using the full networking stack.
 1.5 18-Dec-2008  pooka __KERNEL_RCSID
 1.4 16-Oct-2008  pooka branches: 1.4.2; 1.4.4;
...... except that the compat converter is actually supposed to convert
the ioctl, not return random garbage. It returning random garbage
causes an interface with an interesting netmask to get set and
hence a very interesting effect when you try to add a route for
your system.

All in all, a very healthy debugging session (if you're a vampire
or a wraith).
 1.3 16-Oct-2008  pooka ... except that compat_ifioctl() must know how to route the
commands further.
 1.2 16-Oct-2008  pooka Add a few compat stubs. They shouldn't be required at all, but I
don't currently have the time to wage a holy war against how the
kernel decides it wants them.
 1.1 15-Oct-2008  pooka Add the basic rump networking library, which provides e.g. sockets
and mbufs. This is required by all network-using rump applications.
 1.4.4.2 03-Mar-2009  skrll Sync with HEAD.
 1.4.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.4.2.2 19-Oct-2008  haad Sync with HEAD.
 1.4.2.1 16-Oct-2008  haad file net_stub.c was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.7.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.7.2.1 29-Dec-2008  mjf file net_stub.c was added on branch mjf-devfs2 on 2009-01-17 13:29:37 +0000
 1.8.8.1 05-Mar-2011  rmind sync with head
 1.8.4.2 04-May-2009  yamt sync with head.
 1.8.4.1 23-Jan-2009  yamt file net_stub.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.11.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.11.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.12.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.12.4.1 30-Oct-2012  yamt sync with head
 1.13.2.2 03-Dec-2017  jdolecek update from HEAD
 1.13.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.14.6.1 10-Aug-2014  tls Rebase.
 1.14.2.1 18-May-2014  rmind sync with head
 1.19.2.5 28-Aug-2017  skrll Sync with HEAD
 1.19.2.4 05-Dec-2016  skrll Sync with HEAD
 1.19.2.3 29-May-2016  skrll Sync with HEAD
 1.19.2.2 22-Apr-2016  skrll Sync with HEAD
 1.19.2.1 06-Apr-2015  skrll Sync with HEAD
 1.23.2.3 26-Apr-2017  pgoyette Sync with HEAD
 1.23.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.23.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.24.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.26.4.1 21-Oct-2017  snj Pull up following revision(s) (requested by ozaki-r in ticket #300):
crypto/dist/ipsec-tools/src/setkey/parse.y: 1.19
crypto/dist/ipsec-tools/src/setkey/token.l: 1.20
distrib/sets/lists/tests/mi: 1.754, 1.757, 1.759
doc/TODO.smpnet: 1.12-1.13
sys/net/pfkeyv2.h: 1.32
sys/net/raw_cb.c: 1.23-1.24, 1.28
sys/net/raw_cb.h: 1.28
sys/net/raw_usrreq.c: 1.57-1.58
sys/net/rtsock.c: 1.228-1.229
sys/netinet/in_proto.c: 1.125
sys/netinet/ip_input.c: 1.359-1.361
sys/netinet/tcp_input.c: 1.359-1.360
sys/netinet/tcp_output.c: 1.197
sys/netinet/tcp_var.h: 1.178
sys/netinet6/icmp6.c: 1.213
sys/netinet6/in6_proto.c: 1.119
sys/netinet6/ip6_forward.c: 1.88
sys/netinet6/ip6_input.c: 1.181-1.182
sys/netinet6/ip6_output.c: 1.193
sys/netinet6/ip6protosw.h: 1.26
sys/netipsec/ipsec.c: 1.100-1.122
sys/netipsec/ipsec.h: 1.51-1.61
sys/netipsec/ipsec6.h: 1.18-1.20
sys/netipsec/ipsec_input.c: 1.44-1.51
sys/netipsec/ipsec_netbsd.c: 1.41-1.45
sys/netipsec/ipsec_output.c: 1.49-1.64
sys/netipsec/ipsec_private.h: 1.5
sys/netipsec/key.c: 1.164-1.234
sys/netipsec/key.h: 1.20-1.32
sys/netipsec/key_debug.c: 1.18-1.21
sys/netipsec/key_debug.h: 1.9
sys/netipsec/keydb.h: 1.16-1.20
sys/netipsec/keysock.c: 1.59-1.62
sys/netipsec/keysock.h: 1.10
sys/netipsec/xform.h: 1.9-1.12
sys/netipsec/xform_ah.c: 1.55-1.74
sys/netipsec/xform_esp.c: 1.56-1.72
sys/netipsec/xform_ipcomp.c: 1.39-1.53
sys/netipsec/xform_ipip.c: 1.50-1.54
sys/netipsec/xform_tcp.c: 1.12-1.16
sys/rump/librump/rumpkern/Makefile.rumpkern: 1.170
sys/rump/librump/rumpnet/net_stub.c: 1.27
sys/sys/protosw.h: 1.67-1.68
tests/net/carp/t_basic.sh: 1.7
tests/net/if_gif/t_gif.sh: 1.11
tests/net/if_l2tp/t_l2tp.sh: 1.3
tests/net/ipsec/Makefile: 1.7-1.9
tests/net/ipsec/algorithms.sh: 1.5
tests/net/ipsec/common.sh: 1.4-1.6
tests/net/ipsec/t_ipsec_ah_keys.sh: 1.2
tests/net/ipsec/t_ipsec_esp_keys.sh: 1.2
tests/net/ipsec/t_ipsec_gif.sh: 1.6-1.7
tests/net/ipsec/t_ipsec_l2tp.sh: 1.6-1.7
tests/net/ipsec/t_ipsec_misc.sh: 1.8-1.18
tests/net/ipsec/t_ipsec_sockopt.sh: 1.1-1.2
tests/net/ipsec/t_ipsec_tcp.sh: 1.1-1.2
tests/net/ipsec/t_ipsec_transport.sh: 1.5-1.6
tests/net/ipsec/t_ipsec_tunnel.sh: 1.9
tests/net/ipsec/t_ipsec_tunnel_ipcomp.sh: 1.1-1.2
tests/net/ipsec/t_ipsec_tunnel_odd.sh: 1.3
tests/net/mcast/t_mcast.sh: 1.6
tests/net/net/t_ipaddress.sh: 1.11
tests/net/net_common.sh: 1.20
tests/net/npf/t_npf.sh: 1.3
tests/net/route/t_flags.sh: 1.20
tests/net/route/t_flags6.sh: 1.16
usr.bin/netstat/fast_ipsec.c: 1.22
Do m_pullup before mtod

It may fix panicks of some tests on anita/sparc and anita/GuruPlug.
---
KNF
---
Enable DEBUG for babylon5
---
Apply C99-style struct initialization to xformsw
---
Tweak outputs of netstat -s for IPsec

- Get rid of "Fast"
- Use ipsec and ipsec6 for titles to clarify protocol
- Indent outputs of sub protocols

Original outputs were organized like this:

(Fast) IPsec:
IPsec ah:
IPsec esp:
IPsec ipip:
IPsec ipcomp:
(Fast) IPsec:
IPsec ah:
IPsec esp:
IPsec ipip:
IPsec ipcomp:

New outputs are organized like this:

ipsec:
ah:
esp:
ipip:
ipcomp:
ipsec6:
ah:
esp:
ipip:
ipcomp:
---
Add test cases for IPComp
---
Simplify IPSEC_OSTAT macro (NFC)
---
KNF; replace leading whitespaces with hard tabs
---
Introduce and use SADB_SASTATE_USABLE_P
---
KNF
---
Add update command for testing

Updating an SA (SADB_UPDATE) requires that a process issuing
SADB_UPDATE is the same as a process issued SADB_ADD (or SADB_GETSPI).
This means that update command must be used with add command in a
configuration of setkey. This usage is normally meaningless but
useful for testing (and debugging) purposes.
---
Add test cases for updating SA/SP

The tests require newly-added udpate command of setkey.
---
PR/52346: Frank Kardel: Fix checksumming for NAT-T
See XXX for improvements.
---
Remove codes for PACKET_TAG_IPSEC_IN_CRYPTO_DONE

It seems that PACKET_TAG_IPSEC_IN_CRYPTO_DONE is for network adapters
that have IPsec accelerators; a driver sets the mtag to a packet
when its device has already encrypted the packet.

Unfortunately no driver implements such offload features for long
years and seems unlikely to implement them soon. (Note that neither
FreeBSD nor Linux doesn't have such drivers.) Let's remove related
(unused) codes and simplify the IPsec code.
---
Fix usages of sadb_msg_errno
---
Avoid updating sav directly

On SADB_UPDATE a target sav was updated directly, which was unsafe.
Instead allocate another sav, copy variables of the old sav to
the new one and replace the old one with the new one.
---
Simplify; we can assume sav->tdb_xform cannot be NULL while it's valid
---
Rename key_alloc* functions (NFC)

We shouldn't use the term "alloc" for functions that just look up
data and actually don't allocate memory.
---
Use explicit_memset to surely zero-clear key_auth and key_enc
---
Make sure to clear keys on error paths of key_setsaval
---
Add missing KEY_FREESAV
---
Make sure a sav is inserted to a sah list after its initialization completes
---
Remove unnecessary zero-clearing codes from key_setsaval

key_setsaval is now used only for a newly-allocated sav. (It was
used to reset variables of an existing sav.)
---
Correct wrong assumption of sav->refcnt in key_delsah

A sav in a list is basically not to be sav->refcnt == 0. And also
KEY_FREESAV assumes sav->refcnt > 0.
---
Let key_getsavbyspi take a reference of a returning sav
---
Use time_mono_to_wall (NFC)
---
Separate sending message routine (NFC)
---
Simplify; remove unnecessary zero-clears

key_freesaval is used only when a target sav is being destroyed.
---
Omit NULL checks for sav->lft_c

sav->lft_c can be NULL only when initializing or destroying sav.
---
Omit unnecessary NULL checks for sav->sah
---
Omit unnecessary check of sav->state

key_allocsa_policy picks a sav of either MATURE or DYING so we
don't need to check its state again.
---
Simplify; omit unnecessary saidx passing

- ipsec_nextisr returns a saidx but no caller uses it
- key_checkrequest is passed a saidx but it can be gotton by
another argument (isr)
---
Fix splx isn't called on some error paths
---
Fix header size calculation of esp where sav is NULL
---
Fix header size calculation of ah in the case sav is NULL

This fix was also needed for esp.
---
Pass sav directly to opencrypto callback

In a callback, use a passed sav as-is by default and look up a sav
only if the passed sav is dead.
---
Avoid examining freshness of sav on packet processing

If a sav list is sorted (by lft_c->sadb_lifetime_addtime) in advance,
we don't need to examine each sav and also don't need to delete one
on the fly and send up a message. Fortunately every sav lists are sorted
as we need.

Added key_validate_savlist validates that each sav list is surely sorted
(run only if DEBUG because it's not cheap).
---
Add test cases for SAs with different SPIs
---
Prepare to stop using isr->sav

isr is a shared resource and using isr->sav as a temporal storage
for each packet processing is racy. And also having a reference from
isr to sav makes the lifetime of sav non-deterministic; such a reference
is removed when a packet is processed and isr->sav is overwritten by
new one. Let's have a sav locally for each packet processing instead of
using shared isr->sav.

However this change doesn't stop using isr->sav yet because there are
some users of isr->sav. isr->sav will be removed after the users find
a way to not use isr->sav.
---
Fix wrong argument handling
---
fix printf format.
---
Don't validate sav lists of LARVAL or DEAD states

We don't sort the lists so the validation will always fail.

Fix PR kern/52405
---
Make sure to sort the list when changing the state by key_sa_chgstate
---
Rename key_allocsa_policy to key_lookup_sa_bysaidx
---
Separate test files
---
Calculate ah_max_authsize on initialization as well as esp_max_ivlen
---
Remove m_tag_find(PACKET_TAG_IPSEC_PENDING_TDB) because nobody sets the tag
---
Restore a comment removed in previous

The comment is valid for the below code.
---
Make tests more stable

sleep command seems to wait longer than expected on anita so
use polling to wait for a state change.
---
Add tests that explicitly delete SAs instead of waiting for expirations
---
Remove invalid M_AUTHIPDGM check on ESP isr->sav

M_AUTHIPDGM flag is set to a mbuf in ah_input_cb. An sav of ESP can
have AH authentication as sav->tdb_authalgxform. However, in that
case esp_input and esp_input_cb are used to do ESP decryption and
AH authentication and M_AUTHIPDGM never be set to a mbuf. So
checking M_AUTHIPDGM of a mbuf on isr->sav of ESP is meaningless.
---
Look up sav instead of relying on unstable sp->req->sav

This code is executed only in an error path so an additional lookup
doesn't matter.
---
Correct a comment
---
Don't release sav if calling crypto_dispatch again
---
Remove extra KEY_FREESAV from ipsec_process_done

It should be done by the caller.
---
Don't bother the case of crp->crp_buf == NULL in callbacks
---
Hold a reference to an SP during opencrypto processing

An SP has a list of isr (ipsecrequest) that represents a sequence
of IPsec encryption/authentication processing. One isr corresponds
to one opencrypto processing. The lifetime of an isr follows its SP.

We pass an isr to a callback function of opencrypto to continue
to a next encryption/authentication processing. However nobody
guaranteed that the isr wasn't freed, i.e., its SP wasn't destroyed.

In order to avoid such unexpected destruction of isr, hold a reference
to its SP during opencrypto processing.
---
Don't make SAs expired on tests that delete SAs explicitly
---
Fix a debug message
---
Dedup error paths (NFC)
---
Use pool to allocate tdb_crypto

For ESP and AH, we need to allocate an extra variable space in addition
to struct tdb_crypto. The fixed size of pool items may be larger than
an actual requisite size of a buffer, but still the performance
improvement by replacing malloc with pool wins.
---
Don't use unstable isr->sav for header size calculations

We may need to optimize to not look up sav here for users that
don't need to know an exact size of headers (e.g., TCP segmemt size
caclulation).
---
Don't use sp->req->sav when handling NAT-T ESP fragmentation

In order to do this we need to look up a sav however an additional
look-up degrades performance. A sav is later looked up in
ipsec4_process_packet so delay the fragmentation check until then
to avoid an extra look-up.
---
Don't use key_lookup_sp that depends on unstable sp->req->sav

It provided a fast look-up of SP. We will provide an alternative
method in the future (after basic MP-ification finishes).
---
Stop setting isr->sav on looking up sav in key_checkrequest
---
Remove ipsecrequest#sav
---
Stop setting mtag of PACKET_TAG_IPSEC_IN_DONE because there is no users anymore
---
Skip ipsec_spi_*_*_preferred_new_timeout when running on qemu

Probably due to PR 43997
---
Add localcount to rump kernels
---
Remove unused macro
---
Fix key_getcomb_setlifetime

The fix adjusts a soft limit to be 80% of a corresponding hard limit.

I'm not sure the fix is really correct though, at least the original
code is wrong. A passed comb is zero-cleared before calling
key_getcomb_setlifetime, so
comb->sadb_comb_soft_addtime = comb->sadb_comb_soft_addtime * 80 / 100;
is meaningless.
---
Provide and apply key_sp_refcnt (NFC)

It simplifies further changes.
---
Fix indentation

Pointed out by knakahara@
---
Use pslist(9) for sptree
---
Don't acquire global locks for IPsec if NET_MPSAFE

Note that the change is just to make testing easy and IPsec isn't MP-safe yet.
---
Let PF_KEY socks hold their own lock instead of softnet_lock

Operations on SAD and SPD are executed via PF_KEY socks. The operations
include deletions of SAs and SPs that will use synchronization mechanisms
such as pserialize_perform to wait for references to SAs and SPs to be
released. It is known that using such mechanisms with holding softnet_lock
causes a dead lock. We should avoid the situation.
---
Make IPsec SPD MP-safe

We use localcount(9), not psref(9), to make the sptree and secpolicy (SP)
entries MP-safe because SPs need to be referenced over opencrypto
processing that executes a callback in a different context.

SPs on sockets aren't managed by the sptree and can be destroyed in softint.
localcount_drain cannot be used in softint so we delay the destruction of
such SPs to a thread context. To do so, a list to manage such SPs is added
(key_socksplist) and key_timehandler_spd deletes dead SPs in the list.

For more details please read the locking notes in key.c.

Proposed on tech-kern@ and tech-net@
---
Fix updating ipsec_used

- key_update_used wasn't called in key_api_spddelete2 and key_api_spdflush
- key_update_used wasn't called if an SP had been added/deleted but
a reply to userland failed
---
Fix updating ipsec_used; turn on when SPs on sockets are added
---
Add missing IPsec policy checks to icmp6_rip6_input

icmp6_rip6_input is quite similar to rip6_input and the same checks exist
in rip6_input.
---
Add test cases for setsockopt(IP_IPSEC_POLICY)
---
Don't use KEY_NEWSP for dummy SP entries

By the change KEY_NEWSP is now not called from softint anymore
and we can use kmem_zalloc with KM_SLEEP for KEY_NEWSP.
---
Comment out unused functions
---
Add test cases that there are SPs but no relevant SAs
---
Don't allow sav->lft_c to be NULL

lft_c of an sav that was created by SADB_GETSPI could be NULL.
---
Clean up clunky eval strings

- Remove unnecessary \ at EOL
- This allows to omit ; too
- Remove unnecessary quotes for arguments of atf_set
- Don't expand $DEBUG in eval
- We expect it's expanded on execution

Suggested by kre@
---
Remove unnecessary KEY_FREESAV in an error path

sav should be freed (unreferenced) by the caller.
---
Use pslist(9) for sahtree
---
Use pslist(9) for sah->savtree
---
Rename local variable newsah to sah

It may not be new.
---
MP-ify SAD slightly

- Introduce key_sa_mtx and use it for some list operations
- Use pserialize for some list iterations
---
Introduce KEY_SA_UNREF and replace KEY_FREESAV with it where sav will never be actually freed in the future

KEY_SA_UNREF is still key_freesav so no functional change for now.

This change reduces diff of further changes.
---
Remove out-of-date log output

Pointed out by riastradh@
---
Use KDASSERT instead of KASSERT for mutex_ownable

Because mutex_ownable is too heavy to run in a fast path
even for DIAGNOSTIC + LOCKDEBUG.

Suggested by riastradh@
---
Assemble global lists and related locks into cache lines (NFCI)

Also rename variable names from *tree to *list because they are
just lists, not trees.

Suggested by riastradh@
---
Move locking notes
---
Update the locking notes

- Add locking order
- Add locking notes for misc lists such as reglist
- Mention pserialize, key_sp_ref and key_sp_unref on SP operations

Requested by riastradh@
---
Describe constraints of key_sp_ref and key_sp_unref

Requested by riastradh@
---
Hold key_sad.lock on SAVLIST_WRITER_INSERT_TAIL
---
Add __read_mostly to key_psz

Suggested by riastradh@
---
Tweak wording (pserialize critical section => pserialize read section)

Suggested by riastradh@
---
Add missing mutex_exit
---
Fix setkey -D -P outputs

The outputs were tweaked (by me), but I forgot updating libipsec
in my local ATF environment...
---
MP-ify SAD (key_sad.sahlist and sah entries)

localcount(9) is used to protect key_sad.sahlist and sah entries
as well as SPD (and will be used for SAD sav).

Please read the locking notes of SAD for more details.
---
Introduce key_sa_refcnt and replace sav->refcnt with it (NFC)
---
Destroy sav only in the loop for DEAD sav
---
Fix KASSERT(solocked(sb->sb_so)) failure in sbappendaddr that is called eventually from key_sendup_mbuf

If key_sendup_mbuf isn't passed a socket, the assertion fails.
Originally in this case sb->sb_so was softnet_lock and callers
held softnet_lock so the assertion was magically satisfied.
Now sb->sb_so is key_so_mtx and also softnet_lock isn't always
held by callers so the assertion can fail.

Fix it by holding key_so_mtx if key_sendup_mbuf isn't passed a socket.

Reported by knakahara@
Tested by knakahara@ and ozaki-r@
---
Fix locking notes of SAD
---
Fix deadlock between key_sendup_mbuf called from key_acquire and localcount_drain

If we call key_sendup_mbuf from key_acquire that is called on packet
processing, a deadlock can happen like this:
- At key_acquire, a reference to an SP (and an SA) is held
- key_sendup_mbuf will try to take key_so_mtx
- Some other thread may try to localcount_drain to the SP with
holding key_so_mtx in say key_api_spdflush
- In this case localcount_drain never return because key_sendup_mbuf
that has stuck on key_so_mtx never release a reference to the SP

Fix the deadlock by deferring key_sendup_mbuf to the timer
(key_timehandler).
---
Fix that prev isn't cleared on retry
---
Limit the number of mbufs queued for deferred key_sendup_mbuf

It's easy to be queued hundreds of mbufs on the list under heavy
network load.
---
MP-ify SAD (savlist)

localcount(9) is used to protect savlist of sah. The basic design is
similar to MP-ifications of SPD and SAD sahlist. Please read the
locking notes of SAD for more details.
---
Simplify ipsec_reinject_ipstack (NFC)
---
Add per-CPU rtcache to ipsec_reinject_ipstack

It reduces route lookups and also reduces rtcache lock contentions
when NET_MPSAFE is enabled.
---
Use pool_cache(9) instead of pool(9) for tdb_crypto objects

The change improves network throughput especially on multi-core systems.
---
Update

ipsec(4), opencrypto(9) and vlan(4) are now MP-safe.
---
Write known issues on scalability
---
Share a global dummy SP between PCBs

It's never be changed so it can be pre-allocated and shared safely between PCBs.
---
Fix race condition on the rawcb list shared by rtsock and keysock

keysock now protects itself by its own mutex, which means that
the rawcb list is protected by two different mutexes (keysock's one
and softnet_lock for rtsock), of course it's useless.

Fix the situation by having a discrete rawcb list for each.
---
Use a dedicated mutex for rt_rawcb instead of softnet_lock if NET_MPSAFE
---
fix localcount leak in sav. fixed by ozaki-r@n.o.

I commit on behalf of him.
---
remove unnecessary comment.
---
Fix deadlock between pserialize_perform and localcount_drain

A typical ussage of localcount_drain looks like this:

mutex_enter(&mtx);
item = remove_from_list();
pserialize_perform(psz);
localcount_drain(&item->localcount, &cv, &mtx);
mutex_exit(&mtx);

This sequence can cause a deadlock which happens for example on the following
situation:

- Thread A calls localcount_drain which calls xc_broadcast after releasing
a specified mutex
- Thread B enters the sequence and calls pserialize_perform with holding
the mutex while pserialize_perform also calls xc_broadcast
- Thread C (xc_thread) that calls an xcall callback of localcount_drain tries
to hold the mutex

xc_broadcast of thread B doesn't start until xc_broadcast of thread A
finishes, which is a feature of xcall(9). This means that pserialize_perform
never complete until xc_broadcast of thread A finishes. On the other hand,
thread C that is a callee of xc_broadcast of thread A sticks on the mutex.
Finally the threads block each other (A blocks B, B blocks C and C blocks A).

A possible fix is to serialize executions of the above sequence by another
mutex, but adding another mutex makes the code complex, so fix the deadlock
by another way; the fix is to release the mutex before pserialize_perform
and instead use a condvar to prevent pserialize_perform from being called
simultaneously.

Note that the deadlock has happened only if NET_MPSAFE is enabled.
---
Add missing ifdef NET_MPSAFE
---
Take softnet_lock on pr_input properly if NET_MPSAFE

Currently softnet_lock is taken unnecessarily in some cases, e.g.,
icmp_input and encap4_input from ip_input, or not taken even if needed,
e.g., udp_input and tcp_input from ipsec4_common_input_cb. Fix them.

NFC if NET_MPSAFE is disabled (default).
---
- sanitize key debugging so that we don't print extra newlines or unassociated
debugging messages.
- remove unused functions and make internal ones static
- print information in one line per message
---
humanize printing of ip addresses
---
cast reduction, NFC.
---
Fix typo in comment
---
Pull out ipsec_fill_saidx_bymbuf (NFC)
---
Don't abuse key_checkrequest just for looking up sav

It does more than expected for example key_acquire.
---
Fix SP is broken on transport mode

isr->saidx was modified accidentally in ipsec_nextisr.

Reported by christos@
Helped investigations by christos@ and knakahara@
---
Constify isr at many places (NFC)
---
Include socketvar.h for softnet_lock
---
Fix buffer length for ipsec_logsastr
 1.31.2.5 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.31.2.4 21-May-2018  pgoyette Sync with HEAD
 1.31.2.3 02-May-2018  pgoyette Synch with HEAD
 1.31.2.2 16-Apr-2018  pgoyette Sync with HEAD, resolve some conflicts
 1.31.2.1 12-Apr-2018  pgoyette Merge christos's recent changes on HEAD
 1.36.2.1 10-Jun-2019  christos Sync with HEAD
 1.40.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.41.6.1 31-May-2021  cjep sync with head
 1.41.4.2 01-Aug-2021  thorpej Sync with HEAD.
 1.41.4.1 17-Jun-2021  thorpej Sync w/ HEAD.
 1.11 03-Sep-2022  thorpej Garbage-collect the remaining vestiges of netisr.
 1.10 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.9 05-Jun-2014  rmind branches: 1.9.4;
- Implement pktqueue interface for lockless IP input queue.
- Replace ipintrq and ip6intrq with the pktqueue mechanism.
- Eliminate kernel-lock from ipintr() and ip6intr().
- Some preparation work to push softnet_lock out of ipintr().

Discussed on tech-net.
 1.8 25-Feb-2014  pooka branches: 1.8.2;
Schedule only those netisr's that have registered handlers.
 1.7 14-Feb-2014  pooka Register netisr's from component constructors instead of via a hardcoded
global list.
 1.6 18-Jul-2013  kefren Add librumpnet_netmpls that provides MPLS features into rump kernels
ok'ed pooka@
 1.5 30-Dec-2010  pooka branches: 1.5.8; 1.5.18; 1.5.22; 1.5.30;
Refetch netisr function pointers with dlsym(). This gives the
desired values in case the components containing the netisr handlers
were not linked in but dlopen()'d before calling rump_init().

(could simplify a little in case static linking is declared dead)
 1.4 26-May-2009  pooka branches: 1.4.4;
Support IPv6 in rump. I'd have liked to introduce a netinet6
component, but due to ifdef happiness permeating the sources, it's
a compile decision for now, so netinet pulls in both inet and inet6.

One issue, one single issue: the loopback interface still needs to
be created for IPv6 to work. I have patches to take care of it
automatically if the appropriate component (net) is present, but
they require a bit more testing before commit.
 1.3 18-Mar-2009  cegger branches: 1.3.2;
Ansify function definitions w/o arguments. Generated with sed.
 1.2 18-Dec-2008  pooka branches: 1.2.2; 1.2.4;
__KERNEL_RCSID
 1.1 15-Oct-2008  pooka branches: 1.1.2; 1.1.4;
Add the basic rump networking library, which provides e.g. sockets
and mbufs. This is required by all network-using rump applications.
 1.1.4.2 28-Apr-2009  skrll Sync with HEAD.
 1.1.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.2.2 19-Oct-2008  haad Sync with HEAD.
 1.1.2.1 15-Oct-2008  haad file netisr.c was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.2.4.2 23-Jul-2009  jym Sync with HEAD.
 1.2.4.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.2.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.2.1 18-Dec-2008  mjf file netisr.c was added on branch mjf-devfs2 on 2009-01-17 13:29:37 +0000
 1.3.2.3 20-Jun-2009  yamt sync with head
 1.3.2.2 04-May-2009  yamt sync with head.
 1.3.2.1 18-Mar-2009  yamt file netisr.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.4.4.1 05-Mar-2011  rmind sync with head
 1.5.30.1 23-Jul-2013  riastradh sync with HEAD
 1.5.22.2 18-May-2014  rmind sync with head
 1.5.22.1 28-Aug-2013  rmind sync with head
 1.5.18.2 03-Dec-2017  jdolecek update from HEAD
 1.5.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.2.1 10-Aug-2014  tls Rebase.
 1.9.4.1 19-Mar-2016  skrll Sync with HEAD
 1.21 10-Jan-2018  ozaki-r Don't start callouts for domains before attaching domains on rump kernels

On rump kernels, the callouts for domains, pffasttimo and pfslowtimo, started
before domains were attached. Normally the callouts were dispatched after
domain attaches (initializations) finished, however, under load the callouts
could be executed prior to the attaches, resulting in that the callouts accessed
unallocated or uninitialized resources.
 1.20 17-Jan-2017  christos branches: 1.20.6;
call pfil_init() here.
 1.19 11-Apr-2016  ozaki-r branches: 1.19.2; 1.19.4;
Sweep unncessary radix.h inclusions
 1.18 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.17 14-Feb-2014  pooka branches: 1.17.6;
Register netisr's from component constructors instead of via a hardcoded
global list.
 1.16 14-Jan-2013  pooka branches: 1.16.2;
Remove routines which don't make sense (maybe they're some intermediate
phase of the component framework?)
 1.15 14-Jan-2013  pooka Set networking soft interrupt vectors earlier, just in case interface
component initialization causes network traffic to be received.
 1.14 14-Jan-2013  pooka Don't use __weak_alias where the component framework is sufficient.
 1.13 11-Jan-2011  pooka branches: 1.13.8; 1.13.18;
Add one more component level to networking: IFCFG.
It is executed after IF and the purposes to guarantee the right
order in cross-component interface address configuration.
(e.g. lo0 is attached by net but 127.0.0.1 is configured by netinet)
 1.12 01-Mar-2010  pooka branches: 1.12.2;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.11 19-Jan-2010  pooka branches: 1.11.2;
Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client. This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached. However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff. ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
 1.10 04-Oct-2009  pooka Initialize suckets before domains since some domains install timers
which take softnet_lock and might run before the lock is actually
initialized. Also, soinit() itself already calls soinit2(), so no
need to call it twice.
 1.9 16-Sep-2009  pooka create interfaces only after ifnef is initialized
 1.8 28-May-2009  pooka Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.7 18-Mar-2009  cegger branches: 1.7.2;
Ansify function definitions w/o arguments. Generated with sed.
 1.6 29-Dec-2008  pooka branches: 1.6.2; 1.6.4;
Provide ifunit stub in the same place as others.
 1.5 18-Dec-2008  pooka __KERNEL_RCSID
 1.4 25-Nov-2008  pooka "Manually" call rn_init() to make sure it's done. The real kernel
hooks it up with domain constructors in a fascinating way.
 1.3 16-Oct-2008  pooka branches: 1.3.2; 1.3.4;
Before I sort all the COMPAT_RIDICULOUSLYPREHISTORIC ioctl stuff
out, add a weak alias for ifunit() so that utils can be linked with
sockin.
 1.2 16-Oct-2008  pooka call rump_netisr_init()
 1.1 15-Oct-2008  pooka Add the basic rump networking library, which provides e.g. sockets
and mbufs. This is required by all network-using rump applications.
 1.3.4.2 28-Apr-2009  skrll Sync with HEAD.
 1.3.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.3.2.3 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.3.2.2 19-Oct-2008  haad Sync with HEAD.
 1.3.2.1 16-Oct-2008  haad file rump_net.c was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.6.4.2 23-Jul-2009  jym Sync with HEAD.
 1.6.4.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.6.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.6.2.1 29-Dec-2008  mjf file rump_net.c was added on branch mjf-devfs2 on 2009-01-17 13:29:37 +0000
 1.7.2.4 11-Mar-2010  yamt sync with head
 1.7.2.3 20-Jun-2009  yamt sync with head
 1.7.2.2 04-May-2009  yamt sync with head.
 1.7.2.1 18-Mar-2009  yamt file rump_net.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
 1.11.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.12.2.1 05-Mar-2011  rmind sync with head
 1.13.18.3 03-Dec-2017  jdolecek update from HEAD
 1.13.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.13.18.1 25-Feb-2013  tls resync with head
 1.13.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.8.1 23-Jan-2013  yamt sync with head
 1.16.2.1 18-May-2014  rmind sync with head
 1.17.6.3 05-Feb-2017  skrll Sync with HEAD
 1.17.6.2 22-Apr-2016  skrll Sync with HEAD
 1.17.6.1 19-Mar-2016  skrll Sync with HEAD
 1.19.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.19.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.20.6.1 16-Jan-2018  martin Pull up following revision(s) (requested by ozaki-r in ticket #498):
sys/kern/uipc_domain.c: revision 1.101
sys/sys/domain.h: revision 1.34
sys/rump/librump/rumpnet/rump_net.c: revision 1.21
Don't start callouts for domains before attaching domains on rump kernels
On rump kernels, the callouts for domains, pffasttimo and pfslowtimo, started
before domains were attached. Normally the callouts were dispatched after
domain attaches (initializations) finished, however, under load the callouts
could be executed prior to the attaches, resulting in that the callouts accessed
unallocated or uninitialized resources.
 1.11 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.10 22-Aug-2014  pooka branches: 1.10.2;
Nuke the DOMAINADD() macro and just call domain_attach(), now that things
work correctly that way.
 1.9 14-Feb-2014  pooka Register netisr's from component constructors instead of via a hardcoded
global list.
 1.8 14-Feb-2014  pooka g/c prototype of imaginary routine
 1.7 03-Jul-2013  pooka g/c dummyif, not useful these days
 1.6 14-Jan-2013  pooka branches: 1.6.2;
Don't use __weak_alias where the component framework is sufficient.
 1.5 01-Mar-2010  pooka branches: 1.5.10; 1.5.20;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.4 14-Oct-2009  pooka branches: 1.4.2;
Adjust rump sources for external/internal interfaces.
No functional change.
 1.3 28-May-2009  pooka Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.2 27-May-2009  pooka Add a dummyif, which doesn't actually traffic any cargo, but since
it has no backend it can always be attached and is therefore
convenient for testing ifconfig.
 1.1 15-Oct-2008  pooka branches: 1.1.2; 1.1.10; 1.1.12; 1.1.16;
Add the basic rump networking library, which provides e.g. sockets
and mbufs. This is required by all network-using rump applications.
 1.1.16.4 11-Mar-2010  yamt sync with head
 1.1.16.3 20-Jun-2009  yamt sync with head
 1.1.16.2 04-May-2009  yamt sync with head.
 1.1.16.1 15-Oct-2008  yamt file rump_net_private.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.1.12.1 23-Jul-2009  jym Sync with HEAD.
 1.1.10.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.10.1 15-Oct-2008  mjf file rump_net_private.h was added on branch mjf-devfs2 on 2009-01-17 13:29:37 +0000
 1.1.2.2 19-Oct-2008  haad Sync with HEAD.
 1.1.2.1 15-Oct-2008  haad file rump_net_private.h was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.4.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.5.20.3 03-Dec-2017  jdolecek update from HEAD
 1.5.20.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.20.1 25-Feb-2013  tls resync with head
 1.5.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.10.1 23-Jan-2013  yamt sync with head
 1.6.2.2 18-May-2014  rmind sync with head
 1.6.2.1 28-Aug-2013  rmind sync with head
 1.10.2.1 19-Mar-2016  skrll Sync with HEAD
 1.4 26-Jan-2016  pooka generate privhdrs to new location
 1.3 03-Jul-2013  pooka branches: 1.3.8;
Having a system-supplied function interface to create virt(4) is not
fully useful when the system doesn't supply anything to configure the
interface with. So remove rump_virtif_create(), that functionality
is now taken care of with ifcloner.
 1.2 20-Oct-2009  pooka branches: 1.2.4; 1.2.14; 1.2.24; 1.2.28;
add shmif_create
 1.1 14-Oct-2009  pooka Create rump public interfaces from description tables. This allows
us to control and wrap all entry points from "userspace" into rump.
This in turn is necessary for the upcoming rump cpu scheduler.

For each interface "foo" a public wrapper called "rump_foo" is
created. It calls the internal implementation "rumppriv_foo". In
case foo is to be called from inside of rump kernel space, the
private interface "rumppriv_foo" is used -- the userspace wrapper
prototypes are not even exported into the rump kernel namespace.
Needless to say, the rump kernel internal interfaces are not exported
for users.

Now, three classes of interfaces fight for control of rump:
+ the noble local control interfaces (which this commit addresses)
+ the insidious rump system calls (which are generated from syscalls.master)
+ and the evil vnode interfaces (which are generated from vnode_if.src)
 1.2.28.1 28-Aug-2013  rmind sync with head
 1.2.24.2 03-Dec-2017  jdolecek update from HEAD
 1.2.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.2 11-Mar-2010  yamt sync with head
 1.2.4.1 20-Oct-2009  yamt file rumpnet.ifspec was added on branch yamt-nfs-mp on 2010-03-11 15:04:38 +0000
 1.3.8.1 19-Mar-2016  skrll Sync with HEAD
 1.6 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.5 03-Jul-2013  pooka branches: 1.5.8;
regen
 1.4 20-Oct-2009  pooka branches: 1.4.4; 1.4.14; 1.4.24; 1.4.28;
regen
 1.3 15-Oct-2009  pooka regen: scheduling points in rump_pub wrappers
 1.2 14-Oct-2009  pooka regen: put all public interfaces created by ifspec into a rump_pub namespace
 1.1 14-Oct-2009  pooka generate rump local interfaces
 1.4.28.1 28-Aug-2013  rmind sync with head
 1.4.24.2 03-Dec-2017  jdolecek update from HEAD
 1.4.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.2 11-Mar-2010  yamt sync with head
 1.4.4.1 20-Oct-2009  yamt file rumpnet_if_priv.h was added on branch yamt-nfs-mp on 2010-03-11 15:04:39 +0000
 1.5.8.1 19-Mar-2016  skrll Sync with HEAD
 1.7 26-Jan-2016  pooka regen rump kernel interfaces for header change.
(they were already manually edited for a prior commit, so not much change)
 1.6 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.5 03-Jul-2013  pooka branches: 1.5.8;
regen
 1.4 20-Oct-2009  pooka branches: 1.4.4; 1.4.14; 1.4.24; 1.4.28;
regen
 1.3 15-Oct-2009  pooka regen: scheduling points in rump_pub wrappers
 1.2 14-Oct-2009  pooka regen: put all public interfaces created by ifspec into a rump_pub namespace
 1.1 14-Oct-2009  pooka generate rump local interfaces
 1.4.28.1 28-Aug-2013  rmind sync with head
 1.4.24.2 03-Dec-2017  jdolecek update from HEAD
 1.4.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.2 11-Mar-2010  yamt sync with head
 1.4.4.1 20-Oct-2009  yamt file rumpnet_if_wrappers.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:39 +0000
 1.5.8.1 19-Mar-2016  skrll Sync with HEAD
 1.10 20-May-2024  christos regen
 1.9 19-May-2024  christos regen
 1.8 29-Jul-2023  rin rump: Regen again to fix missing __kevent100 symbol.

makerumpsyscalls.sh requires rebuilt rump libraries installed in
/usr/lib or directory specified by its first argument.

Now, new failures observed for ATF after __kevent100 addition are
fixed at least for aarch64.
 1.7 10-Jul-2023  christos Regen
 1.6 27-May-2020  christos regen for lpathconf.
 1.5 22-Sep-2019  christos regen
 1.4 26-Jan-2016  pooka branches: 1.4.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 18-Jun-2015  pooka regen
 1.2 27-Apr-2014  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.10; 1.2.12;
regen
 1.1 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 6:

Generate component constructors which establish non-modular syscalls.
 1.2.12.2 19-Mar-2016  skrll Sync with HEAD
 1.2.12.1 22-Sep-2015  skrll Sync with HEAD
 1.2.10.3 03-Dec-2017  jdolecek update from HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 27-Apr-2014  tls file rumpnet_syscalls.c was added on branch tls-maxphys on 2014-08-20 00:04:42 +0000
 1.2.6.2 10-Aug-2014  tls Rebase.
 1.2.6.1 27-Apr-2014  tls file rumpnet_syscalls.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 27-Apr-2014  yamt file rumpnet_syscalls.c was added on branch yamt-pagecache on 2014-05-22 11:41:16 +0000
 1.2.2.2 18-May-2014  rmind sync with head
 1.2.2.1 27-Apr-2014  rmind file rumpnet_syscalls.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.4.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.1 19-Nov-2008  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.1.10.2 04-May-2009  yamt sync with head.
 1.1.10.1 19-Nov-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.1.6.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.6.1 19-Nov-2008  skrll file Makefile was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.1.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.4.1 19-Nov-2008  mjf file Makefile was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.52 22-Apr-2023  riastradh rumpvfs: Link in secmodel_extensions_vfs.c as intended, like kernel.

Forgot to commit this part when splitting up secmodel_extensions.c.
 1.51 22-Apr-2023  riastradh rump: Move vnode_if.c from rumpkern to rumpvfs.

This has become increasingly less of a `fully dynamic interface', and
the need for it in the rest of sys/kern/ has been obviated, so let's
put it where it belongs in rumpvfs.
 1.50 16-May-2020  christos Add ACL support for FFS. From FreeBSD.
 1.49 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.48 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.47 06-May-2015  hannken Remove miscfs/syncfs and

- move the syncer into kern/vfs_subr.c.

- change the syncer to process the mountlist and VFS_SYNC as appropriate.

- use an API for mount points similiar to the API for vnodes:
- vfs_syncer_add_to_worklist(struct mount *mp) to add
- vfs_syncer_remove_from_worklist(struct mount *mp) to remove a mount.

No objections on tech-kern@
 1.46 23-Apr-2015  pooka Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.
 1.45 22-Apr-2015  pooka Build compat code only when specified by RUMP_COMPAT
 1.44 22-Apr-2015  pooka rename rumpvfs/compat.c to rumpvfs/rumpvfs_compat50.c
 1.43 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.42 09-Nov-2014  pooka branches: 1.42.2;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.41 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 7:

Build component constructors which establish syscalls at boottime.
 1.40 27-Feb-2014  hannken branches: 1.40.2;
Currently dead vnodes still reside on the vnodelist of the file system
they have been removed from.

Create a "dead mount" that takes dead vnodes until they get freed.

Discussed on tech-kern.
 1.39 09-Dec-2013  pooka Now that Makefile.rump is included here first, do not override any
SRCS it adds. This is required for linksyms_sun.c used when linking
with the Solaris linker.
 1.38 09-Dec-2013  pooka Make ktrace a compile-time option
 1.37 09-Dec-2013  pooka Support ktrace for rump kernels.

Requested by Justin Cormack on rumpkernel-users.
 1.36 15-Mar-2013  pooka branches: 1.36.6;
Allow Makefile.rump to append to SRCS.
 1.35 13-May-2012  dholland branches: 1.35.2;
Revert previous. It seems that some or all makefiles in tests/ do not
bother to set DPADD and thereby fail silently on library changes.
 1.34 13-May-2012  dholland quota1_subr.c and vfs_quotactl.c are not needed here any more.
 1.33 08-May-2012  riastradh Implement a genfs_rename abstraction.

First major step in incrementally adapting all the file systems to a
saner rename VOP protocol.
 1.32 29-Jan-2012  dholland branches: 1.32.2;
Add vfs_quotactl.c. This is where filesystem-independent quota
handling will go.
 1.31 02-Apr-2011  rmind branches: 1.31.4; 1.31.8;
Split off parts of vfs_subr.c into vfs_vnode.c and vfs_mount.c modules.

No functional change. Discussed on tech-kern@.
 1.30 24-Mar-2011  bouyer Add a new libquota library, which contains some blocks to build and/or
parse quota plists; as well as a getfsquota() function to retrieve quotas
for a single id from a single filesystem (whatever filesystem this is:
a local quota-enabled fs or NFS). This is build on functions getufsquota()
(for local filesystems with UFS-like quotas) and getnfsquota();
which are also available to userland programs.
move functions from quota2_subr.c to libquota or libprop as appropriate,
and ajust in-tree quota tools.
move some declarations from kernel headers to either sys/quota.h or
quota/quota.h as appropriate. ufs/ufs/quota.h still installed because
it's needed by other installed ufs headers.
ufs/ufs/quota1.h still installed as a quick&dirty way to get a code
using the old quotactl() to compile (just include ufs/ufs/quota1.h instead of
ufs/ufs/quota.h - old code won't compile without this change and this is
on purpose).
Discussed on tech-kern@ and tech-net@ (long thread, but not much about
libquota itself ...)
 1.29 06-Mar-2011  bouyer merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.28 21-Apr-2010  pooka branches: 1.28.2; 1.28.4;
Move sys_module from vfs to kern -- while modules cannot be loaded,
there's not forbidden about querying the list of (builtin) modules
even when running without vfs.
 1.27 12-Apr-2010  pooka Support real file system transactions/suspension (vfs_trans.c)
instead of just stubbing it.
 1.26 29-Mar-2010  pooka Support fifofs in rump. Do not include it in rumpvfs directly,
since it involves some very non-fs'y components like sockets and
local domain networking. Also (for better or worse?), call it
rump*v*fs_fifofs instead of rumpfs_fifofs, since it does not really
provide a file system driver.

XXX: uses duplicate common symbols and functionality depends on
link order ... (but at least it works better than before this change)
 1.25 08-Mar-2010  pooka branches: 1.25.2;
mfs miniroot is mandatory
 1.24 16-Feb-2010  pooka Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.23 17-Dec-2009  pooka branches: 1.23.2;
Add devnull.c to sources (forgot to do it yesterday).
Thanks to gson for the ping.
 1.22 09-Dec-2009  pooka Since rumpfs is no longer a module, remove rump_module from the
list of sources. This, in a rather curious twist of linker magic,
broke anything using rump file systems when librumpvfs was compiled
with LIBDPLIBS pointing to librump.

Thanks to the several people who reported the problem, and especially
Arnaud Ysmal for noticing the paramount symptom that components
compiled in src/lib did not work while ones compiled in sys/rump/librump
did work.
 1.21 27-Nov-2009  pooka include subr_kobj_vfs
 1.20 26-Nov-2009  pooka For rumpfs, do mountroot instead of the bunch of homegrown hacks
currently there. Still needs a little massage to get the kernel
interfaces right and avoid copypaste especially from main().

Also, move it a bit more into the direction of a real file system
(finally!) by giving it a vfsops. Most ops are still unimplemented,
though.
 1.19 26-Nov-2009  pooka Include kern_module_vfs and the modctl() syscall. The modctl()
syscall is here because module loading is a vfs operation.
Theoretically you shouldn't be able to have modules without vfs
support.
 1.18 20-Oct-2009  pooka Actually, put uvm_readahead into rumpkern, since while it's
technically vfs stuff, sys_descrip depends on it and readahead
itself uses only the pager interface.
 1.17 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.16 07-Oct-2009  pooka Use uvm_readahead.c instead of null stubs.
 1.15 07-Oct-2009  pooka space -> tab in one entry for consistency
 1.14 04-Oct-2009  pooka Include firmload. Although it may be used by devices, it's pure
vfs in nature, and therefore it belongs here (can't load a firmware
from a file system without file system support, right?). Rename
rump_cwdi to cwdi0, since firmload depends on that name (naughty
firmload).
 1.13 06-Sep-2009  pooka Rename rump_dev_makenodes() to rump_vfs_makedevnodes() -- while it
will most likely be used devices, the implementation requires
services provided by vfs (mkdir, mknod).
 1.12 07-Aug-2009  pooka Move genfs_io.c from rump SRCS to genfs SRCS.
Aesthetic commit, no functional change.
 1.11 05-Aug-2009  pooka Use uvm_vnode.c instead of homerolled stuff.
 1.10 03-Aug-2009  pooka Support read/write in rumpblk via physio()
 1.9 10-Jun-2009  pooka libkern is fully included in rumpkern, no need for cherry-picking
modules elsewhere.
 1.8 09-Jun-2009  pooka Put some spunk into deadfs.
 1.7 22-May-2009  pooka Add handrolled stat30 compat syscalls for calling post-time_t rump
kernels from pre-time_t userlands.
 1.6 19-Mar-2009  pooka branches: 1.6.2;
Make it possible to mount a file system through the mount() system
call in addition to the old rump_mnt_mount(). Some issues remain
(but require more deeprooted changes):
* it is possible to mount only to /
* unmount needs MNT_FORCE due to the new fs being root and having
a bonus reference
* cwdi is not set (since there is no concept of a process)
 1.5 13-Jan-2009  pooka branches: 1.5.2; 1.5.4; 1.5.6;
include vfs_lockf.c
 1.4 13-Jan-2009  pooka Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.3 01-Jan-2009  pooka Purge multiple kernel opt files.
 1.2 19-Dec-2008  pooka include vfs_xattr.c
 1.1 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.5.6.2 23-Jul-2009  jym Sync with HEAD.
 1.5.6.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.5.4.3 28-Apr-2009  skrll Sync with HEAD.
 1.5.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.5.4.1 13-Jan-2009  skrll file Makefile.rumpvfs was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.5.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.5.2.1 13-Jan-2009  mjf file Makefile.rumpvfs was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.6.2.7 11-Aug-2010  yamt sync with head.
 1.6.2.6 11-Mar-2010  yamt sync with head
 1.6.2.5 16-Sep-2009  yamt sync with head
 1.6.2.4 19-Aug-2009  yamt sync with head.
 1.6.2.3 20-Jun-2009  yamt sync with head
 1.6.2.2 04-May-2009  yamt sync with head.
 1.6.2.1 19-Mar-2009  yamt file Makefile.rumpvfs was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.23.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.25.2.2 21-Apr-2011  rmind sync with head
 1.25.2.1 30-May-2010  rmind sync with head
 1.28.4.2 18-Feb-2011  bouyer quota2_subr.c is not used outside of ufs_quota2.c in kernel, so make it
compiled conditionally on QUOTA2 again
 1.28.4.1 15-Feb-2011  bouyer Implement COMPAT_50 quotactl(2)
 1.28.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.31.8.2 02-Jun-2012  mrg sync to latest -current.
 1.31.8.1 18-Feb-2012  mrg merge to -current.
 1.31.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.31.4.2 23-May-2012  yamt sync with head.
 1.31.4.1 17-Apr-2012  yamt sync with head
 1.32.2.1 02-Jul-2012  jdc Pull up revisions:
src/sys/conf/files revision 1.1050
src/sys/miscfs/genfs/genfs.h revision 1.30 via patch
src/sys/miscfs/genfs/genfs_rename.c revision 1.1 via patch
src/sys/rump/librump/rumpvfs/Makefile.rumpvfs revision 1.33
(requested by riastradh in ticket #286).

Implement a genfs_rename abstraction.

First major step in incrementally adapting all the file systems to a
saner rename VOP protocol.
 1.35.2.3 03-Dec-2017  jdolecek update from HEAD
 1.35.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.35.2.1 23-Jun-2013  tls resync from head
 1.36.6.1 18-May-2014  rmind sync with head
 1.40.2.1 10-Aug-2014  tls Rebase.
 1.42.2.4 19-Mar-2016  skrll Sync with HEAD
 1.42.2.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.42.2.2 06-Jun-2015  skrll Sync with HEAD
 1.42.2.1 06-Apr-2015  skrll Sync with HEAD
 1.11 22-Apr-2015  pooka rename rumpvfs/compat.c to rumpvfs/rumpvfs_compat50.c
 1.10 15-Aug-2013  pooka branches: 1.10.6;
remove includes which haven't been necessary since the cudgel war
 1.9 17-Jan-2011  pooka branches: 1.9.6; 1.9.16; 1.9.20;
use compat code from sys/compat/common
 1.8 04-Jan-2011  pooka branches: 1.8.2;
Add NetBSD 5 compat wrapping for *utimes()
 1.7 30-Aug-2010  pooka do 5.0 compat for fstat
 1.6 19-Jul-2010  pooka * move stat syscalls to newstyle compat
* implement compat for pollts
 1.5 14-Oct-2009  pooka branches: 1.5.2; 1.5.4;
"rumppriv" goes back to "rump" per internal interface naming change.
 1.4 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.3 24-May-2009  mlelstv branches: 1.3.2;
<sys/syscallargs.h> requires <sys/sched.h> to define cpuset_t.
 1.2 22-May-2009  pooka Add compat routines for vattr translation over time_t change.
 1.1 22-May-2009  pooka Add handrolled stat30 compat syscalls for calling post-time_t rump
kernels from pre-time_t userlands.
 1.3.2.5 09-Oct-2010  yamt sync with head
 1.3.2.4 11-Aug-2010  yamt sync with head.
 1.3.2.3 11-Mar-2010  yamt sync with head
 1.3.2.2 20-Jun-2009  yamt sync with head
 1.3.2.1 24-May-2009  yamt file compat.c was added on branch yamt-nfs-mp on 2009-06-20 07:20:36 +0000
 1.5.4.1 05-Mar-2011  rmind sync with head
 1.5.2.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.5.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.8.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.9.20.1 28-Aug-2013  rmind sync with head
 1.9.16.2 03-Dec-2017  jdolecek update from HEAD
 1.9.16.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.10.6.1 06-Jun-2015  skrll Sync with HEAD
 1.13 18-Jun-2019  kamil Drop unused retval pointer from do_sys_mknod{,at}()

No functional change intended.
 1.12 26-Jan-2016  pooka branches: 1.12.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.11 08-Jun-2015  pooka Allow device components to create symlinks in /dev
e.g. /dev/audio -> audio0

from Robert Millan <rmh@freebsd.org> via rumpkernel-users
 1.10 20-Jun-2014  pooka branches: 1.10.4;
Fix error return for rump_vfs_makeonedevnode()

from Ian Jackson <Ian.Jackson@eu.citrix.com>
 1.9 20-Mar-2014  christos branches: 1.9.2;
kill sprintf
 1.8 07-Mar-2013  pooka branches: 1.8.6;
Make the device node creation routines function pointers which default
to nullop without VFS. This relaxes the dependency between VFS and many
components, some of which can be used perfectly fine without VFS.
 1.7 21-Sep-2012  joerg Don't use NODEV when comparing against a major number as this is an
impossible type mismatch.
 1.6 10-Feb-2011  pooka branches: 1.6.4; 1.6.14;
Make it possible to specify a minor number for an autogenerated device node.
 1.5 30-Apr-2010  pooka branches: 1.5.2; 1.5.4;
Autogenerate /dev nodes. Use (recreate) the naming policy in
MAKEDEV. -- Not the famous irrational file system devfs, but an
incredible simulation.
 1.4 17-Dec-2009  pooka branches: 1.4.2; 1.4.4;
* implement rump_vfs_makeonedevnode(), where the interface for creating
multiple nodes doesn't make sense: e.g. /dev/null would've had to
be created with ("/dev/nul", 'l', 1)
* implement said /dev/null (just for show)
 1.3 03-Dec-2009  tron Make sure "error" gets initialised.
 1.2 03-Dec-2009  pooka * create /dev on the rump rootfs automatically
* make rump_vfs_makedevnodes() take a full basepath instead of hardcoding
an assumption that the device node is created in /dev
+ the caller is responsible that the directory the nodes are being
created in exists
 1.1 06-Sep-2009  pooka branches: 1.1.2;
Rename rump_dev_makenodes() to rump_vfs_makedevnodes() -- while it
will most likely be used devices, the implementation requires
services provided by vfs (mkdir, mknod).
 1.1.2.4 11-Aug-2010  yamt sync with head.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 16-Sep-2009  yamt sync with head
 1.1.2.1 06-Sep-2009  yamt file devnodes.c was added on branch yamt-nfs-mp on 2009-09-16 13:38:05 +0000
 1.4.4.2 05-Mar-2011  rmind sync with head
 1.4.4.1 30-May-2010  rmind sync with head
 1.4.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.5.4.1 17-Feb-2011  bouyer Sync with HEAD
 1.5.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.6.14.4 03-Dec-2017  jdolecek update from HEAD
 1.6.14.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.14.2 23-Jun-2013  tls resync from head
 1.6.14.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.6.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.4.1 30-Oct-2012  yamt sync with head
 1.8.6.1 18-May-2014  rmind sync with head
 1.9.2.1 10-Aug-2014  tls Rebase.
 1.10.4.2 19-Mar-2016  skrll Sync with HEAD
 1.10.4.1 22-Sep-2015  skrll Sync with HEAD
 1.12.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8 03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.7 26-Jan-2016  pooka branches: 1.7.2; 1.7.8; 1.7.16; 1.7.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.6 25-Jul-2014  dholland branches: 1.6.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.5 16-Mar-2014  dholland branches: 1.5.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.4 04-Apr-2013  pooka branches: 1.4.4;
create null devices
 1.3 10-Feb-2011  pooka branches: 1.3.4; 1.3.14;
support /dev/zero
 1.2 07-Jul-2010  pooka branches: 1.2.2; 1.2.4;
Borrow /dev/mem major from i386 for /dev/null and autogenerate node.
 1.1 17-Dec-2009  pooka branches: 1.1.2; 1.1.4; 1.1.6;
* implement rump_vfs_makeonedevnode(), where the interface for creating
multiple nodes doesn't make sense: e.g. /dev/null would've had to
be created with ("/dev/nul", 'l', 1)
* implement said /dev/null (just for show)
 1.1.6.1 05-Mar-2011  rmind sync with head
 1.1.4.3 11-Aug-2010  yamt sync with head.
 1.1.4.2 11-Mar-2010  yamt sync with head
 1.1.4.1 17-Dec-2009  yamt file devnull.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:39 +0000
 1.1.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.2.4.1 17-Feb-2011  bouyer Sync with HEAD
 1.2.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.3.14.3 03-Dec-2017  jdolecek update from HEAD
 1.3.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.14.1 23-Jun-2013  tls resync from head
 1.3.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.1 18-May-2014  rmind sync with head
 1.5.2.1 10-Aug-2014  tls Rebase.
 1.6.4.1 19-Mar-2016  skrll Sync with HEAD
 1.7.18.1 10-Jun-2019  christos Sync with HEAD
 1.7.16.1 06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.7.8.2 29-Apr-2017  pgoyette Remove more unnecessary #include for sys/localcount.h
 1.7.8.1 27-Apr-2017  pgoyette Restore all work from the former pgoyette-localcount branch (which is
now abandoned doe to cvs merge botch).

The branch now builds, and installs via anita. There are still some
problems (cgd is non-functional and all atf tests time-out) but they
will get resolved soon.
 1.7.2.3 26-Jul-2016  pgoyette Rename LOCALCOUNT_INITIALIZER to DEVSW_MODULE_INIT. This better describes
what we're doing, and why.
 1.7.2.2 19-Jul-2016  pgoyette Instead of repeatedly typing the conditional initialization of the
.d_localcount members in the various {b,c}devsw, define an initializer
macro and use it. This also removes the need for defining new symbols
for each 'struct localcount'.

As suggested by riastradh@
 1.7.2.1 18-Jul-2016  pgoyette Rump drivers are always installed via devsw_attach() so we need to
always allocate a 'struct localcount' for these drivers whenever they
are built as modules.
 1.3 12-Apr-2010  pooka Support real file system transactions/suspension (vfs_trans.c)
instead of just stubbing it.
 1.2 18-Dec-2008  pooka branches: 1.2.2; 1.2.4; 1.2.8; 1.2.10; 1.2.12;
__KERNEL_RCSID
 1.1 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.2.12.1 30-May-2010  rmind sync with head
 1.2.10.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.8.3 11-Aug-2010  yamt sync with head.
 1.2.8.2 04-May-2009  yamt sync with head.
 1.2.8.1 18-Dec-2008  yamt file fstrans_stub.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.2.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.2.4.1 18-Dec-2008  skrll file fstrans_stub.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.2.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.2.1 18-Dec-2008  mjf file fstrans_stub.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.14 06-Aug-2009  pooka Switch rump from the handwritten vnode pager to the standard kernel
vnode pager.

It would have been nice to keep a separate version:
* it has helped find file system bugs which the kernel pager
treated as non-errors
* it does not contain extra payload unnecessary in userspace

However, getting the details of the pager implementation correct
with all the flags, offsets and block/page size special cases is
*EXTREMELY* difficult (chuq > god).

On the plus side, LFS write now works for file data too instead of
just metadata. Also, maybe being able to singlestep the genfs
vnode pager in the comfort of userspace will allow more people to
understand how the behemoth functions.
 1.13 18-Apr-2009  pooka branches: 1.13.2;
* actually do syncer list add/remove instead of just pretending to
play VI_ONWORKLST games
* honor PGO_LOCKED in getpages wrt. to interlock (no, we don't have
a fault routine, so we don't need to seriously honor it)
 1.12 18-Apr-2009  pooka Move genfs_null_putpages() from genfs_io.c to genfs_vnops.c -- it does
not really do i/o.
 1.11 06-Apr-2009  pooka let drivers define DPRINTF
 1.10 26-Mar-2009  pooka Handle eof a bit differently. E.g. ffs and msdosfs seem to have
a quite different opinion about what happens in bmap beyond EOF,
so avoid calling it.
 1.9 23-Mar-2009  pooka Support async writes, can benefit mmio case.
 1.8 22-Mar-2009  pooka Remove clearly incorrect constraint: can't compare range against eof if
offset != start.
 1.7 05-Feb-2009  pooka branches: 1.7.2;
* fix a bug where we would try to lock a PG_FAKE page twice
* do not panic if VOP_STRATEGY fails. it's someone else's problem
* return the actual number of pages we provided, not just the ones
which contain data
* sprinkle some debug prints
 1.6 31-Jan-2009  pooka flags|=PG_WANTED instead of flags=PG_WANTED
 1.5 18-Dec-2008  pooka branches: 1.5.2; 1.5.4;
__KERNEL_RCSID
 1.4 16-Dec-2008  pooka Mark pages busy during VOP_PUTPAGES(). Deals with KASSERT in nfs write.
 1.3 16-Dec-2008  pooka Make rumpflushva flush only the atop info for a certain uvm object.
Better, but still not completely race-free (if two threads call
RUMP_VOP_PUTPAGES() directly for the same vm object).
 1.2 21-Nov-2008  pooka Make sure we write a positive length of data.
 1.1 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.5.4.4 28-Apr-2009  skrll Sync with HEAD.
 1.5.4.3 03-Mar-2009  skrll Sync with HEAD.
 1.5.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.5.4.1 18-Dec-2008  skrll file genfs_io.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.5.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.5.2.1 18-Dec-2008  mjf file genfs_io.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.7.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.13.2.3 19-Aug-2009  yamt sync with head.
 1.13.2.2 04-May-2009  yamt sync with head.
 1.13.2.1 18-Apr-2009  yamt file genfs_io.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.4 12-Jun-2015  dholland branches: 1.4.16;
Punctuate properly.
 1.3 28-Apr-2015  prlw1 Fix typos
 1.2 18-Mar-2015  pooka "rump" -> "rump kernel" police
 1.1 09-Nov-2014  pooka branches: 1.1.2;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.1.2.3 22-Sep-2015  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.4.16.2 03-Dec-2017  jdolecek update from HEAD
 1.4.16.1 12-Jun-2015  jdolecek file rump_etfs.3 was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.97 23-Sep-2023  ad Repply this change with a couple of bugs fixed:

- Do away with separate pool_cache for some kernel objects that have no special
requirements and use the general purpose allocator instead. On one of my
test systems this makes for a small (~1%) but repeatable reduction in system
time during builds presumably because it decreases the kernel's cache /
memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
 1.96 12-Sep-2023  ad Back out recent change to replace pool_cache with then general allocator.
Will return to this when I have time again.
 1.95 10-Sep-2023  ad - Do away with separate pool_cache for some kernel objects that have no special
requirements and use the general purpose allocator instead. On one of my
test systems this makes for a small (~1%) but repeatable reduction in system
time during builds presumably because it decreases the kernel's cache /
memory bandwidth footprint a little.
- vfs_lockf: cache a pointer to the uidinfo and put mutex in the data segment.
 1.94 26-Oct-2022  riastradh sys/filedesc.h: New home for extern cwdi0.
 1.93 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.92 20-Apr-2020  ad Rename buf_syncwait() to vfs_syncwait(), and have it wait on v_numoutput
rather than BC_BUSY. Removes the dependency on bufhash.
 1.91 13-Apr-2020  ad Replace most uses of vp->v_usecount with a call to vrefcnt(vp), a function
that hides the details and does atomic_load_relaxed(). Signature matches
FreeBSD.
 1.90 23-Feb-2020  ad branches: 1.90.4;
UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.89 17-Jan-2020  ad VFS_VGET(), VFS_ROOT(), VFS_FHTOVP(): give them a "int lktype" argument, to
allow us to get shared locks (or no lock) on the returned vnode. Matches
FreeBSD.
 1.88 20-Feb-2019  hannken branches: 1.88.6;
Attach "mnt_transinfo" to "dead_rootmount" so every mount has a
valid "mnt_transinfo" and remove now unneeded flag IMNT_HAS_TRANS.

Run fstrans_start()/fstrans_done() on dead_rootmount if FSTRANS_DEAD_ENABLED.
Should become the default for DIAGNOSTIC in the future.
 1.87 01-Apr-2017  riastradh branches: 1.87.14;
KASSERT(mutex_owned(vp->v_interlock)) in vnode iterator selector.
 1.86 17-Nov-2016  pgoyette branches: 1.86.2;
In addition to initializing the bufq subsystem, we also need to init
the individual strategy modules.
 1.85 16-Nov-2016  pgoyette Initialize the bufq stuff for rump, too.

This should fix the large number of tests that recently started to fail.
 1.84 26-Jan-2016  pooka branches: 1.84.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.83 22-Jul-2015  hannken rump_vfs_mount_print: use vfs_vnode_iterator to print attached vnodes.
 1.82 06-May-2015  hannken Remove miscfs/syncfs and

- move the syncer into kern/vfs_subr.c.

- change the syncer to process the mountlist and VFS_SYNC as appropriate.

- use an API for mount points similiar to the API for vnodes:
- vfs_syncer_add_to_worklist(struct mount *mp) to add
- vfs_syncer_remove_from_worklist(struct mount *mp) to remove a mount.

No objections on tech-kern@
 1.81 17-Nov-2014  pooka branches: 1.81.2;
Release all hypervisor-level resources for rump_etfs paths when the
rump kernel is halted.

Allows a Xen domU to not complain after it was shut down, or something
like that. Requested by Martin Lucina.
 1.80 23-May-2014  pooka Permissions work better if you specify them in octal ...

Also, do an explicit chmod of /tmp to account for cmask getting in the way.
 1.79 22-May-2014  pooka create /tmp at bootstrap, default TMPDIR used by some programs (e.g. ed)
 1.78 25-Apr-2014  pooka gardenize: function calls over #ifdefs
 1.77 10-Jun-2013  pooka branches: 1.77.2; 1.77.6;
create /dev with 0755 instead of 0777 (though it's now effectively the
same due to cmask)
 1.76 29-Apr-2013  pooka g/c unused
 1.75 29-Apr-2013  pooka Replace the various "get info from hypervisor" interfaces with one
unified rumpuser_getparam(), and make it return a plist. The
contents can come e.g. from the env or a config file. Make
identifiers starting with an underscore denote system identifiers
which must be implemented by hypervisor. (yea, j/k about the plist bit)
 1.74 29-Apr-2013  pooka Rework how the bio hypercalls work, part 1/n:

Reduce the set of hypercalls to one: "do block i/o". This not only
eliminates a lot of pseudo-duplicate code, it also gives the
hypervisor a lot more freedom on how to optimize the i/o.
 1.73 04-Apr-2013  pooka create /dev/null only after it's possible to create /dev/null
 1.72 03-Apr-2013  pooka Don't create a huge number of unnecessary device nodes automatically.
Creating them takes 70-or-so ms on a RPi, and can almost double the
bootstrap time of a rump kernel on that hardware.
 1.71 14-Jan-2013  pooka Don't use __weak_alias where the component framework is sufficient.
 1.70 22-Nov-2012  pooka satisfy the slightly more picky clang
 1.69 18-Nov-2012  pooka Finally remove the "temporary" __VTYPE_DEFINED stuff I added >5 years ago.
 1.68 05-Nov-2012  dholland Disentangle the namecache from the internals of namei.

- Move the namecache's hash computation to inside the namecache code,
instead of being spread out all over the place. Remove cn_hash from
struct componentname and delete all uses of it.

- It is no longer necessary (if it ever was) for cache_lookup and
cache_lookup_raw to clear MAKEENTRY from cnp->cn_flags for the cases
that cache_enter already checks for.

- Rearrange the interface of cache_lookup (and cache_lookup_raw) to
make it somewhat simpler, to exclude certain nonexistent error
conditions, and (most importantly) to make it not require write access
to cnp->cn_flags.

This change requires a kernel bump.
 1.67 04-Jul-2011  mrg branches: 1.67.2; 1.67.12;
don't define multiple cwdi0's, mark this one as extern.

fixes various mips build issues i've seen with both GCC 4.1 and 4.5.
 1.66 12-Jun-2011  rmind Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.65 07-Jan-2011  pooka branches: 1.65.6;
Censor no-longer-relevant flags which may be passed down from
somewhere (e.g. an older kernel). We really can't do anything
about new flags or flags changing meaning, though.
 1.64 06-Jan-2011  pooka cwdi0 lock is now initialized in proc0_init()
 1.63 30-Nov-2010  pooka remove unnecessary interface
 1.62 30-Nov-2010  pooka fix broken rototill
 1.61 30-Nov-2010  dholland SAVENAME and HASBUF namei flags have been removed; update rumpvfs accordingly.
 1.60 21-Nov-2010  pooka I can't think of any reason why a rump kernel has to allow vfsusermount
by default, nor do I remember why i originally added it in 2008
==> remove.
 1.59 19-Nov-2010  dholland Introduce struct pathbuf. This is an abstraction to hold a pathname
and the metadata required to interpret it. Callers of namei must now
create a pathbuf and pass it to NDINIT (instead of a string and a
uio_seg), then destroy the pathbuf after the namei session is
complete.

Update all namei call sites accordingly. Add a pathbuf(9) man page and
update namei(9).

The pathbuf interface also now appears in a couple of related
additional places that were passing string/uio_seg pairs that were
later fed into NDINIT. Update other call sites accordingly.
 1.58 07-Sep-2010  pooka Make the Diabolical (Page)Daemon Director drain vfs buffers when
we are short of memory.

There are still some funnies left to iron out. For example, with
a certain file system / memory size configuration it's still not
possible to create enough files to make the file system run out of
inodes before the kernel runs out of memory. Also, with some other
configurations disk access slows down gargantually (though i'm sure
there are >0 buffers available). Anyway, it ~works for now and
it's by no means worse than what it was before.
 1.57 07-Sep-2010  pooka Retire the prehistoric chroot/cwd interfaces now that there is a
process model in rump.
 1.56 30-Jun-2010  pooka Run vfs component constructors.
 1.55 24-Jun-2010  hannken Clean up vnode lock operations pass 2:

VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.

Welcome to 5.99.32.

Discussed on tech-kern.
 1.54 08-Jun-2010  pooka The previous revision worked brilliantly if all you wanted to test
was autoload *not* working with an alternate path. This revision
make the code double as good in the sense that it now works also
in case you *do* want it to work.
 1.53 08-Jun-2010  pooka Allow to set a non-standard module_base for host kernel module loading.
 1.52 26-May-2010  pooka Add public namespace helper routine for dumping info on mountpoints.
 1.51 20-May-2010  pooka open VFS_EXTATTRCTL to user namespace
 1.50 11-May-2010  pooka Set default number of vnodes to 1k instead of 64k: a large default
reserves a large amount of memory by default and this is not
desirable in a rump kernel where the typical usage is minimal.
Maybe I should write a few lines to autoscale desiredvnodes up to
a hard limit after the soft limit is reached?
 1.49 01-May-2010  pooka cleanup non-used code (superceded by rump_printevcnts)
 1.48 30-Apr-2010  pooka Autogenerate /dev nodes. Use (recreate) the naming policy in
MAKEDEV. -- Not the famous irrational file system devfs, but an
incredible simulation.
 1.47 26-Apr-2010  pooka Register module_base as an etfs recursive subdirectory. This means
that rump will autoload kernel modules from the host
/stand/arch/vers/modules directory.
 1.46 21-Apr-2010  pooka Reduce #ifdef spew by attaching wapbl as a module.
(no, it's still too ifdef-ridden to be able to actually do anything
useful and module-like like load into any kernel)
 1.45 12-Apr-2010  pooka Support real file system transactions/suspension (vfs_trans.c)
instead of just stubbing it.
 1.44 26-Mar-2010  pooka rootfstype is not a vfs stub, so it doesn't belong in vfs_stubs
 1.43 05-Mar-2010  pooka branches: 1.43.2;
Use improved kernel module interfaces: instead of adding + loading
modules in bootstrap, just add them. Load them later the same way
as the kernel does: module_init_class().

Change the signature of rump_module_init() to take a vector instead
of just one module. All modules in a DSO should be init'd at the
same time because they might depend on each other, and code outside
the rump kernel cannot know which way. (binary kernel modules are
still loaded with rump_sys_modctl() the usual way).
 1.42 17-Dec-2009  pooka branches: 1.42.2;
* implement rump_vfs_makeonedevnode(), where the interface for creating
multiple nodes doesn't make sense: e.g. /dev/null would've had to
be created with ("/dev/nul", 'l', 1)
* implement said /dev/null (just for show)
 1.41 03-Dec-2009  pooka * create /dev on the rump rootfs automatically
* make rump_vfs_makedevnodes() take a full basepath instead of hardcoding
an assumption that the device node is created in /dev
+ the caller is responsible that the directory the nodes are being
created in exists
 1.40 03-Dec-2009  pooka Call spec_init() to avoid device open lossage.
 1.39 03-Dec-2009  pooka Decide it's not worth the fuss to have rumpfs as a module and just
hardcode attach into rump_vfs_init(). Saves us from a lot of
pingpong init bouncing from one component to another to get the order
right.
 1.38 01-Dec-2009  pooka call cache_cpu_init() for all cpus
 1.37 27-Nov-2009  pooka Move rootfs-related init from init_main() to vfs_mountroot().
Reduces code re-written in rump.
 1.36 26-Nov-2009  pooka Make sure rumpfs is attached on all host platforms.
 1.35 26-Nov-2009  pooka For rumpfs, do mountroot instead of the bunch of homegrown hacks
currently there. Still needs a little massage to get the kernel
interfaces right and avoid copypaste especially from main().

Also, move it a bit more into the direction of a real file system
(finally!) by giving it a vfsops. Most ops are still unimplemented,
though.
 1.34 19-Nov-2009  pooka Create async i/o "interrupt" thread from within the kernel so that
it gets a kernel thread context.
 1.33 15-Oct-2009  pooka rump_cpu is now a pointer
 1.32 14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.31 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.30 09-Oct-2009  pooka Provide an interface for reboot.
 1.29 07-Oct-2009  pooka use vref() for increasing reference count instead of homegrown brilliance
 1.28 07-Oct-2009  pooka g/c some prehistoric interfaces which have been superceded by others.
 1.27 06-Oct-2009  pooka Give a p2k node an internal state. This allows us to do proper
reference counting and not release nodes based just on puffs'
impression of if they are free.

This also allows us to reclaim vnodes already in inactive if the
file system so desires. Some file systems, most notably ffs, change
file state already in inactive. This could lead to a deadlock in
the middle of inactive and reclaim if some other puffs operation
was processed in between (as exposed by haad's open(at) test
program).

Also, properly thread the componentname from lookup to the actual
vnode operation. This required the changes the rump componentname
routines. Yes, the rename case is truly mindbogglingly disgusting.
Puke for yourself.
 1.26 04-Oct-2009  pooka Include firmload. Although it may be used by devices, it's pure
vfs in nature, and therefore it belongs here (can't load a firmware
from a file system without file system support, right?). Rename
rump_cwdi to cwdi0, since firmload depends on that name (naughty
firmload).
 1.25 02-Oct-2009  elad First part of secmodel cleanup and other misc. changes:

- Separate the suser part of the bsd44 secmodel into its own secmodel
and directory, pending even more cleanups. For revision history
purposes, the original location of the files was

src/sys/secmodel/bsd44/secmodel_bsd44_suser.c
src/sys/secmodel/bsd44/suser.h

- Add a man-page for secmodel_suser(9) and update the one for
secmodel_bsd44(9).

- Add a "secmodel" module class and use it. Userland program and
documentation updated.

- Manage secmodel count (nsecmodels) through the module framework.
This eliminates the need for secmodel_{,de}register() calls in
secmodel code.

- Prepare for secmodel modularization by adding relevant module bits.
The secmodels don't allow auto unload. The bsd44 secmodel depends
on the suser and securelevel secmodels. The overlay secmodel depends
on the bsd44 secmodel. As the module class is only cosmetic, and to
prevent ambiguity, the bsd44 and overlay secmodels are prefixed with
"secmodel_".

- Adapt the overlay secmodel to recent changes (mainly vnode scope).

- Stop using link-sets for the sysctl node(s) creation.

- Keep sysctl variables under nodes of their relevant secmodels. In
other words, don't create duplicates for the suser/securelevel
secmodels under the bsd44 secmodel, as the latter is merely used
for "grouping".

- For the suser and securelevel secmodels, "advertise presence" in
relevant sysctl nodes (sysctl.security.models.{suser,securelevel}).

- Get rid of the LKM preprocessor stuff.

- As secmodels are now modules, there's no need for an explicit call
to secmodel_start(); it's handled by the module framework. That
said, the module framework was adjusted to properly load secmodels
early during system startup.

- Adapt rump to changes: Instead of using empty stubs for securelevel,
simply use the suser secmodel. Also replace secmodel_start() with a
call to secmodel_suser_start().

- 5.99.20.

Testing was done on i386 ("release" build). Spearated module_init()
changes were tested on sparc and sparc64 as well by martin@ (thanks!).

Mailing list reference:

http://mail-index.netbsd.org/tech-kern/2009/09/25/msg006135.html
 1.24 03-Aug-2009  pooka * get rid of the old fakeblk registration interface. Instead,
introduce a new and improved "etfs" interface, which can be used
to register host files accessible from rump fs namespace. This
new interface is not restriced to block devices, and neither does
it require the same pathname in host namespace and rump namespace.
Therefore, the same host file can be represented both as a char
and block device in rump namespace.

* adjust rumpblk to make the above possible

* improve rumpfs: nodes are now created properly and not implicitly
tied to the vnode lifecycle
 1.23 29-Jun-2009  dholland Another namei_simple like the previous ones; was added after I did the
initial sweep and I guess I missed it while merging.
 1.22 22-May-2009  pooka fix __KERNEL_RCSID
 1.21 04-May-2009  pooka Nuke RUMPCN_HASNTBUF. The inspiration behind it must've been ... deep.
 1.20 03-May-2009  pooka branches: 1.20.2;
Rename rump_cred_destroy() to rump_cred_put() -- they've been
refcounted since forever now.
 1.19 03-May-2009  pooka Add rump_vfs_getmp(), which returns struct mount for a given path.
(yes, it does not take a reference to the mountpoint)
 1.18 01-May-2009  pooka in case of error, return instead of continuing
 1.17 29-Apr-2009  pooka Use cwdinit() for proc0's cwdi.
 1.16 26-Apr-2009  pooka * set syncdelay to 0 only if we don't have a syncer thread
* add some #if0'd debug code to unmount for printing event counters
 1.15 18-Apr-2009  pooka If running in multithreaded mode, create sched_sync thread.
 1.14 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.13 22-Feb-2009  ad PR kern/26878 FFSv2 + softdep = livelock (no free ram)
PR kern/16942 panic with softdep and quotas
PR kern/19565 panic: softdep_write_inodeblock: indirect pointer #1 mismatch
PR kern/26274 softdep panic: allocdirect_merge: ...
PR kern/26374 Long delay before non-root users can write to softdep partitions
PR kern/28621 1.6.x "vp != NULL" panic in ffs_softdep.c:4653 while unmounting a softdep (+quota) filesystem
PR kern/29513 FFS+Softdep panic with unfsck-able file-corruption
PR kern/31544 The ffs softdep code appears to fail to write dirty bits to disk
PR kern/31981 stopping scsi disk can cause panic (softdep)
PR kern/32116 kernel panic in softdep (assertion failure)
PR kern/32532 softdep_trackbufs deadlock
PR kern/37191 softdep: locking against myself
PR kern/40474 Kernel panic after remounting raid root with softdep

Retire softdep, pass 2. As discussed and later formally announced on the
mailing lists.
 1.12 06-Feb-2009  pooka branches: 1.12.2;
Rip out the rwlock spl emulation code. It never did anything useful
except keep my feet warm by consuming an insane amount of cpu
cycles -- in rump our current "cpu" context is never interrupted
& we have MULTIPROCESSOR.

(itch i'm scratching: it made the networking stack 10-20% slower.
this is one of the places where fast code actually matters)
 1.11 13-Jan-2009  pooka branches: 1.11.2; 1.11.4;
lf_init()
 1.10 13-Jan-2009  pooka misc cleanup, mainly header polish
 1.9 13-Jan-2009  pooka Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.8 31-Dec-2008  pooka yank debug printf from previous
 1.7 31-Dec-2008  pooka Reset proc0 cwdi after unmount. Makes is possible to mount/unmount/mount
in one process.
(XXX: this code is still horrible)

problem reported by stacktic
 1.6 29-Dec-2008  pooka Register a dummy block device for rump, since some file systems do
a sanity check to see if the block device exists. This dummy block
device should eventually replace rump specfs.
 1.5 18-Dec-2008  pooka __KERNEL_RCSID
 1.4 27-Nov-2008  pooka * hang all mountpoints from rootvnode in our virtual mount hierarchy
* set VV_ROOT for the rootvnode to make getcwd realize it has met
its journey's end
 1.3 25-Nov-2008  pooka Take reference for proc0 rootdir vnode.
 1.2 21-Nov-2008  pooka rump_vfs_load() is really rump_module_load(), so call it that and
move it from rumpvfs to rumpkern.
 1.1 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.11.4.4 28-Apr-2009  skrll Sync with HEAD.
 1.11.4.3 03-Mar-2009  skrll Sync with HEAD.
 1.11.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.11.4.1 13-Jan-2009  skrll file rump_vfs.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.11.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.11.2.1 13-Jan-2009  mjf file rump_vfs.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.12.2.2 23-Jul-2009  jym Sync with HEAD.
 1.12.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.20.2.9 09-Oct-2010  yamt sync with head
 1.20.2.8 11-Aug-2010  yamt sync with head.
 1.20.2.7 11-Mar-2010  yamt sync with head
 1.20.2.6 19-Aug-2009  yamt sync with head.
 1.20.2.5 18-Jul-2009  yamt sync with head.
 1.20.2.4 20-Jun-2009  yamt sync with head
 1.20.2.3 16-May-2009  yamt sync with head
 1.20.2.2 04-May-2009  yamt sync with head.
 1.20.2.1 03-May-2009  yamt file rump_vfs.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.42.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.42.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.42.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.43.2.4 05-Mar-2011  rmind sync with head
 1.43.2.3 03-Jul-2010  rmind sync with head
 1.43.2.2 30-May-2010  rmind sync with head
 1.43.2.1 16-Mar-2010  rmind Change struct uvm_object::vmobjlock to be dynamically allocated with
mutex_obj_alloc(). It allows us to share the locks among UVM objects.
 1.65.6.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.67.12.5 03-Dec-2017  jdolecek update from HEAD
 1.67.12.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.67.12.3 23-Jun-2013  tls resync from head
 1.67.12.2 25-Feb-2013  tls resync with head
 1.67.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.67.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.67.2.2 23-Jan-2013  yamt sync with head
 1.67.2.1 16-Jan-2013  yamt sync with (a bit old) head
 1.77.6.1 10-Aug-2014  tls Rebase.
 1.77.2.1 18-May-2014  rmind sync with head
 1.81.2.5 28-Aug-2017  skrll Sync with HEAD
 1.81.2.4 05-Dec-2016  skrll Sync with HEAD
 1.81.2.3 19-Mar-2016  skrll Sync with HEAD
 1.81.2.2 22-Sep-2015  skrll Sync with HEAD
 1.81.2.1 06-Jun-2015  skrll Sync with HEAD
 1.84.2.2 26-Apr-2017  pgoyette Sync with HEAD
 1.84.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.86.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.87.14.3 21-Apr-2020  martin Sync with HEAD
 1.87.14.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.87.14.1 10-Jun-2019  christos Sync with HEAD
 1.88.6.2 29-Feb-2020  ad Sync with head.
 1.88.6.1 17-Jan-2020  ad Sync with head.
 1.90.4.2 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.90.4.1 20-Apr-2020  bouyer Sync with HEAD
 1.20 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.19 08-Jun-2015  pooka Allow device components to create symlinks in /dev
e.g. /dev/audio -> audio0

from Robert Millan <rmh@freebsd.org> via rumpkernel-users
 1.18 17-Nov-2014  pooka branches: 1.18.2;
Release all hypervisor-level resources for rump_etfs paths when the
rump kernel is halted.

Allows a Xen domU to not complain after it was shut down, or something
like that. Requested by Martin Lucina.
 1.17 07-Mar-2013  pooka Make the device node creation routines function pointers which default
to nullop without VFS. This relaxes the dependency between VFS and many
components, some of which can be used perfectly fine without VFS.
 1.16 14-Jan-2013  pooka Don't use __weak_alias where the component framework is sufficient.
 1.15 27-Sep-2011  christos branches: 1.15.2; 1.15.12;
define RUMPFS_MAXNAMLEN and use it.
 1.14 07-Sep-2010  pooka Make the Diabolical (Page)Daemon Director drain vfs buffers when
we are short of memory.

There are still some funnies left to iron out. For example, with
a certain file system / memory size configuration it's still not
possible to create enough files to make the file system run out of
inodes before the kernel runs out of memory. Also, with some other
configurations disk access slows down gargantually (though i'm sure
there are >0 buffers available). Anyway, it ~works for now and
it's by no means worse than what it was before.
 1.13 15-Jun-2010  pooka Implement rumpblk_deregister, for unregistering fake block devices
(from etfs_deregister). Prompted by use case from njoly.
 1.12 30-Apr-2010  pooka Autogenerate /dev nodes. Use (recreate) the naming policy in
MAKEDEV. -- Not the famous irrational file system devfs, but an
incredible simulation.
 1.11 14-Apr-2010  pooka Use reserved major for rumpblk instead of picking something which
may conflict.
 1.10 17-Dec-2009  pooka branches: 1.10.2; 1.10.4;
* implement rump_vfs_makeonedevnode(), where the interface for creating
multiple nodes doesn't make sense: e.g. /dev/null would've had to
be created with ("/dev/nul", 'l', 1)
* implement said /dev/null (just for show)
 1.9 03-Dec-2009  pooka Decide it's not worth the fuss to have rumpfs as a module and just
hardcode attach into rump_vfs_init(). Saves us from a lot of
pingpong init bouncing from one component to another to get the order
right.
 1.8 26-Nov-2009  pooka For rumpfs, do mountroot instead of the bunch of homegrown hacks
currently there. Still needs a little massage to get the kernel
interfaces right and avoid copypaste especially from main().

Also, move it a bit more into the direction of a real file system
(finally!) by giving it a vfsops. Most ops are still unimplemented,
though.
 1.7 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.6 09-Oct-2009  pooka Provide an interface for reboot.
 1.5 07-Oct-2009  pooka Allow to set size and host file offset for etfs files and rumpblk.
 1.4 06-Sep-2009  pooka Rename rump_dev_makenodes() to rump_vfs_makedevnodes() -- while it
will most likely be used devices, the implementation requires
services provided by vfs (mkdir, mknod).
 1.3 03-Aug-2009  pooka * get rid of the old fakeblk registration interface. Instead,
introduce a new and improved "etfs" interface, which can be used
to register host files accessible from rump fs namespace. This
new interface is not restriced to block devices, and neither does
it require the same pathname in host namespace and rump namespace.
Therefore, the same host file can be represented both as a char
and block device in rump namespace.

* adjust rumpblk to make the above possible

* improve rumpfs: nodes are now created properly and not implicitly
tied to the vnode lifecycle
 1.2 13-Jan-2009  pooka branches: 1.2.2; 1.2.4; 1.2.8;
Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.1 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.2.8.7 09-Oct-2010  yamt sync with head
 1.2.8.6 11-Aug-2010  yamt sync with head.
 1.2.8.5 11-Mar-2010  yamt sync with head
 1.2.8.4 16-Sep-2009  yamt sync with head
 1.2.8.3 19-Aug-2009  yamt sync with head.
 1.2.8.2 04-May-2009  yamt sync with head.
 1.2.8.1 13-Jan-2009  yamt file rump_vfs_private.h was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.2.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.2.4.1 13-Jan-2009  skrll file rump_vfs_private.h was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.2.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.2.1 13-Jan-2009  mjf file rump_vfs_private.h was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.10.4.3 05-Mar-2011  rmind sync with head
 1.10.4.2 03-Jul-2010  rmind sync with head
 1.10.4.1 30-May-2010  rmind sync with head
 1.10.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.10.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.10.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.15.12.3 03-Dec-2017  jdolecek update from HEAD
 1.15.12.2 23-Jun-2013  tls resync from head
 1.15.12.1 25-Feb-2013  tls resync with head
 1.15.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.15.2.1 23-Jan-2013  yamt sync with head
 1.18.2.2 19-Mar-2016  skrll Sync with HEAD
 1.18.2.1 22-Sep-2015  skrll Sync with HEAD
 1.64 07-Jul-2016  msaitoh branches: 1.64.2; 1.64.8;
KNF. Remove extra spaces. No functional change.
 1.63 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.62 08-Dec-2015  christos fix struct name
 1.61 08-Dec-2015  christos Replace DIOCGPART -> DIOCGPARTINFO which returns the data needed instead of
pointers.
 1.60 26-May-2015  pooka implement DIOCGMEDIASIZE, from Martin Lucina
 1.59 02-Jan-2015  christos We have three sets of DTYPE_ constants in the kernel:
altq Drop Type
disklabel Disk Type
file Descriptor Type
(not to mention constants that contain the string DTYPE).
Let's make them two, by changing the disklabel one to be DisK TYPE since the
other disklabel constants seem to do that. Not many userland programs use
these constants (and the ones that they do are mostly in ifdefs). They will
be fixed shortly.
 1.58 17-Nov-2014  pooka branches: 1.58.2;
Release all hypervisor-level resources for rump_etfs paths when the
rump kernel is halted.

Allows a Xen domU to not complain after it was shut down, or something
like that. Requested by Martin Lucina.
 1.57 25-Jul-2014  dholland Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.56 25-Jul-2014  dholland Add d_discard to all struct bdevsw instances I could find.

I've set them all to nodiscard. Some of them (wd, dk, vnd, ld,
raidframe, maybe cgd) should be implemented for real.
 1.55 16-Mar-2014  dholland branches: 1.55.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.54 30-Apr-2013  pooka branches: 1.54.4;
Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.53 29-Apr-2013  pooka g/c unused
 1.52 29-Apr-2013  pooka Replace the various "get info from hypervisor" interfaces with one
unified rumpuser_getparam(), and make it return a plist. The
contents can come e.g. from the env or a config file. Make
identifiers starting with an underscore denote system identifiers
which must be implemented by hypervisor. (yea, j/k about the plist bit)
 1.51 29-Apr-2013  pooka The fsync hypercall is now used only with close, so get rid of it.
rumpuser_bio() should do the necessary syncing.
 1.50 29-Apr-2013  pooka rework bio hypercalls, part 2:

Nuke all the policy hacks (r/w, mmap, directio) from the paravirtualized
block driver and let the hypervisor decide how it wants to optimize
the I/O. It can prepare for this based on if a file is opened with
the RUMPUSER_OPEN_BIO flag.

mmap was not faster than r/w except in a niche case (yes, it made a
good measurement), and directio was never on by default since
it was tricky at best to decide on the kernel side of things if
directio will do the right thing.
 1.49 29-Apr-2013  pooka Rework how the bio hypercalls work, part 1/n:

Reduce the set of hypercalls to one: "do block i/o". This not only
eliminates a lot of pseudo-duplicate code, it also gives the
hypervisor a lot more freedom on how to optimize the i/o.
 1.48 14-Sep-2012  pooka Do not assume that O_FOO flags have matching values in the rump kernel
and hypervisor.
 1.47 19-Nov-2011  tls branches: 1.47.8;
First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.46 03-Feb-2011  pooka branches: 1.46.4;
fix KASSERT snafu. spotted by tests, as usual.
 1.45 03-Feb-2011  pooka * open backend device once when the rumpblk is registered instead of
every time the virtual device is opened. this takes care of e.g.
a midlife chmod crisis
* when mapping initial windows, consistently look at host size and
host offset. otherwise we might end up in a situation with 0
initial windows mapped, and that will cause a crash later.
 1.44 03-Feb-2011  pooka * fix blkno->offset calculation for simulated non-512 devices
* allows transfers only in multiples of block size
* g/c unused struct member
 1.43 02-Feb-2011  pooka never open rumpblk backend with O_TRUNC
XXX: the rumpuser_open interface needs a beating
 1.42 06-Sep-2010  pooka branches: 1.42.2; 1.42.4;
Broadcast instead of signal since the condition is a boolean.
 1.41 21-Jun-2010  pooka Calculate memory mapping size based on underlying file size, not
our window to it. This fixes cases like opening a window at offsets
[8,32] to a file, which would cause host file offset [0,32-8] to
be mapped, i.e. [0,16] inside the window. Obviously, access to
the entire in-window [0,24] range should have been mapped (and
after this fix it is).
 1.40 15-Jun-2010  pooka Implement rumpblk_deregister, for unregistering fake block devices
(from etfs_deregister). Prompted by use case from njoly.
 1.39 01-May-2010  pooka Adjust event counter names to be less redundant.
 1.38 14-Apr-2010  pooka Use reserved major for rumpblk instead of picking something which
may conflict.
 1.37 31-Jan-2010  pooka branches: 1.37.2; 1.37.4;
If RUMP_BLKSECTSHIFT is set in the environment, use that as
device sector size instead of DEV_BSHIFT.
 1.36 27-Jan-2010  pooka Typecast memwinsize to off_t before taking the complement to be
&'ed with an off_t. Otherwise things go a bit wrong with >4GB
images ...
 1.35 22-Dec-2009  pooka Fix block device open for non-REG backends.
 1.34 03-Dec-2009  pooka Do bounds-checking before adding host offset. Otherwise the host
offset would be counted in with "size" and incorrect operation
would ensue.
 1.33 02-Dec-2009  pooka fix inverted comparison
 1.32 25-Nov-2009  pooka * report partition size in blocks instead of bytes
* "support" DIOCCACHESYNC.
 1.31 20-Nov-2009  pooka Generate fictional disklabel and return that from ioctl() instead
of the halfwitted semi-host semi-virtual ioctl nonsense that was
here previously.
 1.30 19-Nov-2009  pooka * don't open device when calling getfileinfo(), it might need to open
the device and will f-a-i-l if it's a block device
* use rumpuser_ioctl() as little as possible (going away completely
wewy wewy soon)
* improve some variable scoping
 1.29 07-Oct-2009  pooka * set winsize to memwinsize in initial getwindow(). makes no functional
difference, but looks less like a debug hack leftover.
* explain memory windows vs. directio a little better in comment
 1.28 07-Oct-2009  pooka do initial window allocation test at proper offsets
 1.27 07-Oct-2009  pooka Allow to set size and host file offset for etfs files and rumpblk.
 1.26 06-Oct-2009  pooka Use uint64_t instead of size_t for block device partition size.

from jak
 1.25 03-Aug-2009  pooka Support read/write in rumpblk via physio()
 1.24 03-Aug-2009  pooka * get rid of the old fakeblk registration interface. Instead,
introduce a new and improved "etfs" interface, which can be used
to register host files accessible from rump fs namespace. This
new interface is not restriced to block devices, and neither does
it require the same pathname in host namespace and rump namespace.
Therefore, the same host file can be represented both as a char
and block device in rump namespace.

* adjust rumpblk to make the above possible

* improve rumpfs: nodes are now created properly and not implicitly
tied to the vnode lifecycle
 1.23 30-Apr-2009  pooka branches: 1.23.2;
remove outdated comment
 1.22 30-Apr-2009  pooka print succinctly
 1.21 27-Apr-2009  pooka initialize async before use
 1.20 27-Apr-2009  pooka * expand syncing logic into rumpuser, since it has more freedom on
how to do it (e.g. fsync_range)
* hash out O_DIRECT support. it's the fastest method of safely operating
on a file, but we can't currently autodetect support, so it's not
enabled by default
* sprinkle more event counters
 1.19 17-Apr-2009  pooka Allow bootstrap time specification of memory window size and count.
 1.18 16-Apr-2009  pooka evcnt mmio window statistics
 1.17 07-Apr-2009  pooka Fix typo that slipped in a while ago. Fixes non-file mounts.
 1.16 06-Apr-2009  pooka In case using mmio, use windowing instead of trying to map the
entire image.

Benefits:
* the whole image does not need to fit into VA
* a core dump is not of gargantuan proportions

Performance is pretty close to one whopping mmap. I'll finetune
the parameters later, although the current ones seem pretty good
in initial testing.
 1.15 01-Apr-2009  pooka Be less verbose. (something like rump_dmesg with optional QUIET
would be nice, but needs work)
 1.14 23-Mar-2009  pooka massage comment. no functional change.
 1.13 23-Mar-2009  pooka Support async writes, can benefit mmio case.
 1.12 23-Mar-2009  pooka fix recent bug: writable images were not mapped with MAP_SHARED
 1.11 22-Mar-2009  pooka Bounds-check requests in case we are operating directly on a regular file.
 1.10 19-Mar-2009  uebayasi Fix build on LP64. While here KNF around.
 1.9 18-Mar-2009  pooka When doing I/O to a regular file, try to use mmio instead of
read/write. This makes a rump_fs file server around 5% faster.
 1.8 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.7 26-Feb-2009  pooka g/c debug printf
 1.6 26-Feb-2009  pooka When using an array as a ringbuffer, need to perform modulo arithmetic
with arraysize instead of arraysize-1. Previously there was one
inconsistency in the code. This might fix a crash reported by apb.

Also, g/c outdated comment.
 1.5 26-Feb-2009  pooka Make rumpuser stat and nanosleep independent of the host system
stat and timespec definitions.
 1.4 10-Feb-2009  pooka Explain in comment why the RNG is private (no, not the Random Nethack God)
 1.3 10-Feb-2009  pooka Introduce simple random fault injection. It is currently controlled
by setting RUMP_BLKFAIL to control the frequency and optionally
RUMP_BLKFAIL_SEED, which seeds the "random" number generator. Feel
free to extend the code if you want something "a little more" for
your purposes.
 1.2 27-Jan-2009  pooka branches: 1.2.2;
Instead of dynamically allocating and freeing the rumpuser async
io descriptors, just allocate an array statically and be happy.

Fixes a problem found by Arnaud Ysmal where a descriptor would be
allocated using kmem_alloc(9) and free'd using free(3).
 1.1 13-Jan-2009  pooka branches: 1.1.2; 1.1.4;
Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.1.4.4 28-Apr-2009  skrll Sync with HEAD.
 1.1.4.3 03-Mar-2009  skrll Sync with HEAD.
 1.1.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.4.1 13-Jan-2009  skrll file rumpblk.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.1.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.1 13-Jan-2009  mjf file rumpblk.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.2.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.23.2.6 09-Oct-2010  yamt sync with head
 1.23.2.5 11-Aug-2010  yamt sync with head.
 1.23.2.4 11-Mar-2010  yamt sync with head
 1.23.2.3 19-Aug-2009  yamt sync with head.
 1.23.2.2 04-May-2009  yamt sync with head.
 1.23.2.1 30-Apr-2009  yamt file rumpblk.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.37.4.3 05-Mar-2011  rmind sync with head
 1.37.4.2 03-Jul-2010  rmind sync with head
 1.37.4.1 30-May-2010  rmind sync with head
 1.37.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.37.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.37.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.42.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.42.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.46.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.46.4.2 30-Oct-2012  yamt sync with head
 1.46.4.1 17-Apr-2012  yamt sync with head
 1.47.8.4 03-Dec-2017  jdolecek update from HEAD
 1.47.8.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.47.8.2 23-Jun-2013  tls resync from head
 1.47.8.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.54.4.1 18-May-2014  rmind sync with head
 1.55.2.1 10-Aug-2014  tls Rebase.
 1.58.2.4 19-Mar-2016  skrll Sync with HEAD
 1.58.2.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.58.2.2 06-Jun-2015  skrll Sync with HEAD
 1.58.2.1 06-Apr-2015  skrll Sync with HEAD
 1.64.8.2 29-Apr-2017  pgoyette Remove more unnecessary #include for sys/localcount.h
 1.64.8.1 27-Apr-2017  pgoyette Restore all work from the former pgoyette-localcount branch (which is
now abandoned doe to cvs merge botch).

The branch now builds, and installs via anita. There are still some
problems (cgd is non-functional and all atf tests time-out) but they
will get resolved soon.
 1.64.2.3 26-Jul-2016  pgoyette Rename LOCALCOUNT_INITIALIZER to DEVSW_MODULE_INIT. This better describes
what we're doing, and why.
 1.64.2.2 19-Jul-2016  pgoyette Instead of repeatedly typing the conditional initialization of the
.d_localcount members in the various {b,c}devsw, define an initializer
macro and use it. This also removes the need for defining new symbols
for each 'struct localcount'.

As suggested by riastradh@
 1.64.2.1 18-Jul-2016  pgoyette Rump drivers are always installed via devsw_attach() so we need to
always allocate a 'struct localcount' for these drivers whenever they
are built as modules.
 1.1 09-Nov-2014  pooka branches: 1.1.18;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 09-Nov-2014  jdolecek file rumpfs.4 was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.167 27-Jun-2023  andvar remove double/tripple o in comments, where it likely was not added on purpose.
 1.166 20-Oct-2021  thorpej Overhaul of the EVFILT_VNODE kevent(2) filter:

- Centralize vnode kevent handling in the VOP_*() wrappers, rather than
forcing each individual file system to deal with it (except VOP_RENAME(),
because VOP_RENAME() is a mess and we currently have 2 different ways
of handling it; at least it's reasonably well-centralized in the "new"
way).
- Add support for NOTE_OPEN, NOTE_CLOSE, NOTE_CLOSE_WRITE, and NOTE_READ,
compatible with the same events in FreeBSD.
- Track which kevent notifications clients are interested in receiving
to avoid doing work for events no one cares about (avoiding, e.g.
taking locks and traversing the klist to send a NOTE_WRITE when
someone is merely watching for a file to be deleted, for example).

In support of the above:

- Add support in vnode_if.sh for specifying PRE- and POST-op handlers,
to be invoked before and after vop_pre() and vop_post(), respectively.
Basic idea from FreeBSD, but implemented differently.
- Add support in vnode_if.sh for specifying CONTEXT fields in the
vop_*_args structures. These context fields are used to convey information
between the file system VOP function and the VOP wrapper, but do not
occupy an argument slot in the VOP_*() call itself. These context fields
are initialized and subsequently interpreted by PRE- and POST-op handlers.
- Version VOP_REMOVE(), uses the a context field for the file system to report
back the resulting link count of the target vnode. Return this in tmpfs,
udf, nfs, chfs, ext2fs, lfs, and ufs.

NetBSD 9.99.92.
 1.165 18-Jul-2021  dholland Use macros for the canned parts of device and fifo vnode op tables.

Add GENFS_SPECOP_ENTRIES and GENFS_FIFOOP_ENTRIES macros that contain
the portion of the vnode ops table declaration that is
(conservatively) the same in every fs. Use these in every fs that
supports devices and/or fifos with separate ops tables.

Note that ptyfs works differently (it has one type of vnode with
open-coded dispatch to the specfs code, which I haven't changed in
this commit) and rump/librump/rumpvfs/rumpfs.c has an indirect dynamic
dispatch that already does more or less the same thing, which I also
haven't changed.

Also note that this anticipates a few bits in the next changeset here
and there, and adds missing but unreachable calls in some cases (e.g.
most fses weren't defining whiteout on devices and fifos, but it isn't
reachable there), and it changes parsepath on devices and fifos to
genfs_badop from genfs_parsepath (but it's not reachable there
either).

It appears that devices in kernfs were missing kqfilter, so it's
possible that if you try to use kqueue on /kern/rootdev that it'll
explode.

And finally note that the ops declaration tables aren't
order-dependent. (Other than vop_default_desc has to come first.)
Otherwise this wouldn't work.
 1.164 29-Jun-2021  dholland Add parsepath for rumpfs in place of using cn_consume.
 1.163 29-Jun-2021  dholland - Add a new vnode op: VOP_PARSEPATH.
- Move namei_getcomponent to genfs_vnops.c and call it genfs_parsepath.
- Add a parsepath entry to every vnode ops table.

VOP_PARSEPATH takes a directory vnode to be searched and a complete
following path and chooses how much of that path to consume. To begin
with, all parsepath calls are genfs_parsepath, which locates the first
'/' as always.

Note that the call doesn't take the whole struct componentname, only
the string. The other bits of struct componentname should not be
needed and there's no reason to cause potential complications by
exposing them.
 1.162 16-May-2020  christos branches: 1.162.6;
Add ACL support for FFS. From FreeBSD.
 1.161 15-May-2020  christos PR/55102: Kamil Rytarowski: Duplicate fifo_vnodeop_entries,
fifo_vnodeop_opv_desc symbols.

Many filesystems ffs, lfs, ulfs, chfs, ext2fs etc. use fifofs
internally for their fifo vnops. NFS does too, but it also needs
networking anyway. Unfortunately fifofs brings in a lot of the
networking code so that the rumpkernel is not well partition. In
addition the fifo code is rarely used.

The existing hack depended on duplicating the above symbols and
adding minimal functionality for the majority of the the tests
(except the ffs and the puffs one). In these two cases both symbols
were loaded and the symbol sizes clashed which broke the sanitizers.
While this can be fixed with weak symbols and other kinds of
indirection, it is more straight forward to select between the
minimal and the full fifofs implementation by introducing a new
shared library librumpvfs_nofifofs.
 1.160 15-May-2020  christos Undo previous, need to fix differently (fifofs is needed by other fs's and
fifo brings in rumpnet)
 1.159 14-May-2020  christos PR/55102: Kamil Rytarowski: Remove fifo stuff duplicated in fifo_vnops.c
 1.158 25-Apr-2020  bouyer Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM
guests in GENERIC.
Xen support can be disabled at runtime with
boot -c
disable hypervisor
 1.157 23-Apr-2020  ad PR kern/54759 (vm.ubc_direct deadlock when read()/write() into mapping of itself)

- Add new flag UBC_ISMAPPED which tells ubc_uiomove() the object is mmap()ed
somewhere. Use it to decide whether to do direct-mapped copy, rather than
poking around directly in the vnode in ubc_uiomove(), which is ugly and
doesn't work for tmpfs. It would be nicer to contain all this in UVM but
the filesystem provides the needed locking here (VV_MAPPED) and to
reinvent that would suck more.

- Rename UBC_UNMAP_FLAG() to UBC_VNODE_FLAGS(). Pass in UBC_ISMAPPED where
appropriate.
 1.156 13-Apr-2020  ad Replace most uses of vp->v_usecount with a call to vrefcnt(vp), a function
that hides the details and does atomic_load_relaxed(). Signature matches
FreeBSD.
 1.155 04-Apr-2020  kamil branches: 1.155.2;
Avoid copying zero-sized objects (from the NULL address)

Detected with UBSan
 1.154 17-Jan-2020  ad VFS_VGET(), VFS_ROOT(), VFS_FHTOVP(): give them a "int lktype" argument, to
allow us to get shared locks (or no lock) on the returned vnode. Matches
FreeBSD.
 1.153 04-Jun-2018  chs branches: 1.153.2; 1.153.8;
initialize the new gop_putrange method pointer in rumpfs_genfsops too.
 1.152 20-Nov-2017  martin branches: 1.152.2;
When truncating a file make sure to update mtime.
This fixes PR kern/51762 for rumpfs.
 1.151 20-Nov-2017  christos PR/52738: Martin Husemann: rumpfs does not support mtime
 1.150 28-May-2017  hannken branches: 1.150.2;
Suspend file system for vgone().
 1.149 26-May-2017  riastradh Make VOP_RECLAIM do the last unlock of the vnode.

VOP_RECLAIM naturally has exclusive access to the vnode, so having it
locked on entry is not strictly necessary -- but it means if there
are any final operations that must be done on the vnode, such as
ffs_update, requiring exclusive access to it, we can now kassert that
the vnode is locked in those operations.

We can't just have the caller release the last lock because some file
systems don't use genfs_lock, and require the vnode to remain valid
for VOP_UNLOCK to work, notably unionfs.
 1.148 26-Apr-2017  riastradh Change VOP_REMOVE and VOP_RMDIR to preserve lock/ref on dvp.

No change to vp -- the plan is to replace the node by the
componentname in the vop parameters, and let all directory vops do
lookups internally.

Proposed on tech-kern with no objections:
https://mail-index.netbsd.org/tech-kern/2017/04/17/msg021825.html
 1.147 17-Apr-2017  hannken Remove unused argument "nextp" from vfs_busy() and vfs_unbusy().
Remove argument "keepref" from vfs_unbusy() and add vfs_ref() where needed.
 1.146 11-Apr-2017  riastradh Make VOP_INACTIVE preserve vnode lock on return.

Discussed on tech-kern:
https://mail-index.netbsd.org/tech-kern/2017/04/01/msg021751.html

Ride 7.99.68, a bumpy bus of incremental vfs improvements!
 1.145 01-Mar-2017  hannken Change the protocol to update a mounted file system from read-write
to read-only and vice versa:

- Add an internal flag IMNT_WANTRDONLY.
- Set either IMNT_WANTRDWR or IMNT_WANTRDONLY if going from or to read-only.
- After successfull call to VFS_MOUNT() set or clear MNT_RDONLY.

Adapt tmpfs and rumpfs to the new protocol. Other file systems will be
updated when they get the IMNT_CAN_RWTORO property.

Welcome to 7.99.64
 1.144 17-Feb-2017  hannken Add generic genfs_suspendctl() and use it for all file systems.
Layered file systems need work.
 1.143 27-Jan-2017  hannken Run vflush() when going from read/write to read only.
Set link count to zero once a node has been removed.
"Implement" MNT_GETARGS.
 1.142 20-Aug-2016  hannken branches: 1.142.2;
Remove now obsolete operation vcache_remove().

Welcome to 7.99.36
 1.141 07-Jul-2016  msaitoh branches: 1.141.2;
KNF. Remove extra spaces. No functional change.
 1.140 07-Mar-2016  christos Avoid void * arithmetic
 1.139 06-Mar-2016  christos PR/50900: David Binderman: optimize memset
 1.138 02-Feb-2016  pooka optimize for size a.k.a. operation nuke trailing spaces
 1.137 02-Feb-2016  pooka Add capability to attach external memory to files on rumpfs. This
feature is useful e.g. for tight-memory systems where you don't need
block storage, but still need to provide some data via files.
 1.136 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.135 23-Jun-2015  hannken VOP_INACTIVE() is a rump operation, not a specfs operation.
 1.134 07-Jan-2015  riastradh Name kmem_free(rn, sizeof(*rn)) as freeprivate to match makeprivate.

Per pooka's request from a year or so ago when I passed this patch by
him a year or so ago, if I recall correctly.
 1.133 07-Jan-2015  riastradh Don't leak rn on vcache_get failure.
 1.132 03-Jan-2015  hannken Always use (struct rumpfs_node **) as key to vcache operations.
 1.131 01-Jan-2015  hannken Change rumpfs to vcache.
 1.130 17-Aug-2014  justin branches: 1.130.2;
Fix memory leak on error case, as reported in
http://m00nbsd.net/ae123a9bae03f7dde5c6d654412daf5a.html#Report-2
 1.129 13-Jun-2014  pooka branches: 1.129.2;
Add rump_boot_etfs_register(), which can be used to specify etfs
nodes that will be available immediately when mountroot is done
and file systems are available.

The intended use is for example for firmware images to be available when
config_mountroot() hooks run.
 1.128 28-May-2014  justin Add missing __diagused in rump code
 1.127 25-Apr-2014  pooka Move the etfs linkage from rumpvfs to rumpkern, and replace the
weak alias show with an honest pointer indirection.

No client-visible change. (apart from this version working e.g.
on musl w/ dlopen)
 1.126 16-Mar-2014  njoly branches: 1.126.2;
When trying to extend a file, don't wait until the underlying memory
allocation succeed. Return ENOSPC upon failure.
 1.125 24-Feb-2014  pooka truncate is not a defined operation for host files
 1.124 07-Feb-2014  hannken Change vnode operation lookup to return the resulting vnode *vpp unlocked.
Change cache_lookup() to return an unlocked vnode.

Discussed on tech-kern@

Welcome to 6.99.31
 1.123 23-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to return
the resulting vnode *vpp unlocked.

Discussed on tech-kern@

Welcome to 6.99.30
 1.122 17-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to keep the
directory node dvp locked on return.

Discussed on tech-kern@

Welcome to 6.99.29
 1.121 23-Nov-2013  christos change the mountlist CIRCLEQ into a TAILQ
 1.120 05-Aug-2013  pooka Also check if root vnode is busy when unmounting.
 1.119 05-Aug-2013  pooka Only free file data we've allocated.
 1.118 04-Aug-2013  pooka Use standard file-is-valid-until-last-reference-is-dropped semantics
for file contents.

via Justin Cormack & valgrind on github
 1.117 14-Jun-2013  pooka branches: 1.117.2;
Allocate large struct from heap instead of stack for the benefit of
low-stack environments in which this code can run.
 1.116 12-Jun-2013  pooka Make sure root creds override fs mode (at least in a root cred secmodel).
The correct way is of course for the access method to perform this:

return kauth_authorize_vnode(cred, KAUTH_ACCESS_ACTION(mode,
vp->v_type, attr->va_mode), vp, NULL, genfs_can_access(vp->v_type,
attr->va_mode, attr->va_uid, attr->va_gid, mode, cred));
 1.115 10-Jun-2013  pooka Create inodes with the specified mode instead of hardcoding to 0755.
 1.114 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.113 29-Apr-2013  pooka Reduce hypercalls related to reading to essentially an amalgamation
of readv and preadv. ditto for writing. Hypercalls are so seldomly
used that it doesn't justify 3x the calls for syntactic sugar.
 1.112 07-Apr-2013  stacktic Use genfs_null_putpages for fifo putpages op to ensure that the interlock gets unlocked
 1.111 14-Sep-2012  pooka Do not assume that O_FOO flags have matching values in the rump kernel
and hypervisor.
 1.110 30-Mar-2012  njoly branches: 1.110.2;
Do not ignore kauth errors when setting file flags.
 1.109 22-Mar-2012  njoly Use the appropriates vop_*_args structures.
 1.108 15-Mar-2012  njoly Use VOP va_vaflags attribute for genfs_can_chtimes(), not rumpfs node
one.
 1.107 13-Mar-2012  elad Replace the remaining KAUTH_GENERIC_ISSUSER authorization calls with
something meaningful. All relevant documentation has been updated or
written.

Most of these changes were brought up in the following messages:

http://mail-index.netbsd.org/tech-kern/2012/01/18/msg012490.html
http://mail-index.netbsd.org/tech-kern/2012/01/19/msg012502.html
http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012728.html

Thanks to christos, manu, njoly, and jmmv for input.

Huge thanks to pgoyette for spinning these changes through some build
cycles and ATF.
 1.106 31-Jan-2012  njoly Check credentials when setting uid, gid or mode attributes.
 1.105 30-Jan-2012  njoly Add permissions support to rump_vop_access(), to be used by
rump_vop_lookup().
 1.104 12-Dec-2011  njoly Start making fs read(2) fail with EISDIR if the implementation does
not allow read on directories (kernfs, rumpfs, ptyfs and sysvbfs).
Adjust man page accordingly, and add a small corresponding vfs
testcase.
 1.103 27-Sep-2011  mbalmer branches: 1.103.2; 1.103.6;
Underscores are sometimes overrated.
 1.102 27-Sep-2011  christos fix confusion between MAXPATHLEN and MAXNAMLEN
 1.101 27-Sep-2011  christos use RUMPFS_MAXNAMLEN consistently.
 1.100 27-Sep-2011  christos define RUMPFS_MAXNAMLEN and use it.
 1.99 23-Aug-2011  hannken When consuming only part of a path in rump_vop_lookup():

- Make sure to consume complete path components.
- Consume trailing slashes too.
- Do not clear REQUIREDIR.

Test rump/modautoload/t_modautoload now passes.
 1.98 07-Aug-2011  hannken Allow removal of a directory containing only whiteouts and free them first.
 1.97 05-Aug-2011  hannken Make whiteouts work on rumpfs:

- On lookup it is ok to create if the name exists and is a whiteout
- When replacing a whiteout directory entry remove the whiteout first.
- Set UF_OPAQUE when creating a node in place of a whiteout.
 1.96 19-Jun-2011  rmind - Fix a silly bug: remove umap from uobj in ubc_release() UBC_UNMAP case.
- Use UBC_WANT_UNMAP() consistently.

ARM (PMAP_CACHE_VIVT case) works again.
 1.95 12-Jun-2011  rmind Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.94 27-Mar-2011  riz branches: 1.94.2;
Don't try to kmem_alloc() 0 bytes. Without this change, some trivial
kernel modules were not loadable by rump_server.
 1.93 21-Mar-2011  pooka Update copyright statements.

no functional change.
 1.92 01-Mar-2011  pooka Reset node's parent pointer when it's removed. Technically the
parent still exists, but allows us to avoid complicated g/c algorithms
if the parent *is* removed.
 1.91 02-Feb-2011  pooka Allow etfs for CREATE lookups too. This takes care of O_CREAT calls
to open(), which act just like lookups if the node exists (found
from etfs). If the node doesn't exist in etfs, nothing changes
from the previous situation.
 1.90 02-Feb-2011  pooka adjust inode size too if VOP_SETATTR changes size
 1.89 14-Jan-2011  pooka branches: 1.89.2; 1.89.4;
Release etfs node's backing vnode before freeing the etfs node.

spotted from the LOCKDEBUG run that martin accidentally did
 1.88 13-Jan-2011  pooka Respect DOWHITEOUT when removing a directory.
 1.87 13-Jan-2011  pooka support MNT_RDONLY
 1.86 12-Jan-2011  pooka unionfs voodoo
 1.85 12-Jan-2011  pooka Explicitly set *vpp to NULL in lookup. At least reluckup gets
upset if we don't explicitly nullify vpp in the error case.
 1.84 12-Jan-2011  pooka reject r/o mount attempts
 1.83 12-Jan-2011  pooka Mark rootfs r/w. Thanks to the incredible machine known as vfs,
the only one who noticed the inconsistency of writing to a r/o fs
was unionfs.
 1.82 11-Jan-2011  kefren add advlock to rumpfs, ok pooka@
 1.81 04-Jan-2011  pooka Need to check for VNOVAL when setting attrs.
 1.80 04-Jan-2011  pooka Don't try to change the size of non-reg nodes or when vattr doesn't
contain a new size.

from njoly
 1.79 01-Jan-2011  pooka Report correct file size + deal with ftruncate() and O_APPEND.
 1.78 18-Dec-2010  pooka Use correct spec_islocked method.
 1.77 30-Nov-2010  pooka simplify
 1.76 30-Nov-2010  dholland SAVENAME and HASBUF namei flags have been removed; update rumpvfs accordingly.
 1.75 30-Nov-2010  dholland Fix etfs pathname handling to not (mis)use namei's scratch space.

etfs objects must now be registered as absolute paths; however, it is now
possible to access them via relative paths and through symlinks, which
previously worked some times and not others depending on exactly what
namei was doing.

discussed on tech-kern and ok'd by pooka.
 1.74 22-Nov-2010  pooka Support VOP_SETATTR, otherwise e.g. open(O_TRUNC) fails.
 1.73 11-Nov-2010  pooka help me if you can i'm gcc
and i do appreciate work'round-eee'e
help me, get my head out of the ground
won't you please, please help me?
 1.72 11-Nov-2010  pooka +VOP_REMOVE
 1.71 11-Nov-2010  pooka support read/write & ubc
 1.70 11-Nov-2010  pooka support vop_pathconf
 1.69 11-Nov-2010  pooka support vfs_mount/unmount
 1.68 11-Nov-2010  pooka be friends with genfs
 1.67 11-Nov-2010  pooka Support non-hostbacked regular files, at least just a little bit.
 1.66 08-Nov-2010  pooka print some dmesg blub for etfs files attaching as block devices
 1.65 06-Sep-2010  pooka renamelock is mandatory
 1.64 06-Sep-2010  pooka Try to draw faster than Lucky Locke.
 1.63 21-Jul-2010  hannken Make holding v_interlock mandatory for callers of vget().

Announced some time ago on tech-kern.
 1.62 13-Jul-2010  pooka support dotdot lookups
 1.61 09-Jul-2010  hannken Replace vget() with vref()/vn_lock(), this node already has a reference.
 1.60 03-Jul-2010  pooka Support VOP_WHITEOUT (mostly so that unionfs tests don't always
need to first mount ffs)
 1.59 30-Jun-2010  pooka plug memory leaks (of course the function i copypasted for the
previous commit was the only one with the leak ...)
 1.58 30-Jun-2010  pooka Implement VOP_SYMLINK/READLINK. The allows me to be a little lazier
in other places.
 1.57 24-Jun-2010  hannken Clean up vnode lock operations pass 2:

VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.

Welcome to 5.99.32.

Discussed on tech-kern.
 1.56 22-Jun-2010  pooka Remove overeager checks.
 1.55 16-Jun-2010  pooka * support VOP_SEEK
* correctly handle VOP_OPEN(FREAD|FWRITE)
* fix host file write offset
 1.54 16-Jun-2010  pooka report actual size from read/write vops
 1.53 15-Jun-2010  pooka Implement rumpblk_deregister, for unregistering fake block devices
(from etfs_deregister). Prompted by use case from njoly.
 1.52 15-Jun-2010  njoly Fix some rump_etfs_register/rump_etfs_remove memory leaks.
 1.51 14-Jun-2010  njoly Add rmdir(2) support for rump filsystem.

With help from pooka.
 1.50 11-May-2010  pooka Cache directory entry name length. This brings kernel bootstrap
time down: 14ms -> 12ms. Further hashing etc. did not seem to have
any noticable effect.
(without /dev node creation bootstrap time is 8ms, so it's still
the bottleneck)
 1.49 11-May-2010  pooka Fix reclaim locking so that we don't attempt lock reentry if making
a new rumpfs vnode triggers a reclaim for a rumpfs vnode.
 1.48 11-May-2010  pooka Reclaim spec-type vnodes properly.
 1.47 30-Apr-2010  pooka genfs_eopnotsuppify symlink, otherwise unlocky things happen!
 1.46 30-Apr-2010  pooka Add translation from vtype to dirent type. Convert rumpfs now.
I'll convert the rest of the file servers in need after the next
version bump to avoid the coding module crisis.
 1.45 30-Apr-2010  pooka Get better results if initialize a field before calling strlen().
(can't believe that worked last night. the stars must've been in
the "lottery, stupid" position)
 1.44 29-Apr-2010  pooka p2k asserts get upset if VOP_ISLOCKED() doesn't reflect lock status.
So let genfs do its thing.
 1.43 29-Apr-2010  pooka add simple VOP_READDIR for rumpfs
 1.42 27-Apr-2010  pooka Fix off-by-atleast-1 error.

Note: etfs doesn't work if rumpfs is not mounted as root. Given
that rumpfs_mount always return EOPNOTSUPP (except for mountroot),
this is not a pressible tragedy currently, but nevertheless
could/should be fixed in the future.
 1.41 26-Apr-2010  pooka Add directory support to etfs: host directories and their contents
will be mapped to rumpfs based on the given key. The directory
can be mapped either for a single level or recursively down the
entire subtree.
 1.40 21-Apr-2010  pooka rumpfs is mpsafe (has always been), so mark it as such.
 1.39 14-Apr-2010  pooka Use reserved major for rumpblk instead of picking something which
may conflict.
 1.38 12-Apr-2010  pooka Report f_iosize as 512. Some callers want it, and we can only
guess a safe default here (because of etfs).
 1.37 01-Mar-2010  pooka branches: 1.37.2;
"support" unmount of rumpfs
 1.36 03-Dec-2009  pooka branches: 1.36.2;
Make sure node lengths match in addition to strncmp().
(I thought i fixed this already once?)
 1.35 03-Dec-2009  pooka Decide it's not worth the fuss to have rumpfs as a module and just
hardcode attach into rump_vfs_init(). Saves us from a lot of
pingpong init bouncing from one component to another to get the order
right.
 1.34 30-Nov-2009  pooka test for error in creating root vnode before using it
 1.33 30-Nov-2009  pooka Use genfs_statvfs() for now.
 1.32 30-Nov-2009  pooka support lookup of pathname component "."
 1.31 27-Nov-2009  pooka Move rootfs-related init from init_main() to vfs_mountroot().
Reduces code re-written in rump.
 1.30 26-Nov-2009  pooka For rumpfs, do mountroot instead of the bunch of homegrown hacks
currently there. Still needs a little massage to get the kernel
interfaces right and avoid copypaste especially from main().

Also, move it a bit more into the direction of a real file system
(finally!) by giving it a vfsops. Most ops are still unimplemented,
though.
 1.29 14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.28 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.27 11-Oct-2009  pooka Include host offset in regular etfs read/write operations (I can't
imagine it being particularly useful, but let's call file this
under POLA).
 1.26 11-Oct-2009  pooka Support creating file system sockets (non-sockets not supported in
VOP_CREATE since I don't want to have to write read/write support
for non-etfs files).
 1.25 07-Oct-2009  pooka Allow to set size and host file offset for etfs files and rumpblk.
 1.24 04-Oct-2009  pooka Implement RUMP_ETFS_REG. Usable e.g. by firmload(9).
(well, it should probably be RUMP_ETFS_PATH, but simple things first)
 1.23 05-Sep-2009  pooka zalloc new rumpfs nodes to make sure rn_vp is initially NULL.
Fixes problem pointed out by Nicolas Joly in private email.
 1.22 04-Aug-2009  pooka Do std vnode locking for specnodes located on rumpfs.
 1.21 03-Aug-2009  pooka * get rid of the old fakeblk registration interface. Instead,
introduce a new and improved "etfs" interface, which can be used
to register host files accessible from rump fs namespace. This
new interface is not restriced to block devices, and neither does
it require the same pathname in host namespace and rump namespace.
Therefore, the same host file can be represented both as a char
and block device in rump namespace.

* adjust rumpblk to make the above possible

* improve rumpfs: nodes are now created properly and not implicitly
tied to the vnode lifecycle
 1.20 22-Jul-2009  pooka Since rumpfs can now be used from publically exported routines,
convert unsupported checking KASSERTs to return EOPNOTSUPP.
 1.19 10-Jun-2009  pooka Support VOP_MKNOD. This is so that components which need device
nodes (e.g. raidframe) can create them.
 1.18 09-Jun-2009  pooka Put some spunk into deadfs.
 1.17 19-May-2009  pooka Set vnode op vector properly for block devices too. Makes mounting
a real block device work again.
 1.16 03-May-2009  pooka branches: 1.16.2;
set MNT_ROOTFS for the rootfs (the kernel, a logical piece of work)
 1.15 01-May-2009  pooka fix editing artifact
 1.14 29-Apr-2009  pooka Add enough support to be able to create directories and perform
lookups through them. This has two implications:

1) mountpoints can be created directly onto the rump rootfs.
this is benefitial in test programs where we want the same
program to be easily switched between testing against rump and
testing against the host kernel.
2) fakeblk must be used (it used to work implicitly) to register
block devices that should be used from the host fs namespace.
 1.13 18-Apr-2009  pooka null putpages has to unlock interlock instead of just returning success
 1.12 16-Apr-2009  pooka Allocate vnodes properly with getnewvnode() and support reclaim.
 1.11 07-Apr-2009  pooka Make it possible to use VCHR devices again.
 1.10 20-Mar-2009  pooka need atomic.h
 1.9 19-Mar-2009  pooka Make it possible to mount a file system through the mount() system
call in addition to the old rump_mnt_mount(). Some issues remain
(but require more deeprooted changes):
* it is possible to mount only to /
* unmount needs MNT_FORCE due to the new fs being root and having
a bonus reference
* cwdi is not set (since there is no concept of a process)
 1.8 18-Mar-2009  cegger Ansify function definitions w/o arguments. Generated with sed.
 1.7 26-Feb-2009  pooka Make rumpuser stat and nanosleep independent of the host system
stat and timespec definitions.
 1.6 13-Jan-2009  pooka branches: 1.6.2; 1.6.4; 1.6.6;
Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.5 29-Dec-2008  pooka Register a dummy block device for rump, since some file systems do
a sanity check to see if the block device exists. This dummy block
device should eventually replace rump specfs.
 1.4 29-Dec-2008  pooka sprinkle static
 1.3 18-Dec-2008  pooka __KERNEL_RCSID
 1.2 27-Nov-2008  pooka * hang all mountpoints from rootvnode in our virtual mount hierarchy
* set VV_ROOT for the rootvnode to make getcwd realize it has met
its journey's end
 1.1 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.6.6.2 23-Jul-2009  jym Sync with HEAD.
 1.6.6.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.6.4.4 28-Apr-2009  skrll Sync with HEAD.
 1.6.4.3 03-Mar-2009  skrll Sync with HEAD.
 1.6.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.6.4.1 13-Jan-2009  skrll file rumpfs.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.6.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.6.2.1 13-Jan-2009  mjf file rumpfs.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.16.2.8 09-Oct-2010  yamt sync with head
 1.16.2.7 11-Aug-2010  yamt sync with head.
 1.16.2.6 11-Mar-2010  yamt sync with head
 1.16.2.5 16-Sep-2009  yamt sync with head
 1.16.2.4 19-Aug-2009  yamt sync with head.
 1.16.2.3 20-Jun-2009  yamt sync with head
 1.16.2.2 04-May-2009  yamt sync with head.
 1.16.2.1 03-May-2009  yamt file rumpfs.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.36.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.36.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.36.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.37.2.7 12-Jun-2011  rmind Sync RUMP's rump_etfs_remove() and uvm_aio_aiodone() with branch changes.
 1.37.2.6 19-May-2011  rmind Implement sharing of vnode_t::v_interlock amongst vnodes:
- Lock is shared amongst UVM objects using uvm_obj_setlock() or getnewvnode().
- Adjust vnode cache to handle unsharing, add VI_LOCKSHARE flag for that.
- Use sharing in tmpfs and layerfs for underlying object.
- Simplify locking in ubc_fault().
- Sprinkle some asserts.

Discussed with ad@.
 1.37.2.5 21-Apr-2011  rmind sync with head
 1.37.2.4 05-Mar-2011  rmind sync with head
 1.37.2.3 03-Jul-2010  rmind sync with head
 1.37.2.2 30-May-2010  rmind sync with head
 1.37.2.1 16-Mar-2010  rmind Change struct uvm_object::vmobjlock to be dynamically allocated with
mutex_obj_alloc(). It allows us to share the locks among UVM objects.
 1.89.4.2 05-Mar-2011  bouyer Sync with HEAD
 1.89.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.89.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.94.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.103.6.2 05-Apr-2012  mrg sync to latest -current.
 1.103.6.1 18-Feb-2012  mrg merge to -current.
 1.103.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.103.2.2 30-Oct-2012  yamt sync with head
 1.103.2.1 17-Apr-2012  yamt sync with head
 1.110.2.4 03-Dec-2017  jdolecek update from HEAD
 1.110.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.110.2.2 23-Jun-2013  tls resync from head
 1.110.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.117.2.2 18-May-2014  rmind sync with head
 1.117.2.1 28-Aug-2013  rmind sync with head
 1.126.2.1 10-Aug-2014  tls Rebase.
 1.129.2.1 24-Aug-2014  martin Pull up following revision(s) (requested by maxv in ticket #51):
sys/netinet6/ip6_output.c: revision 1.158
sys/rump/librump/rumpvfs/rumpfs.c: revision 1.130
Fix memory leaks in error cases
 1.130.2.6 28-Aug-2017  skrll Sync with HEAD
 1.130.2.5 05-Feb-2017  skrll Sync with HEAD
 1.130.2.4 05-Oct-2016  skrll Sync with HEAD
 1.130.2.3 19-Mar-2016  skrll Sync with HEAD
 1.130.2.2 22-Sep-2015  skrll Sync with HEAD
 1.130.2.1 06-Apr-2015  skrll Sync with HEAD
 1.141.2.2 26-Apr-2017  pgoyette Sync with HEAD
 1.141.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.142.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.150.2.1 26-Feb-2018  snj Pull up following revision(s) (requested by maya in ticket #581):
sys/rump/librump/rumpvfs/rumpfs.c: 1.151-1.152
PR/52738: Martin Husemann: rumpfs does not support mtime
--
When truncating a file make sure to update mtime.
This fixes PR kern/51762 for rumpfs.
 1.152.2.1 25-Jun-2018  pgoyette Sync with HEAD
 1.153.8.1 17-Jan-2020  ad Sync with head.
 1.153.2.2 21-Apr-2020  martin Sync with HEAD
 1.153.2.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.155.2.2 25-Apr-2020  bouyer Sync with bouyer-xenpvh-base2 (HEAD)
 1.155.2.1 20-Apr-2020  bouyer Sync with HEAD
 1.162.6.1 01-Aug-2021  thorpej Sync with HEAD.
 1.12 23-Feb-2020  ad UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.11 26-Jan-2016  pooka branches: 1.11.18; 1.11.24;
generate privhdrs to new location
 1.10 23-Apr-2015  pooka Mark the vattr50 translation helpers as COMPAT_50
 1.9 25-Apr-2014  pooka branches: 1.9.4;
Move the etfs linkage from rumpvfs to rumpkern, and replace the
weak alias show with an honest pointer indirection.

No client-visible change. (apart from this version working e.g.
on musl w/ dlopen)
 1.8 18-Nov-2012  pooka branches: 1.8.2; 1.8.10;
Finally remove the "temporary" __VTYPE_DEFINED stuff I added >5 years ago.
 1.7 30-Nov-2010  pooka branches: 1.7.8; 1.7.18;
remove unnecessary interface
 1.6 07-Sep-2010  pooka Retire the prehistoric chroot/cwd interfaces now that there is a
process model in rump.
 1.5 19-Jul-2010  pooka Don't provide stat compat syscalls here, they come from
rump_syscalls_compat.h now. (besides, I always hated how they were
in the rump_pub_sys namespace instead of the rump_sys namespace)
 1.4 26-May-2010  pooka Add public namespace helper routine for dumping info on mountpoints.
 1.3 20-May-2010  pooka open VFS_EXTATTRCTL to user namespace
 1.2 14-Apr-2010  pooka Use "struct kauth_cred *" instead of kauth_cred_t in all exported
interfaces. Allows to remove hairbrained _t typedef dance.
 1.1 14-Oct-2009  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Create rump public interfaces from description tables. This allows
us to control and wrap all entry points from "userspace" into rump.
This in turn is necessary for the upcoming rump cpu scheduler.

For each interface "foo" a public wrapper called "rump_foo" is
created. It calls the internal implementation "rumppriv_foo". In
case foo is to be called from inside of rump kernel space, the
private interface "rumppriv_foo" is used -- the userspace wrapper
prototypes are not even exported into the rump kernel namespace.
Needless to say, the rump kernel internal interfaces are not exported
for users.

Now, three classes of interfaces fight for control of rump:
+ the noble local control interfaces (which this commit addresses)
+ the insidious rump system calls (which are generated from syscalls.master)
+ and the evil vnode interfaces (which are generated from vnode_if.src)
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 30-May-2010  rmind sync with head
 1.1.4.4 09-Oct-2010  yamt sync with head
 1.1.4.3 11-Aug-2010  yamt sync with head.
 1.1.4.2 11-Mar-2010  yamt sync with head
 1.1.4.1 14-Oct-2009  yamt file rumpvfs.ifspec was added on branch yamt-nfs-mp on 2010-03-11 15:04:39 +0000
 1.1.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.7.18.3 03-Dec-2017  jdolecek update from HEAD
 1.7.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.18.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.7.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.8.1 16-Jan-2013  yamt sync with (a bit old) head
 1.8.10.1 10-Aug-2014  tls Rebase.
 1.8.2.1 18-May-2014  rmind sync with head
 1.9.4.2 19-Mar-2016  skrll Sync with HEAD
 1.9.4.1 06-Jun-2015  skrll Sync with HEAD
 1.11.24.1 29-Feb-2020  ad Sync with head.
 1.11.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.2 26-Jan-2016  pooka branches: 1.2.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 22-Apr-2015  pooka branches: 1.1.2;
rename rumpvfs/compat.c to rumpvfs/rumpvfs_compat50.c
 1.1.2.3 19-Mar-2016  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 22-Apr-2015  skrll file rumpvfs_compat50.c was added on branch nick-nhusb on 2015-06-06 14:40:29 +0000
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 26-Jan-2016  jdolecek file rumpvfs_compat50.c was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.14 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.13 23-Apr-2015  pooka regen for COMPAT_50 sprinklage
 1.12 25-Apr-2014  pooka branches: 1.12.4;
regen
 1.11 25-Apr-2014  pooka regen for etfs move from rumpvfs to rumpkern
 1.10 18-Nov-2012  pooka branches: 1.10.2; 1.10.10;
regen
 1.9 30-Nov-2010  pooka branches: 1.9.8; 1.9.18;
regen: checksavecn is gone
 1.8 07-Sep-2010  pooka regen: rcvp/cdir interfaces go byebye in favour of rump syscalls
 1.7 19-Jul-2010  pooka regen: stat compat syscalls moved
 1.6 26-May-2010  pooka regen: rump_vfs_mount_print
 1.5 20-May-2010  pooka one more file to commit with regen
 1.4 14-Apr-2010  pooka regen: kauth_cred_t -> struct kauth_cred *
 1.3 15-Oct-2009  pooka branches: 1.3.2; 1.3.4; 1.3.6;
regen: scheduling points in rump_pub wrappers
 1.2 14-Oct-2009  pooka regen: put all public interfaces created by ifspec into a rump_pub namespace
 1.1 14-Oct-2009  pooka generate rump local interfaces
 1.3.6.2 05-Mar-2011  rmind sync with head
 1.3.6.1 30-May-2010  rmind sync with head
 1.3.4.4 09-Oct-2010  yamt sync with head
 1.3.4.3 11-Aug-2010  yamt sync with head.
 1.3.4.2 11-Mar-2010  yamt sync with head
 1.3.4.1 15-Oct-2009  yamt file rumpvfs_if_priv.h was added on branch yamt-nfs-mp on 2010-03-11 15:04:39 +0000
 1.3.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.3.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.3.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.9.18.3 03-Dec-2017  jdolecek update from HEAD
 1.9.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.18.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.9.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.9.8.1 16-Jan-2013  yamt sync with (a bit old) head
 1.10.10.1 10-Aug-2014  tls Rebase.
 1.10.2.1 18-May-2014  rmind sync with head
 1.12.4.2 19-Mar-2016  skrll Sync with HEAD
 1.12.4.1 06-Jun-2015  skrll Sync with HEAD
 1.16 23-Feb-2020  ad UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.15 26-Jan-2016  pooka branches: 1.15.18; 1.15.24;
regen rump kernel interfaces for header change.
(they were already manually edited for a prior commit, so not much change)
 1.14 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.13 23-Apr-2015  pooka regen for COMPAT_50 sprinklage
 1.12 25-Apr-2014  pooka branches: 1.12.4;
regen
 1.11 25-Apr-2014  pooka regen for etfs move from rumpvfs to rumpkern
 1.10 18-Nov-2012  pooka branches: 1.10.2; 1.10.10;
regen
 1.9 30-Nov-2010  pooka branches: 1.9.8; 1.9.18;
regen: checksavecn is gone
 1.8 07-Sep-2010  pooka regen: rcvp/cdir interfaces go byebye in favour of rump syscalls
 1.7 19-Jul-2010  pooka regen: stat compat syscalls moved
 1.6 26-May-2010  pooka regen: rump_vfs_mount_print
 1.5 20-May-2010  pooka regen: rump_vfs_extattrctl
 1.4 14-Apr-2010  pooka regen: kauth_cred_t -> struct kauth_cred *
 1.3 15-Oct-2009  pooka branches: 1.3.2; 1.3.4; 1.3.6;
regen: scheduling points in rump_pub wrappers
 1.2 14-Oct-2009  pooka regen: put all public interfaces created by ifspec into a rump_pub namespace
 1.1 14-Oct-2009  pooka generate rump local interfaces
 1.3.6.2 05-Mar-2011  rmind sync with head
 1.3.6.1 30-May-2010  rmind sync with head
 1.3.4.4 09-Oct-2010  yamt sync with head
 1.3.4.3 11-Aug-2010  yamt sync with head.
 1.3.4.2 11-Mar-2010  yamt sync with head
 1.3.4.1 15-Oct-2009  yamt file rumpvfs_if_wrappers.c was added on branch yamt-nfs-mp on 2010-03-11 15:04:39 +0000
 1.3.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.3.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.3.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.9.18.3 03-Dec-2017  jdolecek update from HEAD
 1.9.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.18.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.9.8.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.9.8.1 16-Jan-2013  yamt sync with (a bit old) head
 1.10.10.1 10-Aug-2014  tls Rebase.
 1.10.2.1 18-May-2014  rmind sync with head
 1.12.4.2 19-Mar-2016  skrll Sync with HEAD
 1.12.4.1 06-Jun-2015  skrll Sync with HEAD
 1.15.24.1 29-Feb-2020  ad Sync with head.
 1.15.18.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.12 20-May-2024  christos regen
 1.11 19-May-2024  christos regen
 1.10 29-Jul-2023  rin rump: Regen again to fix missing __kevent100 symbol.

makerumpsyscalls.sh requires rebuilt rump libraries installed in
/usr/lib or directory specified by its first argument.

Now, new failures observed for ATF after __kevent100 addition are
fixed at least for aarch64.
 1.9 10-Jul-2023  christos Regen
 1.8 27-May-2020  christos regen for lpathconf.
 1.7 25-Sep-2019  christos Regen
 1.6 22-Sep-2019  christos regen
 1.5 26-Jan-2016  pooka branches: 1.5.18;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 18-Jun-2015  pooka regen
 1.3 08-Apr-2015  justin regen after syscall update
 1.2 27-Apr-2014  pooka branches: 1.2.2; 1.2.4; 1.2.6; 1.2.10; 1.2.12;
regen
 1.1 27-Apr-2014  pooka Eliminate weak symbols from rump kernel syscall handlers, part 6:

Generate component constructors which establish non-modular syscalls.
 1.2.12.3 19-Mar-2016  skrll Sync with HEAD
 1.2.12.2 22-Sep-2015  skrll Sync with HEAD
 1.2.12.1 06-Jun-2015  skrll Sync with HEAD
 1.2.10.3 03-Dec-2017  jdolecek update from HEAD
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 27-Apr-2014  tls file rumpvfs_syscalls.c was added on branch tls-maxphys on 2014-08-20 00:04:42 +0000
 1.2.6.2 10-Aug-2014  tls Rebase.
 1.2.6.1 27-Apr-2014  tls file rumpvfs_syscalls.c was added on branch tls-earlyentropy on 2014-08-10 06:56:51 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 27-Apr-2014  yamt file rumpvfs_syscalls.c was added on branch yamt-pagecache on 2014-05-22 11:41:16 +0000
 1.2.2.2 18-May-2014  rmind sync with head
 1.2.2.1 27-Apr-2014  rmind file rumpvfs_syscalls.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.5.18.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.41 15-Jun-2023  hannken Regen.
 1.40 18-Jul-2022  thorpej branches: 1.40.4;
Regen for:

Make kqueue event status for vnodes shareable, and for stacked file systems
like nullfs, make the upper vnode share that status with the lower vnode.

And, lo, NetBSD 9.99.99.

Fixes PR kern/56713.
 1.39 03-May-2022  hannken Regen.
 1.38 03-May-2022  hannken Regen.
 1.37 20-Oct-2021  thorpej Regen for:

Overhaul of the EVFILT_VNODE kevent(2) filter:

- Centralize vnode kevent handling in the VOP_*() wrappers, rather than
forcing each individual file system to deal with it (except VOP_RENAME(),
because VOP_RENAME() is a mess and we currently have 2 different ways
of handling it; at least it's reasonably well-centralized in the "new"
way).
- Add support for NOTE_OPEN, NOTE_CLOSE, NOTE_CLOSE_WRITE, and NOTE_READ,
compatible with the same events in FreeBSD.
- Track which kevent notifications clients are interested in receiving
to avoid doing work for events no one cares about (avoiding, e.g.
taking locks and traversing the klist to send a NOTE_WRITE when
someone is merely watching for a file to be deleted, for example).

In support of the above:

- Add support in vnode_if.sh for specifying PRE- and POST-op handlers,
to be invoked before and after vop_pre() and vop_post(), respectively.
Basic idea from FreeBSD, but implemented differently.
- Add support in vnode_if.sh for specifying CONTEXT fields in the
vop_*_args structures. These context fields are used to convey information
between the file system VOP function and the VOP wrapper, but do not
occupy an argument slot in the VOP_*() call itself. These context fields
are initialized and subsequently interpreted by PRE- and POST-op handlers.
- Version VOP_REMOVE(), uses the a context field for the file system to report
back the resulting link count of the target vnode. Return this in tmpfs,
udf, nfs, chfs, ext2fs, lfs, and ufs.

NetBSD 9.99.92.
 1.36 02-Jul-2021  dholland Regen.
 1.35 29-Jun-2021  dholland Regen.
 1.34 16-May-2020  christos branches: 1.34.6;
Add ACL support for FFS. From FreeBSD.
 1.33 23-Feb-2020  ad Regen.
 1.32 01-Dec-2019  ad branches: 1.32.2;
Regen for VOP_LOCK & LK_UPGRADE/LK_DOWNGRADE.
 1.31 12-Jul-2017  hannken branches: 1.31.6;
Regen.
 1.30 04-Jun-2017  hannken Operations fstrans_start() and fstrans_start_nowait() now always
use FSTRANS_SHARED as lock type so remove the lock type argument.

File system state FSTRANS_SUSPENDING is now unused so remove it.

Regen vnode_if files.

Ride 8.99.1 less than a hour ago.
 1.29 04-Jun-2017  hannken Regen.
 1.28 26-May-2017  riastradh branches: 1.28.2;
regen
 1.27 26-Apr-2017  riastradh regen
 1.26 16-Apr-2017  riastradh regen to confirm no functional change
 1.25 16-Apr-2017  riastradh regen
 1.24 15-Apr-2017  riastradh regen to confirm no functional change
 1.23 11-Apr-2017  riastradh regen to confirm no functional change
 1.22 11-Apr-2017  riastradh regen
 1.21 22-Feb-2017  hannken Regen.
 1.20 26-Jan-2016  pooka branches: 1.20.2; 1.20.4;
regen vnode interfaces
 1.19 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.18 20-Apr-2015  riastradh regen for good measure (no functional change)
 1.17 20-Apr-2015  riastradh Make VOP_LINK return directory still locked and referenced.

Ride 7.99.10 bump.
 1.16 25-Jul-2014  dholland branches: 1.16.4;
Regen for VOP_FALLOCATE/VOP_FDISCARD.
 1.15 07-Feb-2014  hannken branches: 1.15.2;
Change vnode operation lookup to return the resulting vnode *vpp unlocked.
Change cache_lookup() to return an unlocked vnode.

Discussed on tech-kern@

Welcome to 6.99.31
 1.14 23-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to return
the resulting vnode *vpp unlocked.

Discussed on tech-kern@

Welcome to 6.99.30
 1.13 17-Jan-2014  hannken Change vnode operations create, mknod, mkdir and symlink to keep the
directory node dvp locked on return.

Discussed on tech-kern@

Welcome to 6.99.29
 1.12 17-Jul-2013  pooka regen
 1.11 08-Aug-2011  manu branches: 1.11.2; 1.11.12; 1.11.16; 1.11.24;
regen
 1.10 11-Jul-2011  hannken Change VOP_BWRITE() to take a vnode as its first argument like all other
VOPs do. Layered file systems no longer have to modify bp->b_vp and run
into trouble when an async VOP_BWRITE() uses the wrong vnode.

- change all occurences of VOP_BWRITE(bp) to VOP_BWRITE(bp->b_vp, bp).
- remove layer_bwrite().
- welcome to 5.99.55

Adresses PR kern/38762 panic: vwakeup: neg numoutput

No objections from tech-kern@.
 1.9 04-Jul-2011  manu Add a flag to VOP_LISTEXTATTR(9) so that the vnode interface can tell the
filesystem in which format extended attribute shall be listed.

There are currently two formats:
- NUL-terminated strings, used for listxattr(2), this is the default.
- one byte length-pprefixed, non NUL-terminated strings, used for
extattr_list_file(2), which is obtanined by setting the
EXTATTR_LIST_PREFIXLEN flag to VOP_LISTEXTATTR(9)

This approach avoid the need for converting the list back and forth, except
in libperfuse, since FUSE uses NUL-terminated strings, and the kernel may
have requested EXTATTR_LIST_PREFIXLEN.
 1.8 06-Mar-2011  bouyer merge the bouyer-quota2 branch. This adds a new on-disk format
to store disk quota usage and limits, integrated with ffs
metadata. Usage is checked by fsck_ffs (no more quotacheck)
and is covered by the WAPBL journal. Enabled with kernel
option QUOTA2 (added where QUOTA was enabled in kernel config files),
turned on with tunefs(8) on a per-filesystem
basis. mount_mfs(8) can also turn quotas on.

See http://mail-index.netbsd.org/tech-kern/2011/02/19/msg010025.html
for details.
 1.7 24-Jun-2010  hannken branches: 1.7.2; 1.7.4;
Clean up vnode lock operations pass 2:

VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.

Welcome to 5.99.32.

Discussed on tech-kern.
 1.6 14-Apr-2010  pooka regen: rump vnodeif went on a diet
 1.5 14-Apr-2010  pooka regenefactor for comment and whitespace changes
 1.4 10-Apr-2010  pooka regen: remove unused vdesc_transports
 1.3 15-Oct-2009  pooka branches: 1.3.2; 1.3.4;
regen: scheduling points
 1.2 29-Sep-2009  pooka regen: remove VNODE_LOCKDEBUG
 1.1 19-Nov-2008  pooka branches: 1.1.4; 1.1.6; 1.1.10;
Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.1.10.4 11-Aug-2010  yamt sync with head.
 1.1.10.3 11-Mar-2010  yamt sync with head
 1.1.10.2 04-May-2009  yamt sync with head.
 1.1.10.1 19-Nov-2008  yamt file rumpvnode_if.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.1.6.2 19-Jan-2009  skrll Sync with HEAD.
 1.1.6.1 19-Nov-2008  skrll file rumpvnode_if.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.1.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.4.1 19-Nov-2008  mjf file rumpvnode_if.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.3.4.3 21-Apr-2011  rmind sync with head
 1.3.4.2 03-Jul-2010  rmind sync with head
 1.3.4.1 30-May-2010  rmind sync with head
 1.3.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.3.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.7.4.1 20-Jan-2011  bouyer Snapshot of work in progress on a modernised disk quota system:
- new quotactl syscall (versionned for backward compat), which takes
as parameter a path to a mount point, and a prop_dictionary
(in plistref format) describing commands and arguments.
For each command, status and data are returned as a prop_dictionary.
quota commands features will be added to take advantage of this,
exporting quota data or getting quota commands as plists.

- new on disk-format storage (all 64bit wide), integrated to metadata for
ffs (and playing nicely with wapbl).
Quotas are enabled on a ffs filesystem via superblock flags.
tunefs(8) can enable or disable quotas.
On a quota-enabled filesystem, fsck_ffs(8) will track per-uid/gid
block and inode usages, and will check and update quotas in Pass 6.
quota usage and limits are stored in unliked files (one for users,
one for groups)l fsck_ffs(8) will create the files if needed, or
free them if needed. This means that after enabling or disabling
quotas on a filesystem; a fsck_ffs(8) run is required.
quotacheck(8) is not needed any more, on a unclean shutdown
fsck or journal replay will take care of fixing quotas.
newfs(8) can create a ready-to-mount quota-enabled filesystem
(superblock flags are set and quota inodes are created).
Other new features or semantic changes:
- default quota datas, applied to users or groups which don't already
have a quota entry
- per-user/group grace time (instead of a filesystem global one)
- 0 really means "nothing allowed at all", not "no limit".
If you want "no limit", set the limit to UQUAD_MAX (tools will
understand "unlimited" and "-")

A quota file is structured as follow:
it starts with a header, containing a few per-filesystem values,
and the default quota limits.
Quota entries are linked together as a simple list, each entry has a
pointer (as an offset withing the file) to the next.
The header has a pointer to a list of free quota entries, and
a hash table of in-use entries. The size of the hash table depends
on the filesystem block size (header+hash table should fit in the
first block). The file is not sparse and is a multiple of
filesystem block size (when the free quota entry list is empty a new
filesystem block is allocated). quota entries to not cross
filesystem block boundaries.

In memory, the kernel keeps a cache of recently used quota entries
as a reference to the block number, and offset withing the block.
The quota entry itself is keept in the buf cache.

fsck_ffs(8), tunefs(8) and newfs(8) supports are completed (with
related atf tests :)
The kernel can update disk usage and report it via quotactl(2).

Todo: enforce quotas limits (limits are not checked by kernel yet)
update repquota, edquota and rpc.rquotad to the new world
implement compat_50_quotactl ioctl.
update quotactl(2) man page

fsck_ffs required fixes so that allocating new blocks or inodes will
properly update the superblock and cg sumaries. This was not an issue up
to now because superblock and cg sumaries check happened last, but now
allocations or frees can happen in pass 6.
 1.7.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.11.24.1 23-Jul-2013  riastradh sync with HEAD
 1.11.16.2 18-May-2014  rmind sync with head
 1.11.16.1 28-Aug-2013  rmind sync with head
 1.11.12.2 03-Dec-2017  jdolecek update from HEAD
 1.11.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.11.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.15.2.1 10-Aug-2014  tls Rebase.
 1.16.4.3 28-Aug-2017  skrll Sync with HEAD
 1.16.4.2 19-Mar-2016  skrll Sync with HEAD
 1.16.4.1 06-Jun-2015  skrll Sync with HEAD
 1.20.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.20.2.2 26-Apr-2017  pgoyette Sync with HEAD
 1.20.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.28.2.2 25-Jul-2017  snj regen for ticket 130
 1.28.2.1 04-Jun-2017  bouyer pullup the following revisions, requested by hannken in ticket #2:
src/share/man/man9/fstrans.9 1.25
src/sys/kern/vfs_mount.c 1.66
src/sys/kern/vfs_subr.c 1.468
src/sys/kern/vfs_trans.c 1.46
src/sys/kern/vfs_vnode.c 1.94, 1.95, 1.96
src/sys/kern/vnode_if.c 1.105, 1.106
src/sys/kern/vnode_if.sh 1.65, 1.66
src/sys/kern/vnode_if.src 1.76
src/sys/miscfs/genfs/genfs_io.c 1.69
src/sys/miscfs/genfs/genfs_vnops.c 1.196, 1.197
src/sys/miscfs/genfs/layer_extern.h 1.40
src/sys/miscfs/genfs/layer_vfsops.c 1.51
src/sys/miscfs/genfs/layer_vnops.c 1.67
src/sys/miscfs/nullfs/null_vnops.c 1.42
src/sys/miscfs/overlay/overlay_vnops.c 1.24
src/sys/miscfs/umapfs/umap_vnops.c 1.60
src/sys/rump/include/rump/rumpvnode_if.h 1.29, 1.30
src/sys/rump/librump/rumpkern/emul.c 1.182
src/sys/rump/librump/rumpvfs/rumpvnode_if.c 1.29, 1.30
src/sys/sys/fstrans.h 1.11
src/sys/sys/vnode.h 1.278
src/sys/sys/vnode_if.h 1.100, 1.101
src/sys/sys/vnode_impl.h 1.14, 1.15
src/sys/ufs/lfs/lfs_pages.c 1.12

Vnode state, lock and fstrans cleanup:
- Rename vnode state "VS_ACTIVE" to "VS_LOADED" and add synthetic
state "VS_ACTIVE" to assert a loaded vnode with usecount > 0.

- Redo FSTRANS in vnode_if.c and use it for VOP_LOCK and VOP_UNLOCK.

- Cleanup the genfs lock operations.

- Make "struct vnode_impl" member "vi_lock" a krwlock_t again.

- Remove the lock type argument from fstrans_start and
fstrans_start_nowait,
remove now unused FSTRANS state "FSTRANS_SUSPENDING".
 1.31.6.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.32.2.1 29-Feb-2020  ad Sync with head.
 1.34.6.1 01-Aug-2021  thorpej Sync with HEAD.
 1.40.4.1 21-Jun-2023  martin Regen (ticket #197)
 1.5 13-Jan-2009  pooka branches: 1.5.2;
Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.4 07-Jan-2009  pooka more namespacing: rua -> rumpuser_aio
 1.3 29-Dec-2008  pooka Rename specfs_lock as device_lock and move it from specfs to devsw.
Relaxes kernel dependency on vfs.
 1.2 18-Dec-2008  pooka __KERNEL_RCSID
 1.1 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.5.2.3 03-Mar-2009  skrll Sync with HEAD.
 1.5.2.2 19-Jan-2009  skrll Sync with HEAD.
 1.5.2.1 13-Jan-2009  skrll file specfs.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.9 29-Mar-2010  pooka Support fifofs in rump. Do not include it in rumpvfs directly,
since it involves some very non-fs'y components like sockets and
local domain networking. Also (for better or worse?), call it
rump*v*fs_fifofs instead of rumpfs_fifofs, since it does not really
provide a file system driver.

XXX: uses duplicate common symbols and functionality depends on
link order ... (but at least it works better than before this change)
 1.8 26-Mar-2010  pooka rootfstype is not a vfs stub, so it doesn't belong in vfs_stubs
 1.7 19-Mar-2009  pooka branches: 1.7.2; 1.7.4; 1.7.6;
Make it possible to mount a file system through the mount() system
call in addition to the old rump_mnt_mount(). Some issues remain
(but require more deeprooted changes):
* it is possible to mount only to /
* unmount needs MNT_FORCE due to the new fs being root and having
a bonus reference
* cwdi is not set (since there is no concept of a process)
 1.6 13-Jan-2009  pooka branches: 1.6.2; 1.6.4; 1.6.6;
include vfs_lockf.c
 1.5 13-Jan-2009  pooka Implement block I/O as a real block driver instead of a hacked copy
of specfs. That was easier years ago when rump didn't support
devices, but brings no gain now. This allows us to include the
real specfs in rump.
 1.4 19-Dec-2008  pgoyette Store config(1)'s root filesystem type as a text string rather than
embedding the address of its xxx_mountroot() in swapnetbsd.c. This
permits booting of kernels with hard-wired filesystem type even if the
filesystem is in a loadable module (ie, not linked into the kernel
image).

Discussed on current-users. Tested on amd64 and i386 with both hard-
wired and '?' filesystem times, and on both modular and monolithic
kernels.

Thanks to pooka@ for code review and suggestions.

Addresses my PR kern/40167
 1.3 19-Dec-2008  pooka include vfs_xattr.c
 1.2 18-Dec-2008  pooka __KERNEL_RCSID
 1.1 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.6.6.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.6.4.3 28-Apr-2009  skrll Sync with HEAD.
 1.6.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.6.4.1 13-Jan-2009  skrll file vfsops_stub.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.6.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.6.2.1 13-Jan-2009  mjf file vfsops_stub.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.7.6.1 30-May-2010  rmind sync with head
 1.7.4.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.7.2.3 11-Aug-2010  yamt sync with head.
 1.7.2.2 04-May-2009  yamt sync with head.
 1.7.2.1 19-Mar-2009  yamt file vfsops_stub.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.42 22-Apr-2023  riastradh rump: Move ubc_uiomove, ubc_zerorange from rumpvfs to rumpkern.

Needed by kern_ksyms.c. We could split kern_ksyms.c up into kernel-
internal interfaces and the user/kernel /dev/ksyms interface, but
there's nothing vfs-specific about ubc_uiomove and ubc_zerorange
anyway, so let's just define them in rumpkern.
 1.41 09-Dec-2020  chs make rump's uvm_aio_aiodone_pages() look more like the kernel version.
fixes some more rumpy assertions.
 1.40 22-Oct-2020  chs branches: 1.40.2;
fix an incorrect assertion in the previous commit.
 1.39 18-Oct-2020  chs Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to
uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to
handle this flag separately. Split out the pages part of uvm_aio_aiodone()
into uvm_aio_aiodone_pages() in rump just like in the real kernel.
In ZFS functions that can fail to copy data between the ARC and VM pages,
use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can
handle these "I/O" errors. Fixes PR 55702.
 1.38 23-Feb-2020  ad UVM locking changes, proposed on tech-kern:

- Change the lock on uvm_object, vm_amap and vm_anon to be a RW lock.
- Break v_interlock and vmobjlock apart. v_interlock remains a mutex.
- Do partial PV list locking in the x86 pmap. Others to follow later.
 1.37 18-Feb-2020  chs remove the aiodoned thread. I originally added this to provide a thread context
for doing page cache iodone work, but since then biodone() has changed to
hand off all iodone work to a softint thread, so we no longer need the
special-purpose aiodoned thread.
 1.36 15-Jan-2020  ad Merge from yamt-pagecache (after much testing):

- Reduce unnecessary page scan in putpages esp. when an object has a ton of
pages cached but only a few of them are dirty.

- Reduce the number of pmap operations by tracking page dirtiness more
precisely in uvm layer.
 1.35 13-Dec-2019  ad branches: 1.35.2;
Break the global uvm_pageqlock into a per-page identity lock and a private
lock for use of the pagedaemon policy code. Discussed on tech-kern.

PR kern/54209: NetBSD 8 large memory performance extremely low
PR kern/54210: NetBSD-8 processes presumably not exiting
PR kern/54727: writing a large file causes unreasonable system behaviour
 1.34 18-Oct-2013  christos branches: 1.34.30; 1.34.34;
remove unused variable
 1.33 03-Jun-2012  rmind branches: 1.33.2; 1.33.4;
rumpvfs:
- ubc_uiomove: avoid the re-lock dance, since the lock is shared these days.
- uvm_aio_aiodone: acquire the lock before modifying the page flags.

Tested by martin@.
 1.32 19-Jun-2011  hannken branches: 1.32.2;
Revert previous. ubc_purge() is already defined in rumpkern/vm.c
 1.31 19-Jun-2011  hannken Add a noop wrapper for ubc_purge() to make file system tests work again.

Not really sure if this is the right way -- Antti?
 1.30 16-Jun-2011  hannken Rename uvm_vnp_zerorange(struct vnode *, off_t, size_t) to
ubc_zerorange(struct uvm_object *, off_t, size_t, int) changing
the first argument to an uvm_object and adding a flags argument.

Modify tmpfs_reg_resize() to zero the backing store (aobj) instead
of the vnode. Ubc_purge() no longer panics when unmounting tmpfs.

Keep uvm_vnp_zerorange() until the next kernel version bump.
 1.29 12-Jun-2011  rmind Welcome to 5.99.53! Merge rmind-uvmplock branch:

- Reorganize locking in UVM and provide extra serialisation for pmap(9).
New lock order: [vmpage-owner-lock] -> pmap-lock.

- Simplify locking in some pmap(9) modules by removing P->V locking.

- Use lock object on vmobjlock (and thus vnode_t::v_interlock) to share
the locks amongst UVM objects where necessary (tmpfs, layerfs, unionfs).

- Rewrite and optimise x86 TLB shootdown code, make it simpler and cleaner.
Add TLBSTATS option for x86 to collect statistics about TLB shootdowns.

- Unify /dev/mem et al in MI code and provide required locking (removes
kernel-lock on some ports). Also, avoid cache-aliasing issues.

Thanks to Andrew Doran and Joerg Sonnenberger, as their initial patches
formed the core changes of this branch.
 1.28 21-Mar-2011  pooka branches: 1.28.2;
Update copyright statements.

no functional change.
 1.27 01-Mar-2011  pooka Pass accurate protection info from ubc_uiomove() to the pager.
Fixes nfs{,ro}_fileio tests on at least sparc64 (and probably macppc
and other fat endian machines).

The problem was that nfs was fooled to thinking read() caused a
write fault because of VM_PROT_WRITE being unconditionally set and
therefore set NMODIFIED on a r/o file system. It is absolutely
beyond me why the test worked on i386/amd64. Incidentally, I seem
to have "misplaced" a few goats.
 1.26 27-Feb-2011  pooka tmpfs has two layers of uvm objects (vnode->uobj and the anon object
in tmpfs_node), so when playing with pages make sure we lock the
uvm object the pages belong to instead of the vnode's uvm object.

per test from Nicolas Joly (which I'm sure he will commit soon ;)
 1.25 22-Feb-2011  pooka Shuffle the pagedaemon algorithm a bit to record the number of
pageouts active and give up only if the pagedaemon could not free
memory and there are no outstanding pageouts.

This should fix the "out of memory" pauses reported by Mihai Chelaru
and Taylor R Campbell. Tested by copying files to and from an ffs
backed by /dev/wd0 (with and without -o log) using a 1MB rump kernel
memory limit.
 1.24 18-Dec-2010  pooka branches: 1.24.2; 1.24.4;
Don't loop eternally if uiomove() fails eternally (e.g. because
the connection to the client has been severed).
 1.23 09-Sep-2010  pooka Release PG_PAGEOUT pages in aiodone.
 1.22 09-Sep-2010  pooka hold object lock across page unbusy
 1.21 09-Sep-2010  pooka Use proper locking before unbusying pages.

Caught after yesterday's changes by the test suite (the ffs snapshot
test, to be precise).
 1.20 06-Sep-2010  pooka Make the pager loops more resilient against the aobj pager which is
lazy and doesn't like to return anything except the bare minimum.
(forgot to commit this earlier)
 1.19 06-Sep-2010  pooka pager wants truncated offsets
 1.18 06-Sep-2010  pooka simplify and fix len-to-npages calculation
 1.17 19-Aug-2010  pooka Use the same base pagerflags for both ubc_uiomove and ubc_zerorange.
 1.16 02-Jun-2010  pooka In aiodone, call uvm_pageout_done() with number of PG_PAGEOUT pages
processed.
 1.15 16-Dec-2009  pooka branches: 1.15.2; 1.15.4;
If zeroing len == 0, return immediately.
(kmem_alloc() doesn't like being called with size == 0)
 1.14 10-Nov-2009  pooka Code which uses pages fetched by the pager needs PGO_SYNCIO for
obvious reasons.
 1.13 18-Oct-2009  pooka Clear PG_FAKE for pages we wrote to. This avoids paging in data
we already have (and the backend might not yet have) in cases where
fs_bshift > PAGE_SHIFT.
 1.12 07-Oct-2009  pooka Use uvm_readahead.c instead of null stubs.
 1.11 05-Oct-2009  pooka Call the pager with page-aligned offsets, 'cause that's what the
pager expects. Fixes KASSERT failure if someone manages to do
otherwise.
 1.10 05-Aug-2009  pooka g/c uvm_aio_biodone1(). not used anymore.
 1.9 05-Aug-2009  pooka Clear PG_PAGEOUT in uvm_aio_aiodone()
 1.8 05-Aug-2009  pooka Use uvm_vnode.c instead of homerolled stuff.
 1.7 04-Aug-2009  pooka terminate comment too
 1.6 04-Aug-2009  pooka * supply pager flags in ubc_uiomove()
* implement uvm_aio_aiodone() (which is almost identical to the "real" one)
 1.5 18-Mar-2009  cegger branches: 1.5.2;
Ansify function definitions w/o arguments. Generated with sed.
 1.4 22-Feb-2009  ad PR kern/26878 FFSv2 + softdep = livelock (no free ram)
PR kern/16942 panic with softdep and quotas
PR kern/19565 panic: softdep_write_inodeblock: indirect pointer #1 mismatch
PR kern/26274 softdep panic: allocdirect_merge: ...
PR kern/26374 Long delay before non-root users can write to softdep partitions
PR kern/28621 1.6.x "vp != NULL" panic in ffs_softdep.c:4653 while unmounting a softdep (+quota) filesystem
PR kern/29513 FFS+Softdep panic with unfsck-able file-corruption
PR kern/31544 The ffs softdep code appears to fail to write dirty bits to disk
PR kern/31981 stopping scsi disk can cause panic (softdep)
PR kern/32116 kernel panic in softdep (assertion failure)
PR kern/32532 softdep_trackbufs deadlock
PR kern/37191 softdep: locking against myself
PR kern/40474 Kernel panic after remounting raid root with softdep

Retire softdep, pass 2. As discussed and later formally announced on the
mailing lists.
 1.3 18-Dec-2008  pooka branches: 1.3.2; 1.3.4; 1.3.6;
__KERNEL_RCSID
 1.2 27-Nov-2008  pooka Move more vfs-related vm routines from rumpkern to rumpvfs.
 1.1 19-Nov-2008  pooka Split vfs out of rumpkern into rumpvfs. Non-fs rumps no longer
include the file system code. File system rumps explicitly need
to include rumpvfs from now on.
 1.3.6.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.3.4.4 28-Apr-2009  skrll Sync with HEAD.
 1.3.4.3 03-Mar-2009  skrll Sync with HEAD.
 1.3.4.2 19-Jan-2009  skrll Sync with HEAD.
 1.3.4.1 18-Dec-2008  skrll file vm_vfs.c was added on branch nick-hppapmap on 2009-01-19 13:20:27 +0000
 1.3.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.3.2.1 18-Dec-2008  mjf file vm_vfs.c was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.5.2.6 09-Oct-2010  yamt sync with head
 1.5.2.5 11-Aug-2010  yamt sync with head.
 1.5.2.4 11-Mar-2010  yamt sync with head
 1.5.2.3 19-Aug-2009  yamt sync with head.
 1.5.2.2 04-May-2009  yamt sync with head.
 1.5.2.1 18-Mar-2009  yamt file vm_vfs.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:31 +0000
 1.15.4.5 12-Jun-2011  rmind Sync RUMP's rump_etfs_remove() and uvm_aio_aiodone() with branch changes.
 1.15.4.4 21-Apr-2011  rmind sync with head
 1.15.4.3 05-Mar-2011  rmind sync with head
 1.15.4.2 03-Jul-2010  rmind sync with head
 1.15.4.1 16-Mar-2010  rmind Change struct uvm_object::vmobjlock to be dynamically allocated with
mutex_obj_alloc(). It allows us to share the locks among UVM objects.
 1.15.2.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.15.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.24.4.1 05-Mar-2011  bouyer Sync with HEAD
 1.24.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.28.2.1 23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.32.2.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.32.2.3 02-Nov-2012  yamt fix a merge botch
 1.32.2.2 30-Oct-2012  yamt sync with head
 1.32.2.1 02-Nov-2011  yamt page cache related changes

- maintain object pages in radix tree rather than rb tree.
- reduce unnecessary page scan in putpages. esp. when an object has a ton of
pages cached but only a few of them are dirty.
- reduce the number of pmap operations by tracking page dirtiness more
precisely in uvm layer.
- fix nfs commit range tracking.
- fix nfs write clustering. XXX hack
 1.33.4.1 18-May-2014  rmind sync with head
 1.33.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.34.34.2 09-Jul-2021  martin Apply patch, requested by chs in ticket #1321:

sys/rump/librump/rumpvfs/vm_vfs.c (apply patch)

Adapt the changes from ticket #1317 (the uvm_pageqlock does not exist any
more in HEAD)
 1.34.34.1 06-Jul-2021  martin Pull up following revision(s) - all via patch -
(requested by riastradh in ticket #1317):

sys/uvm/uvm_page.c: revision 1.248
sys/uvm/uvm_anon.c: revision 1.80
sys/rump/librump/rumpvfs/vm_vfs.c: revision 1.40
sys/rump/librump/rumpvfs/vm_vfs.c: revision 1.41
sys/rump/librump/rumpkern/vm.c: revision 1.191
sys/uvm/uvm_pager.c: revision 1.130
external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c: revision 1.71
tests/rump/rumpkern/t_vm.c: revision 1.5
tests/rump/rumpkern/t_vm.c: revision 1.6
sys/rump/librump/rumpvfs/vm_vfs.c: revision 1.39

Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to
uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to
handle this flag separately. Split out the pages part of uvm_aio_aiodone()
into uvm_aio_aiodone_pages() in rump just like in the real kernel.

In ZFS functions that can fail to copy data between the ARC and VM pages,
use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can
handle these "I/O" errors. Fixes PR 55702.

fix an incorrect assertion in the previous commit.

Handle PG_PAGEOUT in uvm_anon_release() too.

Commit the ZFS file that I forgot in this previous commit:

Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to
uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to
handle this flag separately. Split out the pages part of uvm_aio_aiodone()
into uvm_aio_aiodone_pages() in rump just like in the real kernel.

In ZFS functions that can fail to copy data between the ARC and VM pages,
use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can
handle these "I/O" errors. Fixes PR 55702.
update the rump copy of uvm_page_unbusy() to match the real version,
in particular handle PG_PAGEOUT. fixes a few atf tests.
the busypage test is buggy, expect it to fail.

make rump's uvm_aio_aiodone_pages() look more like the kernel version.
fixes some more rumpy assertions.

for the busypage test, replace atf_tc_expect_fail() with atf_tc_skip()
because atf apparently has no way to expect a test program to crash.
fixes PR 55945.
 1.34.30.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.35.2.2 29-Feb-2020  ad Sync with head.
 1.35.2.1 17-Jan-2020  ad Sync with head.
 1.40.2.1 14-Dec-2020  thorpej Sync w/ HEAD.
 1.1 02-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18;
Add a very simplistic PF_INET/SOCK_DGRAM domain/proto implementation,
which delegates the work to host kernel sockets. This does not
run the entire kernel TCP/IP stack in userspace and therefore does
not require the ability to send or receive raw packets. This
implies that root priviledges are not required. As already said
above, only supports UDPv4 for now. Extending should be easy.
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 02-Oct-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:32 +0000
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 02-Oct-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.1.4.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.4.1 02-Oct-2008  skrll file Makefile was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
 1.1.2.2 05-Oct-2008  mjf Sync with HEAD.
 1.1.2.1 02-Oct-2008  mjf file Makefile was added on branch mjf-devfs2 on 2008-10-05 20:11:34 +0000
 1.8 05-Dec-2010  pooka Rename Makefile.rump${x} to Makefile.rump${x}comp for consistency.
 1.7 22-Mar-2010  pooka bluetooth stack component for rump
 1.6 05-Feb-2010  pooka branches: 1.6.2; 1.6.4;
Move the net80211 support component into the proper place in "net"
and install as rumpnet_net80211.
 1.5 28-Feb-2009  pooka branches: 1.5.2;
Add a virtual ethernet interface which uses shared memory as the
bus instead of relying on the host kernel's tap and bridge. This
is much lighterweight approach which does not consume non-pageable
kernel resources.
 1.4 08-Feb-2009  pooka branches: 1.4.2;
Add a PF_LOCAL rump kernel component.
 1.3 06-Jan-2009  mjf Add missing dollar sign ($) for $NetBSD$ tag.
 1.2 06-Oct-2008  pooka branches: 1.2.2; 1.2.4; 1.2.6;
Locally descend into new directories (build does not descend here yet).
 1.1 02-Oct-2008  pooka branches: 1.1.2;
Add a very simplistic PF_INET/SOCK_DGRAM domain/proto implementation,
which delegates the work to host kernel sockets. This does not
run the entire kernel TCP/IP stack in userspace and therefore does
not require the ability to send or receive raw packets. This
implies that root priviledges are not required. As already said
above, only supports UDPv4 for now. Extending should be easy.
 1.1.2.3 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.2 05-Oct-2008  mjf Sync with HEAD.
 1.1.2.1 02-Oct-2008  mjf file Makefile.rumpnet was added on branch mjf-devfs2 on 2008-10-05 20:11:34 +0000
 1.2.6.2 03-Mar-2009  skrll Sync with HEAD.
 1.2.6.1 19-Jan-2009  skrll Sync with HEAD.
 1.2.4.2 19-Oct-2008  haad Sync with HEAD.
 1.2.4.1 06-Oct-2008  haad file Makefile.rumpnet was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.2.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.2.2.1 06-Oct-2008  skrll file Makefile.rumpnet was added on branch wrstuden-revivesa on 2008-10-10 22:36:17 +0000
 1.4.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.5.2.4 11-Aug-2010  yamt sync with head.
 1.5.2.3 11-Mar-2010  yamt sync with head
 1.5.2.2 04-May-2009  yamt sync with head.
 1.5.2.1 28-Feb-2009  yamt file Makefile.rumpnet was added on branch yamt-nfs-mp on 2009-05-04 08:14:32 +0000
 1.6.4.2 05-Mar-2011  rmind sync with head
 1.6.4.1 30-May-2010  rmind sync with head
 1.6.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.25 14-Jul-2021  ozaki-r Rump-ify ALTQ (librumpnet_altq.so)
 1.24 17-May-2021  yamaguchi Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable
 1.23 29-Sep-2020  roy branches: 1.23.6; 1.23.8;
rumpify vether(4)
 1.22 26-Aug-2020  riastradh Clarify wg(4)'s relation to WireGuard, pending further discussion.

Still planning to replace wgconfig(8) and wg-keygen(8) by one wg(8)
tool compatible with wireguard-tools; update wg(4) for the minor
changes from the 2018-06-30 spec to the 2020-06-01 spec; &c. This just
clarifies the current state of affairs as it exists in the development
tree for now.

Mark the man page EXPERIMENTAL for extra clarity.
 1.21 20-Aug-2020  riastradh [ozaki-r] Changes to the kernel core for wireguard
 1.20 10-Jan-2018  knakahara ipsec(4) interface supports rump now.
 1.19 27-May-2017  bouyer branches: 1.19.2;
merge the bouyer-socketcan branch to HEAD.

CAN stands for Controller Area Network, a broadcast network used
in automation and automotive fields. For example, the NMEA2000 standard
developped for marine devices uses a CAN network as the link layer.

This is an implementation of the linux socketcan API:
https://www.kernel.org/doc/Documentation/networking/can.txt
you can also see can(4).

This adds a new socket family (AF_CAN) and protocol (PF_CAN),
as well as the canconfig(8) utility, used to set timing parameter of
CAN hardware. Also inclued is a driver for the CAN controller
found in the allwinner A20 SoC (I tested it with an Olimex lime2 board,
connected with PIC18-based CAN devices).

There is also the canloop(4) pseudo-device, which allows to use
the socketcan API without CAN hardware.

At this time the CANFD part of the linux socketcan API is not implemented.
Error frames are not implemented either. But I could get the cansend and
canreceive utilities from the canutils package to build and run with minimal
changes. tcpudmp(8) can also be used to record frames, which can be
decoded with etherreal.
 1.18 14-Apr-2017  ozaki-r Rumpify netipsec

Note that we should modularize netipsec and reduce reverse symbol references
(referencing symbols of netipsec from net, netinet and netinet6) though,
the task needs lots of code changes. Prior to doing so, rumpifying it and
having ATF tests should be useful.
 1.17 16-Feb-2017  knakahara l2tp(4) support rump.
 1.16 26-Nov-2016  ozaki-r branches: 1.16.2;
Rumpify vlan(4)
 1.15 05-Sep-2016  ozaki-r Support tun devices on rump kernels
 1.14 15-Apr-2016  ozaki-r branches: 1.14.2;
Rump-ify if_pppoe

From s-yamaguchi@IIJ
 1.13 15-Nov-2015  pooka Always descend into component directories for rumpdescribe.
 1.12 04-Nov-2015  knakahara if_gif supports rump now.
 1.11 29-May-2015  pooka Add a rump kernel component for the tap device.

from Wei Liu <wei.liu2@citrix.com> via private email
 1.10 16-Nov-2013  rmind branches: 1.10.6;
Move rumpnet_bpfjit under MKSLJIT as well.
 1.9 16-Nov-2013  rmind Build rumpkern_sljit and rumpnet_bpfjit; include them into the sets.
 1.8 14-Aug-2013  pooka Separate inet and inet6, allows inet6-only rump kernels.
 1.7 01-Aug-2013  pooka Make it possible to not build virtif since it's not supported
on all hosts.

(no change to NetBSD)
 1.6 18-Jul-2013  kefren Add librumpnet_netmpls that provides MPLS features into rump kernels
ok'ed pooka@
 1.5 15-Aug-2012  rmind branches: 1.5.2; 1.5.4; 1.5.10;
Enable the build of librumpnet_npf.
 1.4 08-Dec-2010  pooka branches: 1.4.6; 1.4.10; 1.4.16;
agr(4) support
 1.3 08-Dec-2010  pooka Actually, unlike e.g. carp, bridge can be its own component since
it doesn't want to join the protosw party. We can deal with other
linkhappy stuff with weak symbols.

(where is our modular networking stack?)
 1.2 07-Dec-2010  pooka sockin cannot be loaded the same time as rumpnet_inet because both
provide a PF_INET domain. Guess that real inet is more useful and
don't put sockin on the "all components" list.
 1.1 05-Dec-2010  pooka Rename Makefile.rump${x} to Makefile.rump${x}comp for consistency.
 1.4.16.1 18-Nov-2012  riz Pull up following revision(s) (requested by rmind in ticket #678):
sys/rump/librump/rumpkern/rump.c: revision 1.243
sys/rump/librump/rumpkern/rump.c: revision 1.244
sys/rump/librump/rumpkern/rump.c: revision 1.245
sys/rump/librump/rumpkern/rump.c: revision 1.246
usr.sbin/npf/npftest/npftest.c: revision 1.5
usr.sbin/npf/npftest/README: revision 1.2
usr.sbin/npf/npftest/npftest.h: revision 1.5
sys/rump/net/Makefile.rumpnetcomp: revision 1.5
sys/rump/net/lib/libnpf/shlib_version: revision 1.1
sys/net/npf/npf_impl.h: revision 1.22
sys/rump/dev/lib/libnpf/Makefile: file removal
usr.sbin/npf/npftest/Makefile: revision 1.3
sys/rump/dev/lib/libnpf/component.c: file removal
sys/rump/dev/lib/libnpf/shlib_version: file removal
sys/net/npf/npf_state.c: revision 1.12
sys/rump/net/lib/libnpf/component.c: revision 1.1
usr.sbin/npf/npftest/libnpftest/npf_test_subr.c: revision 1.4
usr.sbin/npf/npftest/libnpftest/npf_test.h: revision 1.6
sys/rump/net/lib/libnpf/Makefile: revision 1.1
Move and rename librumpdev_npf to librumpnet_npf.
Enable the build of librumpnet_npf.
Add npf_state_setsampler() for _NPF_TESTING case. This also fixes the build.
Call pserialize_init() during rump start-up, since librump/net/npf
uses it.
It helps to include the declaration of the routine being called.
We also need kcpuset_init() now.
Use correct routine name - kcpuset_sysinit() vs kcpuset_init()
 1.4.10.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.10.1 30-Oct-2012  yamt sync with head
 1.4.6.2 05-Mar-2011  rmind sync with head
 1.4.6.1 08-Dec-2010  rmind file Makefile.rumpnetcomp was added on branch rmind-uvmplock on 2011-03-05 20:56:19 +0000
 1.5.10.1 23-Jul-2013  riastradh sync with HEAD
 1.5.4.2 18-May-2014  rmind sync with head
 1.5.4.1 28-Aug-2013  rmind sync with head
 1.5.2.2 03-Dec-2017  jdolecek update from HEAD
 1.5.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.10.6.6 28-Aug-2017  skrll Sync with HEAD
 1.10.6.5 05-Dec-2016  skrll Sync with HEAD
 1.10.6.4 05-Oct-2016  skrll Sync with HEAD
 1.10.6.3 22-Apr-2016  skrll Sync with HEAD
 1.10.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.10.6.1 06-Jun-2015  skrll Sync with HEAD
 1.14.2.3 26-Apr-2017  pgoyette Sync with HEAD
 1.14.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.14.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.16.2.2 21-Apr-2017  bouyer Sync with HEAD
 1.16.2.1 15-Jan-2017  bouyer Initial commit of a CAN socket layer, compatible with linux SoccketCAN
(but incomplete). Based on work from Robert Swindells.
 1.19.2.1 11-Feb-2018  snj Pull up following revision(s) (requested by ozaki-r in ticket #536):
distrib/sets/lists/base/shl.mi: 1.825
distrib/sets/lists/comp/mi: 1.2168-1.2169
distrib/sets/lists/comp/shl.mi: 1.310
distrib/sets/lists/debug/mi: 1.234
distrib/sets/lists/debug/shl.mi: 1.188
distrib/sets/lists/man/mi: 1.1570
distrib/sets/lists/tests/mi: 1.772
etc/mtree/NetBSD.dist.tests: 1.150
share/man/man4/Makefile: 1.650
share/man/man4/ipsec.4: 1.42-1.43
share/man/man4/ipsecif.4: 1.1-1.5
sys/arch/amd64/conf/ALL: 1.77
sys/arch/amd64/conf/GENERIC: 1.480
sys/conf/files: 1.1191
sys/net/Makefile: 1.34
sys/net/files.net: 1.14
sys/net/if.c: 1.404
sys/net/if.h: 1.248
sys/net/if_gif.c: 1.135
sys/net/if_ipsec.c: 1.1-1.3
sys/net/if_ipsec.h: 1.1
sys/net/if_l2tp.c: 1.16
sys/net/if_types.h: 1.28
sys/netinet/in.c: 1.214
sys/netinet/in.h: 1.103
sys/netinet/in_gif.c: 1.92
sys/netinet/ip_var.h: 1.122
sys/netinet6/in6.c: 1.257
sys/netinet6/in6.h: 1.88
sys/netinet6/in6_gif.c: 1.90
sys/netinet6/ip6_var.h: 1.75
sys/netipsec/Makefile: 1.6
sys/netipsec/files.netipsec: 1.13
sys/netipsec/ipsec.h: 1.62
sys/netipsec/ipsecif.c: 1.1
sys/netipsec/ipsecif.h: 1.1
sys/netipsec/key.c: 1.246-1.247
sys/netipsec/key.h: 1.34
sys/rump/net/Makefile.rumpnetcomp: 1.20
sys/rump/net/lib/libipsec/IPSEC.ioconf: 1.1
sys/rump/net/lib/libipsec/Makefile: 1.1
sys/rump/net/lib/libipsec/ipsec_component.c: 1.1
tests/net/Makefile: 1.34
tests/net/if_ipsec/Makefile: 1.1
tests/net/if_ipsec/t_ipsec.sh: 1.1-1.2
Don't touch an SP without a reference to it
unify processing to check nesting count for some tunnel protocols.
add ipsec(4) interface, which is used for route-based VPN.
man and ATF are added later, please see man for details.
reviewed by christos@n.o, joerg@n.o and ozaki-r@n.o, thanks.
https://mail-index.netbsd.org/tech-net/2017/12/18/msg006557.html
ipsec(4) interface supports rump now.
add ipsec(4) interface ATF.
add ipsec(4) interface man as ipsecif.4.
add ipsec(4) interface to amd64/GENERIC and amd64/ALL configs.
apply in{,6}_tunnel_validate() to gif(4).
Spell IPsec that way. Simplify macro usage. Sort SEE ALSO. Bump
date for previous.
Improve wording and macro use.
Some parts are not clear to me, so someone with knowledge of ipsecif(4)
should improve this some more.
Improve ipsecif.4. Default port ipsec(4) NAT-T is tested now.
pointed out by wiz@n.o and suggested by ozaki-r@n.o, thanks.
Change the prefix of test names to ipsecif_ to distinguish from tests for ipsec(4)
New sentence, new line. Remove empty macro.
Fix PR kern/52920. Pointed out by David Binderman, thanks.
Improve wording, and put a new drawing, from me and Kengo Nakahara.
apply a little more #ifdef INET/INET6. fixes !INET6 builds.
 1.23.8.1 31-May-2021  cjep sync with head
 1.23.6.2 01-Aug-2021  thorpej Sync with HEAD.
 1.23.6.1 17-Jun-2021  thorpej Sync w/ HEAD.
 1.2 05-Dec-2010  pooka Rename Makefile.rump${x} to Makefile.rump${x}comp for consistency.
 1.1 02-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.24;
Add a very simplistic PF_INET/SOCK_DGRAM domain/proto implementation,
which delegates the work to host kernel sockets. This does not
run the entire kernel TCP/IP stack in userspace and therefore does
not require the ability to send or receive raw packets. This
implies that root priviledges are not required. As already said
above, only supports UDPv4 for now. Extending should be easy.
 1.1.24.1 05-Mar-2011  rmind sync with head
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 02-Oct-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:32 +0000
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 02-Oct-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:07 +0000
 1.1.4.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.4.1 02-Oct-2008  skrll file Makefile was added on branch wrstuden-revivesa on 2008-10-10 22:36:17 +0000
 1.1.2.2 05-Oct-2008  mjf Sync with HEAD.
 1.1.2.1 02-Oct-2008  mjf file Makefile was added on branch mjf-devfs2 on 2008-10-05 20:11:34 +0000
 1.10 03-Jun-2023  lukem adapt to ${CC_WNO_ADDRESS_OF_PACKED_MEMBER}

Simplify CWARNFLAGS to use ${CC_WNO_ADDRESS_OF_PACKED_MEMBER}
which works for both clang and gcc, and remove compiler-specific
equivalents.
 1.9 03-Jun-2023  lukem bsd.own.mk: rename to CC_WNO_ADDRESS_OF_PACKED_MEMBER

Provide a single variable
CC_WNO_ADDRESS_OF_PACKED_MEMBER
with options for both clang and gcc, to replace
CLANG_NO_ADDR_OF_PACKED_MEMBER
CC_NO_ADDR_OF_PACKED_MEMBER
GCC_NO_ADDR_OF_PACKED_MEMBER

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.8 06-Sep-2020  mrg add support for new GCC 9 warnings that may be too much to fix
right now. new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree. mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it. (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.) clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
 1.7 11-Jan-2017  joerg Disable a couple of warnings until further investigation.
 1.6 26-Jan-2016  pooka branches: 1.6.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.5 24-Aug-2015  pooka remove librump/rumpnet/opt, consolidate in rump/include/opt
 1.4 01-Mar-2010  pooka branches: 1.4.20; 1.4.38;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.3 27-May-2009  pooka branches: 1.3.2;
Add a dummyif, which doesn't actually traffic any cargo, but since
it has no backend it can always be attached and is therefore
convenient for testing ifconfig.
 1.2 01-Jan-2009  pooka branches: 1.2.2; 1.2.4;
Purge multiple kernel opt files.
 1.1 02-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8;
Add a very simplistic PF_INET/SOCK_DGRAM domain/proto implementation,
which delegates the work to host kernel sockets. This does not
run the entire kernel TCP/IP stack in userspace and therefore does
not require the ability to send or receive raw packets. This
implies that root priviledges are not required. As already said
above, only supports UDPv4 for now. Extending should be easy.
 1.1.8.1 19-Jan-2009  skrll Sync with HEAD.
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 02-Oct-2008  haad file Makefile.inc was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.1.4.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.4.1 02-Oct-2008  skrll file Makefile.inc was added on branch wrstuden-revivesa on 2008-10-10 22:36:17 +0000
 1.1.2.3 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.2 05-Oct-2008  mjf Sync with HEAD.
 1.1.2.1 02-Oct-2008  mjf file Makefile.inc was added on branch mjf-devfs2 on 2008-10-05 20:11:34 +0000
 1.2.4.4 11-Mar-2010  yamt sync with head
 1.2.4.3 20-Jun-2009  yamt sync with head
 1.2.4.2 04-May-2009  yamt sync with head.
 1.2.4.1 01-Jan-2009  yamt file Makefile.inc was added on branch yamt-nfs-mp on 2009-05-04 08:14:32 +0000
 1.2.2.1 23-Jul-2009  jym Sync with HEAD.
 1.3.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.4.38.3 05-Feb-2017  skrll Sync with HEAD
 1.4.38.2 19-Mar-2016  skrll Sync with HEAD
 1.4.38.1 22-Sep-2015  skrll Sync with HEAD
 1.4.20.1 03-Dec-2017  jdolecek update from HEAD
 1.6.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
add ioconf files for pseudo device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file AGR.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file AGR.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:16 +0000
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 20-Aug-2015  christos add ioconf files for pseudo device attach prototypes
 1.2 13-Mar-2014  pooka branches: 1.2.6;
rename component.c -> agr_component.c
 1.1 08-Dec-2010  pooka branches: 1.1.6; 1.1.10; 1.1.20; 1.1.24;
agr(4) support
 1.1.24.1 18-May-2014  rmind sync with head
 1.1.20.2 03-Dec-2017  jdolecek update from HEAD
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 08-Dec-2010  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:19 +0000
 1.2.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.6.1 22-Sep-2015  skrll Sync with HEAD
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> agr_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file agr_component.c was added on branch tls-maxphys on 2014-08-20 00:04:42 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file agr_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:16 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file agr_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2 13-Mar-2014  pooka rename component.c -> agr_component.c
 1.1 08-Dec-2010  pooka branches: 1.1.6; 1.1.10; 1.1.20; 1.1.24;
agr(4) support
 1.1.24.1 18-May-2014  rmind sync with head
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 08-Dec-2010  rmind file component.c was added on branch rmind-uvmplock on 2011-03-05 20:56:19 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 08-Dec-2010  pooka branches: 1.1.6; 1.1.20; 1.1.38;
agr(4) support
 1.1.38.1 06-Apr-2015  skrll Sync with HEAD
 1.1.20.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 08-Dec-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:19 +0000
 1.1 14-Jul-2021  ozaki-r branches: 1.1.4;
Rump-ify ALTQ (librumpnet_altq.so)
 1.1.4.2 01-Aug-2021  thorpej Sync with HEAD.
 1.1.4.1 14-Jul-2021  thorpej file Makefile was added on branch thorpej-i2c-spi-conf on 2021-08-01 22:42:43 +0000
 1.1 14-Jul-2021  ozaki-r branches: 1.1.4;
Rump-ify ALTQ (librumpnet_altq.so)
 1.1.4.2 01-Aug-2021  thorpej Sync with HEAD.
 1.1.4.1 14-Jul-2021  thorpej file altq_component.c was added on branch thorpej-i2c-spi-conf on 2021-08-01 22:42:43 +0000
 1.2 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.1 16-Nov-2013  rmind branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add rumpkern_sljit and rumpnet_bpfjit modules.
 1.1.12.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 16-Nov-2013  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:42 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 16-Nov-2013  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:16 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 16-Nov-2013  rmind file Makefile was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 16-Nov-2013  rmind branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
Add rumpkern_sljit and rumpnet_bpfjit modules.
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 16-Nov-2013  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:42 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 16-Nov-2013  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:16 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 16-Nov-2013  rmind file shlib_version was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
add ioconf files for pseudo device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file BRIDGE.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file BRIDGE.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:16 +0000
 1.5 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.4 24-Aug-2015  pooka purge rump/net of component-specific opt directories
 1.3 20-Aug-2015  christos add ioconf files for pseudo device attach prototypes
 1.2 13-Mar-2014  pooka branches: 1.2.6;
rename component.c -> bridge_component.c
 1.1 08-Dec-2010  pooka branches: 1.1.6; 1.1.10; 1.1.20; 1.1.24;
Actually, unlike e.g. carp, bridge can be its own component since
it doesn't want to join the protosw party. We can deal with other
linkhappy stuff with weak symbols.

(where is our modular networking stack?)
 1.1.24.1 18-May-2014  rmind sync with head
 1.1.20.2 03-Dec-2017  jdolecek update from HEAD
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 08-Dec-2010  rmind file Makefile was added on branch rmind-uvmplock on 2011-03-05 20:56:20 +0000
 1.2.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.6.1 22-Sep-2015  skrll Sync with HEAD
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> bridge_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file bridge_component.c was added on branch tls-maxphys on 2014-08-20 00:04:42 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file bridge_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:16 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file bridge_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2 13-Mar-2014  pooka rename component.c -> bridge_component.c
 1.1 08-Dec-2010  pooka branches: 1.1.6; 1.1.10; 1.1.20; 1.1.24;
Actually, unlike e.g. carp, bridge can be its own component since
it doesn't want to join the protosw party. We can deal with other
linkhappy stuff with weak symbols.

(where is our modular networking stack?)
 1.1.24.1 18-May-2014  rmind sync with head
 1.1.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 08-Dec-2010  rmind file component.c was added on branch rmind-uvmplock on 2011-03-05 20:56:20 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 08-Dec-2010  pooka branches: 1.1.6; 1.1.20; 1.1.38;
Actually, unlike e.g. carp, bridge can be its own component since
it doesn't want to join the protosw party. We can deal with other
linkhappy stuff with weak symbols.

(where is our modular networking stack?)
 1.1.38.1 06-Apr-2015  skrll Sync with HEAD
 1.1.20.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 05-Mar-2011  rmind sync with head
 1.1.6.1 08-Dec-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2011-03-05 20:56:20 +0000
 1.1 04-Nov-2015  knakahara branches: 1.1.2; 1.1.18;
if_gif supports rump now.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 04-Nov-2015  jdolecek file GIF.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.1.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1 04-Nov-2015  skrll file GIF.ioconf was added on branch nick-nhusb on 2015-12-27 12:10:17 +0000
 1.1 04-Nov-2015  knakahara branches: 1.1.2; 1.1.18;
if_gif supports rump now.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 04-Nov-2015  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.1.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1 04-Nov-2015  skrll file Makefile was added on branch nick-nhusb on 2015-12-27 12:10:17 +0000
 1.2 26-Jan-2016  pooka branches: 1.2.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 04-Nov-2015  knakahara branches: 1.1.2;
if_gif supports rump now.
 1.1.2.3 19-Mar-2016  skrll Sync with HEAD
 1.1.2.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.1 04-Nov-2015  skrll file gif_component.c was added on branch nick-nhusb on 2015-12-27 12:10:17 +0000
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 26-Jan-2016  jdolecek file gif_component.c was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.1 10-Jan-2018  knakahara branches: 1.1.2;
ipsec(4) interface supports rump now.
 1.1.2.2 11-Feb-2018  snj Pull up following revision(s) (requested by ozaki-r in ticket #536):
distrib/sets/lists/base/shl.mi: 1.825
distrib/sets/lists/comp/mi: 1.2168-1.2169
distrib/sets/lists/comp/shl.mi: 1.310
distrib/sets/lists/debug/mi: 1.234
distrib/sets/lists/debug/shl.mi: 1.188
distrib/sets/lists/man/mi: 1.1570
distrib/sets/lists/tests/mi: 1.772
etc/mtree/NetBSD.dist.tests: 1.150
share/man/man4/Makefile: 1.650
share/man/man4/ipsec.4: 1.42-1.43
share/man/man4/ipsecif.4: 1.1-1.5
sys/arch/amd64/conf/ALL: 1.77
sys/arch/amd64/conf/GENERIC: 1.480
sys/conf/files: 1.1191
sys/net/Makefile: 1.34
sys/net/files.net: 1.14
sys/net/if.c: 1.404
sys/net/if.h: 1.248
sys/net/if_gif.c: 1.135
sys/net/if_ipsec.c: 1.1-1.3
sys/net/if_ipsec.h: 1.1
sys/net/if_l2tp.c: 1.16
sys/net/if_types.h: 1.28
sys/netinet/in.c: 1.214
sys/netinet/in.h: 1.103
sys/netinet/in_gif.c: 1.92
sys/netinet/ip_var.h: 1.122
sys/netinet6/in6.c: 1.257
sys/netinet6/in6.h: 1.88
sys/netinet6/in6_gif.c: 1.90
sys/netinet6/ip6_var.h: 1.75
sys/netipsec/Makefile: 1.6
sys/netipsec/files.netipsec: 1.13
sys/netipsec/ipsec.h: 1.62
sys/netipsec/ipsecif.c: 1.1
sys/netipsec/ipsecif.h: 1.1
sys/netipsec/key.c: 1.246-1.247
sys/netipsec/key.h: 1.34
sys/rump/net/Makefile.rumpnetcomp: 1.20
sys/rump/net/lib/libipsec/IPSEC.ioconf: 1.1
sys/rump/net/lib/libipsec/Makefile: 1.1
sys/rump/net/lib/libipsec/ipsec_component.c: 1.1
tests/net/Makefile: 1.34
tests/net/if_ipsec/Makefile: 1.1
tests/net/if_ipsec/t_ipsec.sh: 1.1-1.2
Don't touch an SP without a reference to it
unify processing to check nesting count for some tunnel protocols.
add ipsec(4) interface, which is used for route-based VPN.
man and ATF are added later, please see man for details.
reviewed by christos@n.o, joerg@n.o and ozaki-r@n.o, thanks.
https://mail-index.netbsd.org/tech-net/2017/12/18/msg006557.html
ipsec(4) interface supports rump now.
add ipsec(4) interface ATF.
add ipsec(4) interface man as ipsecif.4.
add ipsec(4) interface to amd64/GENERIC and amd64/ALL configs.
apply in{,6}_tunnel_validate() to gif(4).
Spell IPsec that way. Simplify macro usage. Sort SEE ALSO. Bump
date for previous.
Improve wording and macro use.
Some parts are not clear to me, so someone with knowledge of ipsecif(4)
should improve this some more.
Improve ipsecif.4. Default port ipsec(4) NAT-T is tested now.
pointed out by wiz@n.o and suggested by ozaki-r@n.o, thanks.
Change the prefix of test names to ipsecif_ to distinguish from tests for ipsec(4)
New sentence, new line. Remove empty macro.
Fix PR kern/52920. Pointed out by David Binderman, thanks.
Improve wording, and put a new drawing, from me and Kengo Nakahara.
apply a little more #ifdef INET/INET6. fixes !INET6 builds.
 1.1.2.1 10-Jan-2018  snj file IPSEC.ioconf was added on branch netbsd-8 on 2018-02-11 21:17:35 +0000
 1.1 10-Jan-2018  knakahara branches: 1.1.2;
ipsec(4) interface supports rump now.
 1.1.2.2 11-Feb-2018  snj Pull up following revision(s) (requested by ozaki-r in ticket #536):
distrib/sets/lists/base/shl.mi: 1.825
distrib/sets/lists/comp/mi: 1.2168-1.2169
distrib/sets/lists/comp/shl.mi: 1.310
distrib/sets/lists/debug/mi: 1.234
distrib/sets/lists/debug/shl.mi: 1.188
distrib/sets/lists/man/mi: 1.1570
distrib/sets/lists/tests/mi: 1.772
etc/mtree/NetBSD.dist.tests: 1.150
share/man/man4/Makefile: 1.650
share/man/man4/ipsec.4: 1.42-1.43
share/man/man4/ipsecif.4: 1.1-1.5
sys/arch/amd64/conf/ALL: 1.77
sys/arch/amd64/conf/GENERIC: 1.480
sys/conf/files: 1.1191
sys/net/Makefile: 1.34
sys/net/files.net: 1.14
sys/net/if.c: 1.404
sys/net/if.h: 1.248
sys/net/if_gif.c: 1.135
sys/net/if_ipsec.c: 1.1-1.3
sys/net/if_ipsec.h: 1.1
sys/net/if_l2tp.c: 1.16
sys/net/if_types.h: 1.28
sys/netinet/in.c: 1.214
sys/netinet/in.h: 1.103
sys/netinet/in_gif.c: 1.92
sys/netinet/ip_var.h: 1.122
sys/netinet6/in6.c: 1.257
sys/netinet6/in6.h: 1.88
sys/netinet6/in6_gif.c: 1.90
sys/netinet6/ip6_var.h: 1.75
sys/netipsec/Makefile: 1.6
sys/netipsec/files.netipsec: 1.13
sys/netipsec/ipsec.h: 1.62
sys/netipsec/ipsecif.c: 1.1
sys/netipsec/ipsecif.h: 1.1
sys/netipsec/key.c: 1.246-1.247
sys/netipsec/key.h: 1.34
sys/rump/net/Makefile.rumpnetcomp: 1.20
sys/rump/net/lib/libipsec/IPSEC.ioconf: 1.1
sys/rump/net/lib/libipsec/Makefile: 1.1
sys/rump/net/lib/libipsec/ipsec_component.c: 1.1
tests/net/Makefile: 1.34
tests/net/if_ipsec/Makefile: 1.1
tests/net/if_ipsec/t_ipsec.sh: 1.1-1.2
Don't touch an SP without a reference to it
unify processing to check nesting count for some tunnel protocols.
add ipsec(4) interface, which is used for route-based VPN.
man and ATF are added later, please see man for details.
reviewed by christos@n.o, joerg@n.o and ozaki-r@n.o, thanks.
https://mail-index.netbsd.org/tech-net/2017/12/18/msg006557.html
ipsec(4) interface supports rump now.
add ipsec(4) interface ATF.
add ipsec(4) interface man as ipsecif.4.
add ipsec(4) interface to amd64/GENERIC and amd64/ALL configs.
apply in{,6}_tunnel_validate() to gif(4).
Spell IPsec that way. Simplify macro usage. Sort SEE ALSO. Bump
date for previous.
Improve wording and macro use.
Some parts are not clear to me, so someone with knowledge of ipsecif(4)
should improve this some more.
Improve ipsecif.4. Default port ipsec(4) NAT-T is tested now.
pointed out by wiz@n.o and suggested by ozaki-r@n.o, thanks.
Change the prefix of test names to ipsecif_ to distinguish from tests for ipsec(4)
New sentence, new line. Remove empty macro.
Fix PR kern/52920. Pointed out by David Binderman, thanks.
Improve wording, and put a new drawing, from me and Kengo Nakahara.
apply a little more #ifdef INET/INET6. fixes !INET6 builds.
 1.1.2.1 10-Jan-2018  snj file Makefile was added on branch netbsd-8 on 2018-02-11 21:17:35 +0000
 1.1 10-Jan-2018  knakahara branches: 1.1.2;
ipsec(4) interface supports rump now.
 1.1.2.2 11-Feb-2018  snj Pull up following revision(s) (requested by ozaki-r in ticket #536):
distrib/sets/lists/base/shl.mi: 1.825
distrib/sets/lists/comp/mi: 1.2168-1.2169
distrib/sets/lists/comp/shl.mi: 1.310
distrib/sets/lists/debug/mi: 1.234
distrib/sets/lists/debug/shl.mi: 1.188
distrib/sets/lists/man/mi: 1.1570
distrib/sets/lists/tests/mi: 1.772
etc/mtree/NetBSD.dist.tests: 1.150
share/man/man4/Makefile: 1.650
share/man/man4/ipsec.4: 1.42-1.43
share/man/man4/ipsecif.4: 1.1-1.5
sys/arch/amd64/conf/ALL: 1.77
sys/arch/amd64/conf/GENERIC: 1.480
sys/conf/files: 1.1191
sys/net/Makefile: 1.34
sys/net/files.net: 1.14
sys/net/if.c: 1.404
sys/net/if.h: 1.248
sys/net/if_gif.c: 1.135
sys/net/if_ipsec.c: 1.1-1.3
sys/net/if_ipsec.h: 1.1
sys/net/if_l2tp.c: 1.16
sys/net/if_types.h: 1.28
sys/netinet/in.c: 1.214
sys/netinet/in.h: 1.103
sys/netinet/in_gif.c: 1.92
sys/netinet/ip_var.h: 1.122
sys/netinet6/in6.c: 1.257
sys/netinet6/in6.h: 1.88
sys/netinet6/in6_gif.c: 1.90
sys/netinet6/ip6_var.h: 1.75
sys/netipsec/Makefile: 1.6
sys/netipsec/files.netipsec: 1.13
sys/netipsec/ipsec.h: 1.62
sys/netipsec/ipsecif.c: 1.1
sys/netipsec/ipsecif.h: 1.1
sys/netipsec/key.c: 1.246-1.247
sys/netipsec/key.h: 1.34
sys/rump/net/Makefile.rumpnetcomp: 1.20
sys/rump/net/lib/libipsec/IPSEC.ioconf: 1.1
sys/rump/net/lib/libipsec/Makefile: 1.1
sys/rump/net/lib/libipsec/ipsec_component.c: 1.1
tests/net/Makefile: 1.34
tests/net/if_ipsec/Makefile: 1.1
tests/net/if_ipsec/t_ipsec.sh: 1.1-1.2
Don't touch an SP without a reference to it
unify processing to check nesting count for some tunnel protocols.
add ipsec(4) interface, which is used for route-based VPN.
man and ATF are added later, please see man for details.
reviewed by christos@n.o, joerg@n.o and ozaki-r@n.o, thanks.
https://mail-index.netbsd.org/tech-net/2017/12/18/msg006557.html
ipsec(4) interface supports rump now.
add ipsec(4) interface ATF.
add ipsec(4) interface man as ipsecif.4.
add ipsec(4) interface to amd64/GENERIC and amd64/ALL configs.
apply in{,6}_tunnel_validate() to gif(4).
Spell IPsec that way. Simplify macro usage. Sort SEE ALSO. Bump
date for previous.
Improve wording and macro use.
Some parts are not clear to me, so someone with knowledge of ipsecif(4)
should improve this some more.
Improve ipsecif.4. Default port ipsec(4) NAT-T is tested now.
pointed out by wiz@n.o and suggested by ozaki-r@n.o, thanks.
Change the prefix of test names to ipsecif_ to distinguish from tests for ipsec(4)
New sentence, new line. Remove empty macro.
Fix PR kern/52920. Pointed out by David Binderman, thanks.
Improve wording, and put a new drawing, from me and Kengo Nakahara.
apply a little more #ifdef INET/INET6. fixes !INET6 builds.
 1.1.2.1 10-Jan-2018  snj file ipsec_component.c was added on branch netbsd-8 on 2018-02-11 21:17:35 +0000
 1.1 16-Feb-2017  knakahara branches: 1.1.2; 1.1.6; 1.1.14; 1.1.18;
l2tp(4) support rump.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 16-Feb-2017  jdolecek file L2TP.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.1.14.2 28-Aug-2017  skrll Sync with HEAD
 1.1.14.1 16-Feb-2017  skrll file L2TP.ioconf was added on branch nick-nhusb on 2017-08-28 17:53:15 +0000
 1.1.6.2 16-Feb-2017  knakahara 1177554
 1.1.6.1 16-Feb-2017  knakahara file L2TP.ioconf was added on branch bouyer-socketcan on 2017-02-16 08:39:11 +0000
 1.1.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.1.2.1 16-Feb-2017  pgoyette file L2TP.ioconf was added on branch pgoyette-localcount on 2017-03-20 06:57:53 +0000
 1.1 16-Feb-2017  knakahara branches: 1.1.2; 1.1.6; 1.1.14; 1.1.18;
l2tp(4) support rump.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 16-Feb-2017  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.1.14.2 28-Aug-2017  skrll Sync with HEAD
 1.1.14.1 16-Feb-2017  skrll file Makefile was added on branch nick-nhusb on 2017-08-28 17:53:15 +0000
 1.1.6.2 16-Feb-2017  knakahara 1177554
 1.1.6.1 16-Feb-2017  knakahara file Makefile was added on branch bouyer-socketcan on 2017-02-16 08:39:11 +0000
 1.1.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.1.2.1 16-Feb-2017  pgoyette file Makefile was added on branch pgoyette-localcount on 2017-03-20 06:57:53 +0000
 1.1 16-Feb-2017  knakahara branches: 1.1.2; 1.1.6; 1.1.14; 1.1.18;
l2tp(4) support rump.
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 16-Feb-2017  jdolecek file l2tp_component.c was added on branch tls-maxphys on 2017-12-03 11:39:17 +0000
 1.1.14.2 28-Aug-2017  skrll Sync with HEAD
 1.1.14.1 16-Feb-2017  skrll file l2tp_component.c was added on branch nick-nhusb on 2017-08-28 17:53:15 +0000
 1.1.6.2 16-Feb-2017  knakahara 1177554
 1.1.6.1 16-Feb-2017  knakahara file l2tp_component.c was added on branch bouyer-socketcan on 2017-02-16 08:39:11 +0000
 1.1.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.1.2.1 16-Feb-2017  pgoyette file l2tp_component.c was added on branch pgoyette-localcount on 2017-03-20 06:57:53 +0000
 1.1 17-May-2021  yamaguchi branches: 1.1.2; 1.1.6;
Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable
 1.1.6.2 17-Jun-2021  thorpej Sync w/ HEAD.
 1.1.6.1 17-May-2021  thorpej file LAGG.ioconf was added on branch thorpej-i2c-spi-conf on 2021-06-17 04:46:36 +0000
 1.1.2.2 31-May-2021  cjep sync with head
 1.1.2.1 17-May-2021  cjep file LAGG.ioconf was added on branch cjep_staticlib_x on 2021-05-31 22:15:22 +0000
 1.1 17-May-2021  yamaguchi branches: 1.1.2; 1.1.6;
Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable
 1.1.6.2 17-Jun-2021  thorpej Sync w/ HEAD.
 1.1.6.1 17-May-2021  thorpej file Makefile was added on branch thorpej-i2c-spi-conf on 2021-06-17 04:46:36 +0000
 1.1.2.2 31-May-2021  cjep sync with head
 1.1.2.1 17-May-2021  cjep file Makefile was added on branch cjep_staticlib_x on 2021-05-31 22:15:22 +0000
 1.1 17-May-2021  yamaguchi branches: 1.1.2; 1.1.6;
Add a new link-aggregation pseudo interface named lagg(4)

- FreeBSD's lagg(4) based implementation
- MP-safe and MP-scalable
 1.1.6.2 17-Jun-2021  thorpej Sync w/ HEAD.
 1.1.6.1 17-May-2021  thorpej file lagg_component.c was added on branch thorpej-i2c-spi-conf on 2021-06-17 04:46:36 +0000
 1.1.2.2 31-May-2021  cjep sync with head
 1.1.2.1 17-May-2021  cjep file lagg_component.c was added on branch cjep_staticlib_x on 2021-05-31 22:15:22 +0000
 1.7 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.6 13-Mar-2014  pooka branches: 1.6.6;
rename component.c -> local_component.c
 1.5 16-Feb-2010  pooka branches: 1.5.10; 1.5.20; 1.5.24;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.4 12-Dec-2009  pooka branches: 1.4.2;
Use linker script to make __start/stop_link_set_modules be present
in libs built with binutils >=2.19. This is a less error-prone
method than the previous where components had to be tagged in the
Makefile as modules (and if they weren't, things broke. and vice
versa).
 1.3 13-Sep-2009  pooka binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
for orphaned sections to using PROVIDE. What this means is that
unless a rump component internally references that symbol, it will
not be included in the component shared library, and hence cannot
be referenced when the component is loaded. Add a workaround which
works both with 2.16 and 2.19: force a reference to the __start
symbol internally and hence retain it in the resulting library.
 1.2 28-May-2009  pooka Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.1 08-Feb-2009  pooka branches: 1.1.2; 1.1.4; 1.1.6;
Add a PF_LOCAL rump kernel component.
 1.1.6.5 11-Mar-2010  yamt sync with head
 1.1.6.4 16-Sep-2009  yamt sync with head
 1.1.6.3 20-Jun-2009  yamt sync with head
 1.1.6.2 04-May-2009  yamt sync with head.
 1.1.6.1 08-Feb-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:32 +0000
 1.1.4.2 03-Mar-2009  skrll Sync with HEAD.
 1.1.4.1 08-Feb-2009  skrll file Makefile was added on branch nick-hppapmap on 2009-03-03 18:34:30 +0000
 1.1.2.1 23-Jul-2009  jym Sync with HEAD.
 1.4.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.5.24.1 18-May-2014  rmind sync with head
 1.5.20.2 03-Dec-2017  jdolecek update from HEAD
 1.5.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3 13-Mar-2014  pooka rename component.c -> local_component.c
 1.2 01-Mar-2010  pooka branches: 1.2.10; 1.2.20; 1.2.24;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 28-May-2009  pooka branches: 1.1.2; 1.1.4;
Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.1.4.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 28-May-2009  yamt file component.c was added on branch yamt-nfs-mp on 2009-06-20 07:20:36 +0000
 1.2.24.1 18-May-2014  rmind sync with head
 1.2.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 22-Aug-2014  pooka branches: 1.2.2;
Nuke the DOMAINADD() macro and just call domain_attach(), now that things
work correctly that way.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
rename component.c -> local_component.c
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file local_component.c was added on branch tls-maxphys on 2014-08-20 00:04:42 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file local_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:16 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file local_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2.2.1 19-Mar-2016  skrll Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 08-Feb-2009  pooka branches: 1.1.4; 1.1.6; 1.1.28; 1.1.46;
Add a PF_LOCAL rump kernel component.
 1.1.46.1 06-Apr-2015  skrll Sync with HEAD
 1.1.28.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 04-May-2009  yamt sync with head.
 1.1.6.1 08-Feb-2009  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:32 +0000
 1.1.4.2 03-Mar-2009  skrll Sync with HEAD.
 1.1.4.1 08-Feb-2009  skrll file shlib_version was added on branch nick-hppapmap on 2009-03-03 18:34:30 +0000
 1.36 03-Jun-2023  lukem bsd.own.mk: rename GCC_NO_* to CC_WNO_*

Rename compiler-warning-disable variables from
GCC_NO_warning
to
CC_WNO_warning
where warning is the full warning name as used by the compiler.

GCC_NO_IMPLICIT_FALLTHRU is CC_WNO_IMPLICIT_FALLTHROUGH

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
 1.35 12-Apr-2021  mrg new GCC_NO_* uses for warning issues. most of the users of the new
GCC_NO_RETURN_LOCAL_ADDR are bugs in GCC itself, not the code.
 1.34 12-Sep-2020  roy branches: 1.34.4;
rump: Add nd.c to libnet
 1.33 29-Jan-2020  thorpej Add if_stats.c to rumpnet.
 1.32 13-Oct-2019  mrg branches: 1.32.2;
introduce some common variables for use in GCC warning disables:

GCC_NO_FORMAT_TRUNCATION -Wno-format-truncation (GCC 7/8)
GCC_NO_STRINGOP_TRUNCATION -Wno-stringop-truncation (GCC 8)
GCC_NO_STRINGOP_OVERFLOW -Wno-stringop-overflow (GCC 8)
GCC_NO_CAST_FUNCTION_TYPE -Wno-cast-function-type (GCC 8)

use these to turn off warnings for most GCC-8 complaints. many
of these are false positives, most of the real bugs are already
commited, or are yet to come.


we plan to introduce versions of (some?) of these that use the
"-Wno-error=" form, which still displays the warnings but does
not make it an error, and all of the above will be re-considered
as either being "fix me" (warning still displayed) or "warning
is wrong."
 1.31 12-Dec-2018  rin PR kern/53562

Add ether_sw_offload_[tr]x: handle TX/RX offload options in software.
Since this violates separation b/w L2 and L3/L4, new files are added
rather than having the routines in sys/net/if_ethersubr.c.

OK msaitoh thorpej
 1.30 17-Jan-2017  ozaki-r branches: 1.30.12; 1.30.14;
Fix build (undefined reference to `rumpns_pfil_init' on usr.sbin/puffs/rump_nfs)
 1.29 21-Sep-2016  roy branches: 1.29.2;
Add ifam_pid and ifam_addrflags to ifa_msghdr.
Re-version RTM_NEWADDR, RTM_DELADDR, RTM_CHGADDR and NET_RT_IFLIST.
Add compat code for old version.
 1.28 15-Apr-2016  ozaki-r branches: 1.28.2;
Rump-ify if_pppoe

From s-yamaguchi@IIJ
 1.27 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.26 31-Aug-2015  ozaki-r Hook up lltable/llentry with the kernel (and rumpkernel)

It is built and initialized on bootup, but there is no user for now.

Most codes in in.c are imported from FreeBSD as well as lltable/llentry.
 1.25 24-Aug-2015  pooka purge rump/net of component-specific opt directories
 1.24 20-Aug-2015  christos add ioconf files for pseudo device attach prototypes
 1.23 23-Apr-2015  pooka Rename RUMP_COMPAT to RUMP_NBCOMBAT to better signify what the
variable does.
 1.22 23-Apr-2015  pooka COMPAT_OIF{DATA,REQ} are defined by compat/sys/sockio.h if need be,
don't define them here unconditionally.
 1.21 22-Apr-2015  pooka Build compat code only when specified by RUMP_COMPAT
 1.20 13-Mar-2014  pooka branches: 1.20.6;
rename component.c -> net_component.c
 1.19 14-Aug-2013  pooka Separate inet and inet6, allows inet6-only rump kernels.
 1.18 18-Jul-2013  kefren Add librumpnet_netmpls that provides MPLS features into rump kernels
ok'ed pooka@
 1.17 01-Jun-2013  pooka branches: 1.17.2; 1.17.4;
cosmetic: put portalgo.c in the conceptually right place
 1.16 03-Aug-2012  pooka branches: 1.16.2;
no need to include code which is already provided by the faction base
 1.15 25-Jun-2012  martin Adjust to rfc6056 rename to portalgo
 1.14 14-Apr-2012  rmind rumpnet_net: add pfil.c
 1.13 24-Sep-2011  christos branches: 1.13.2; 1.13.6; 1.13.8;
add rfc6056.c
 1.12 31-Mar-2011  dyoung Hide the radix-trie implementation of the forwarding table so that we
will have an easier time replacing it with something different, even if
it is a second radix-trie implementation.

sys/net/route.c and sys/net/rtsock.c no longer operate directly on
radix_nodes or radix_node_heads.

Hopefully this will reduce the temptation to implement multipath or
source-based routing using grotty hacks to the grotty old radix-trie
code, too. :-)
 1.11 01-Feb-2011  matt Add a new AF/PF_ROUTE which is 64-bit clean which makes the routing socket
interface (and its associated sysctls) act identically for both 32 and 64 bit
programs. The old unclean one remains for backward compatibility.
 1.10 08-Dec-2010  pooka branches: 1.10.2; 1.10.4;
Actually, unlike e.g. carp, bridge can be its own component since
it doesn't want to join the protosw party. We can deal with other
linkhappy stuff with weak symbols.

(where is our modular networking stack?)
 1.9 07-Dec-2010  pooka Support bridging. As usual, it would be nice if this could be a
separate component, but King Ifdef doesn't let us.
 1.8 07-Nov-2010  pooka support compat ioctl's (OOOOOlalaSIOC stuff)
 1.7 12-Dec-2009  pooka branches: 1.7.4;
Use linker script to make __start/stop_link_set_modules be present
in libs built with binutils >=2.19. This is a less error-prone
method than the previous where components had to be tagged in the
Makefile as modules (and if they weren't, things broke. and vice
versa).
 1.6 13-Sep-2009  pooka binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
for orphaned sections to using PROVIDE. What this means is that
unless a rump component internally references that symbol, it will
not be included in the component shared library, and hence cannot
be referenced when the component is loaded. Add a workaround which
works both with 2.16 and 2.19: force a reference to the __start
symbol internally and hence retain it in the resulting library.
 1.5 28-May-2009  pooka Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.4 03-Feb-2009  pooka branches: 1.4.2; 1.4.4;
-fno-strict-aliasing is now set globally for rump
 1.3 25-Nov-2008  pooka branches: 1.3.4;
Heave-ho radix.c from librumpnet_net to librumpnet.
 1.2 16-Oct-2008  pooka branches: 1.2.2; 1.2.4;
Deal with the ld.so/linkset brokenness and compile all of libnet
and libnetinet into a big bunch for now. If they were separate
libraries, the DOMAIN_DEFINE() in the latter on the linkline would
not get noticed at "boot" time because of the abovementioned
brokenness. One of these days I'll add code to dlopen() the
libraries and resplit them, but this will allow things to work
until then.
 1.1 06-Oct-2008  pooka branches: 1.1.2;
Provide essentially sys/net as a rump library.
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file Makefile was added on branch wrstuden-revivesa on 2008-10-10 22:36:17 +0000
 1.2.4.2 03-Mar-2009  skrll Sync with HEAD.
 1.2.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.2.2.3 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.2.2.2 19-Oct-2008  haad Sync with HEAD.
 1.2.2.1 16-Oct-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.3.4.2 17-Jan-2009  mjf Sync with HEAD.
 1.3.4.1 25-Nov-2008  mjf file Makefile was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.4.4.5 11-Mar-2010  yamt sync with head
 1.4.4.4 16-Sep-2009  yamt sync with head
 1.4.4.3 20-Jun-2009  yamt sync with head
 1.4.4.2 04-May-2009  yamt sync with head.
 1.4.4.1 03-Feb-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:32 +0000
 1.4.2.1 23-Jul-2009  jym Sync with HEAD.
 1.7.4.2 21-Apr-2011  rmind sync with head
 1.7.4.1 05-Mar-2011  rmind sync with head
 1.10.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.10.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.13.8.1 26-Jun-2012  riz Pull up following revision(s) (requested by rmind in ticket #354):
sys/net/npf/npf_state_tcp.c: revision 1.4
sys/net/npf/npf_state_tcp.c: revision 1.5
sys/net/npf/npf_state_tcp.c: revision 1.6
usr.sbin/npf/npftest/npftest.c: revision 1.1
usr.sbin/npf/npftest/libnpftest/npf_mbuf_subr.c: revision 1.1
usr.sbin/npf/npftest/npftest.c: revision 1.2
usr.sbin/npf/npftest/libnpftest/npf_mbuf_subr.c: revision 1.2
usr.sbin/npf/npfctl/npf_data.c: revision 1.11
usr.sbin/npf/npftest/npftest.c: revision 1.3
usr.sbin/npf/npfctl/npf_data.c: revision 1.12
usr.sbin/npf/npftest/npftest.h: revision 1.1
usr.sbin/npf/npfctl/npf_parse.y: revision 1.5
usr.sbin/npf/npfctl/npf_data.c: revision 1.13
sys/net/npf/npf.h: revision 1.16
usr.sbin/npf/npftest/npftest.h: revision 1.2
usr.sbin/npf/npfctl/npf_parse.y: revision 1.6
usr.sbin/npf/npftest/npftest.h: revision 1.3
usr.sbin/npf/npfctl/npf_parse.y: revision 1.7
usr.sbin/npf/npfctl/npf_ncgen.c: revision 1.10
usr.sbin/npf/npfctl/npf_build.c: revision 1.6
usr.sbin/npf/npfctl/npf_parse.y: revision 1.8
usr.sbin/npf/npfctl/npf_build.c: revision 1.7
usr.sbin/npf/npftest/libnpftest/npf_state_test.c: revision 1.1
usr.sbin/npf/npftest/libnpftest/npf_nbuf_test.c: revision 1.1
usr.sbin/npf/npfctl/npf_build.c: revision 1.8
usr.sbin/npf/npftest/libnpftest/npf_table_test.c: revision 1.1
usr.sbin/npf/npfctl/npf_build.c: revision 1.9
usr.sbin/npf/npfctl/npf.conf.5: revision 1.10
usr.sbin/npf/npfctl/npf.conf.5: revision 1.11
usr.sbin/npf/npfctl/npf.conf.5: revision 1.12
sys/net/npf/npf_state.c: revision 1.7
usr.sbin/npf/npfctl/npfctl.c: revision 1.11
usr.sbin/npf/npfctl/npfctl.c: revision 1.12
usr.sbin/npf/npfctl/Makefile: revision 1.7
sys/rump/net/lib/libnet/Makefile: revision 1.14
sys/net/npf/npf_mbuf.c: revision 1.7
usr.sbin/npf/npftest/Makefile: revision 1.1
usr.sbin/npf/npftest/Makefile: revision 1.2
usr.sbin/npf/npftest/libnpftest/Makefile: revision 1.1
usr.sbin/npf/npfctl/npf_scan.l: revision 1.2
usr.sbin/npf/npftest/npfstream.c: revision 1.1
usr.sbin/npf/npftest/libnpftest/Makefile: revision 1.2
usr.sbin/npf/npfctl/npf_scan.l: revision 1.3
usr.sbin/npf/npftest/libnpftest/Makefile: revision 1.3
usr.sbin/npf/npfctl/npfctl.h: revision 1.12
sys/rump/dev/lib/libnpf/Makefile: revision 1.2
usr.sbin/npf/npfctl/npfctl.h: revision 1.14
sys/rump/dev/lib/libnpf/Makefile: revision 1.3
usr.sbin/npf/npfctl/npfctl.h: revision 1.15
usr.sbin/npf/npfctl/npf_ncgen.c: revision 1.9
sys/net/npf/npf_ctl.c: revision 1.15
usr.sbin/npf/npfctl/npf_var.c: revision 1.4
usr.sbin/npf/npfctl/npf_var.h: revision 1.2
usr.sbin/npf/npfctl/npf_var.c: revision 1.5
sys/net/npf/npf_impl.h: revision 1.13
sys/net/npf/npf_sendpkt.c: revision 1.10
sys/net/npf/npf_impl.h: revision 1.14
usr.sbin/npf/npfctl/npf_disassemble.c: revision 1.4
sys/net/npf/npf_impl.h: revision 1.15
sys/net/npf/npf_handler.c: revision 1.16
usr.sbin/npf/npftest/libnpftest/npf_test.h: revision 1.1
usr.sbin/npf/npftest/libnpftest/npf_processor_test.c: revision 1.1
usr.sbin/npf/npfctl/npf_disassemble.c: revision 1.5
sys/net/npf/npf_handler.c: revision 1.17
usr.sbin/npf/npftest/libnpftest/npf_test.h: revision 1.2
sys/net/npf/npf_ncode.h: revision 1.7
usr.sbin/npf/npftest/libnpftest/npf_test_subr.c: revision 1.1
usr.sbin/npf/npftest/libnpftest/npf_test.h: revision 1.3
sys/net/npf/npf_ncode.h: revision 1.8
npf_tcp_inwindow: in a case of negative skew, bump the maximum seen value of
SEQ+LEN in the receiver's side correctly (using ACK from the sender's side).
PR/46265 from Changli Gao.
rumpnet_net: add pfil.c
Update rumpdev_npf; use WARNS=4.
Add initial NPF regression tests integrated with RUMP framework (running the
kernel part of NPF in userland). Other tests will be added once converted to
RUMP framework. All tests are in the public domain.
Some Makefile fixes from christos@.
- Fix double-free case on ICMP return case.
- npf_pfil_register: handle kernels without INET6 option correctly.
- Reduce some #ifdefs.
npfctl(8): add show-config command. Also, update syntax.
npftest: add a stream processor, which prints out the TCP state information.
A tool for debugging connection tracking from tcpdump -w captured data.
npftest: add a module for TCP state tracking and add few test cases.
npf_state_tcp: add an assert; fix some comments while here.
- Rework NPF NAT syntax to be more structured and support future additions
of different types and configurations of NAT.
- npfctl: improve disassemble and show-config command functionality.
- Fix custom ICMP code and type filtering.
make this compile again.
remove error(1) output
Remove superfluous Pp
- make each element of a variable hold a type
- change get_type to take an index, so we can get the individual types of
each element (since primitive elements can be in lists)
- make port_range primitive
- add a routine to convert a variable of primitives to a variable containing
- only port ranges.
remove extra rule that got merged...
 1.13.6.1 29-Apr-2012  mrg sync to latest -current.
 1.13.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.2.2 30-Oct-2012  yamt sync with head
 1.13.2.1 17-Apr-2012  yamt sync with head
 1.16.2.3 03-Dec-2017  jdolecek update from HEAD
 1.16.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.16.2.1 23-Jun-2013  tls resync from head
 1.17.4.1 23-Jul-2013  riastradh sync with HEAD
 1.17.2.2 18-May-2014  rmind sync with head
 1.17.2.1 28-Aug-2013  rmind sync with head
 1.20.6.6 05-Feb-2017  skrll Sync with HEAD
 1.20.6.5 05-Oct-2016  skrll Sync with HEAD
 1.20.6.4 22-Apr-2016  skrll Sync with HEAD
 1.20.6.3 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.20.6.2 22-Sep-2015  skrll Sync with HEAD
 1.20.6.1 06-Jun-2015  skrll Sync with HEAD
 1.28.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.28.2.1 04-Nov-2016  pgoyette Sync with HEAD
 1.29.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.30.14.3 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.30.14.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.30.14.1 10-Jun-2019  christos Sync with HEAD
 1.30.12.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.32.2.1 29-Feb-2020  ad Sync with head.
 1.34.4.1 17-Apr-2021  thorpej Sync with HEAD.
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
add ioconf files for pseudo device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file NET.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:18 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file NET.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:16 +0000
 1.11 13-Mar-2014  pooka rename component.c -> net_component.c
 1.10 04-Feb-2011  pooka branches: 1.10.4; 1.10.14; 1.10.18;
attach the compat_50_routedomain to make it actually work
 1.9 11-Jan-2011  pooka branches: 1.9.2; 1.9.4;
Ensure that a) loopback attaches after all the domains have attached
b) loopback is configured only after it has attached.

makes tests/net/if_loop work again
 1.8 09-Jan-2011  pooka Separate interface init and domain adding.
 1.7 08-Dec-2010  pooka Actually, unlike e.g. carp, bridge can be its own component since
it doesn't want to join the protosw party. We can deal with other
linkhappy stuff with weak symbols.

(where is our modular networking stack?)
 1.6 07-Dec-2010  pooka Support bridging. As usual, it would be nice if this could be a
separate component, but King Ifdef doesn't let us.
 1.5 19-Oct-2010  pooka Attach PF_LINK domain. ifconfig wants to play with it, plus there's
no reason not to anyway.
 1.4 10-Aug-2010  pooka Attach 1 loop instead of 0.

not tested on animals
 1.3 01-Mar-2010  pooka branches: 1.3.2;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.2 16-Sep-2009  pooka branches: 1.2.2;
call ifinit{,1}()
 1.1 28-May-2009  pooka branches: 1.1.2;
Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.1.2.4 11-Aug-2010  yamt sync with head.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 28-May-2009  yamt file component.c was added on branch yamt-nfs-mp on 2009-06-20 07:20:36 +0000
 1.2.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.2.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.2.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.3.2.1 05-Mar-2011  rmind sync with head
 1.9.4.1 08-Feb-2011  bouyer Sync with HEAD
 1.9.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.10.18.1 18-May-2014  rmind sync with head
 1.10.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.10.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.10 03-Jul-2018  ozaki-r Fix net.inet6.ip6.ifq node doesn't exist

The node (and child nodes) is initialized in sysctl_net_pktq_setup, but the call
of sysctl_net_pktq_setup is skipped unexpectedly.

sysctl_net_pktq_setup is skipped if in6_present is false that indicates the
netinet6 component isn't loaded on rump kernels. However the flag is
accidentally always false because the flag is turned on in in6_dom_init that is
called after if_sysctl_setup on both normal and rump kernels.

Fix the issue by moving if_sysctl_setup after in6_dom_init (domaininit on normal
kernels). This fix is ad-hoc but good enough for netbsd-8. We should refine
the initialization order of network components in the future.

Pointed out by hikaru@
 1.9 16-Feb-2017  knakahara branches: 1.9.6; 1.9.12; 1.9.14;
l2tp(4) support rump.
 1.8 17-Jan-2017  christos pfile_init earlier (not here)
 1.7 16-Jan-2017  ryo Make pfil(9) MP-safe (applying psref(9))
 1.6 10-Aug-2016  kre branches: 1.6.2;

On the first day (that being the eighth day of the eighth month,) the
building was completed only to discover that within there lay havoc.

On the second day all just groaned and moaned, and it must be someone
else's problen.

On the third day, St. Martin stepped in and traced the culprit, which
provided inspiration, and a correction was made.

Forevermore all were agog at just how such a trivial thing could do
so much damage...


OK... to be a little less vague. The loopback interface is a truly
"special" thing, and rump knew that - and treated it very specially.
Unfortunately, when the loopback interface is changed, and rump does
not keep up, bad things happen.

This (overall) might, or might not, be the correct fix - but for now
it appears to work. If someone, sometime, finds a better way to
deal with the issues of the loopback interfaces true majesty, feel
free to revert this and do it another way.
 1.5 26-Jan-2016  pooka branches: 1.5.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 31-Aug-2015  ozaki-r Hook up lltable/llentry with the kernel (and rumpkernel)

It is built and initialized on bootup, but there is no user for now.

Most codes in in.c are imported from FreeBSD as well as lltable/llentry.
 1.3 23-Apr-2015  pooka sprinkle COMPAT_50
 1.2 22-Aug-2014  pooka branches: 1.2.2;
Nuke the DOMAINADD() macro and just call domain_attach(), now that things
work correctly that way.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
rename component.c -> net_component.c
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file net_component.c was added on branch tls-maxphys on 2014-08-20 00:04:42 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file net_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:16 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file net_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2.2.6 28-Aug-2017  skrll Sync with HEAD
 1.2.2.5 05-Feb-2017  skrll Sync with HEAD
 1.2.2.4 05-Oct-2016  skrll Sync with HEAD
 1.2.2.3 19-Mar-2016  skrll Sync with HEAD
 1.2.2.2 22-Sep-2015  skrll Sync with HEAD
 1.2.2.1 06-Jun-2015  skrll Sync with HEAD
 1.5.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.6.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.9.14.1 10-Jun-2019  christos Sync with HEAD
 1.9.12.1 28-Jul-2018  pgoyette Sync with HEAD
 1.9.6.1 13-Jul-2018  martin Pull up following revision(s) (requested by ozaki-r in ticket #911):

sys/kern/init_main.c: revision 1.498
sys/rump/net/lib/libnet/net_component.c: revision 1.10
sys/net/if.h: revision 1.264
sys/net/if.c: revision 1.429

Fix net.inet6.ip6.ifq node doesn't exist

The node (and child nodes) is initialized in sysctl_net_pktq_setup, but the call
of sysctl_net_pktq_setup is skipped unexpectedly.
sysctl_net_pktq_setup is skipped if in6_present is false that indicates the
netinet6 component isn't loaded on rump kernels. However the flag is
accidentally always false because the flag is turned on in in6_dom_init that is
called after if_sysctl_setup on both normal and rump kernels.

Fix the issue by moving if_sysctl_setup after in6_dom_init (domaininit on normal
kernels). This fix is ad-hoc but good enough for netbsd-8. We should refine
the initialization order of network components in the future.

Pointed out by hikaru@
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.12; 1.1.18; 1.1.46; 1.1.66;
Provide essentially sys/net as a rump library.
 1.1.66.1 06-Apr-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 06-Oct-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:32 +0000
 1.1.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.12.1 06-Oct-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2009-01-17 13:29:38 +0000
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file shlib_version was added on branch wrstuden-revivesa on 2008-10-10 22:36:17 +0000
 1.4 19-Oct-2015  pooka branches: 1.4.18;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 13-Sep-2013  joerg branches: 1.3.6;
GC unused functions. Don't bother building ieee80211_acl.c, nothing in
it is non-static.
 1.2 16-Feb-2010  pooka branches: 1.2.2; 1.2.12; 1.2.22; 1.2.26;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.1 05-Feb-2010  pooka branches: 1.1.2;
Move the net80211 support component into the proper place in "net"
and install as rumpnet_net80211.
 1.1.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.2.26.1 18-May-2014  rmind sync with head
 1.2.22.2 03-Dec-2017  jdolecek update from HEAD
 1.2.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.2.2 11-Mar-2010  yamt sync with head
 1.2.2.1 16-Feb-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-03-11 15:04:40 +0000
 1.3.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.18.1 10-Jun-2019  christos Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 05-Feb-2010  pooka branches: 1.1.4; 1.1.24; 1.1.42;
Move the net80211 support component into the proper place in "net"
and install as rumpnet_net80211.
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.4.2 11-Mar-2010  yamt sync with head
 1.1.4.1 05-Feb-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-03-11 15:04:40 +0000
 1.7 22-Feb-2017  maya GC some GCC 4.8 specific sh3 HACKS entries.

These existed to avoid compile errors, and haven't been effect
since gcc.old was removed.
 1.6 19-Oct-2015  pooka branches: 1.6.2; 1.6.4;
Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.5 30-Aug-2015  christos Add NOLINT
 1.4 13-Mar-2014  pooka branches: 1.4.6;
rename component.c -> netbt_component.c
 1.3 11-Nov-2013  joerg Fix syntax for undefined HAVE_GCC.
 1.2 07-Nov-2013  christos avoid gcc bug on sh3
 1.1 22-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24; 1.1.28;
bluetooth stack component for rump
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.2 03-Dec-2017  jdolecek update from HEAD
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 22-Mar-2010  yamt file Makefile was added on branch yamt-nfs-mp on 2010-08-11 22:55:09 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 22-Mar-2010  rmind file Makefile was added on branch rmind-uvmplock on 2010-05-30 05:18:07 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 22-Mar-2010  uebayasi file Makefile was added on branch uebayasi-xip on 2010-04-30 14:44:31 +0000
 1.4.6.3 28-Aug-2017  skrll Sync with HEAD
 1.4.6.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4.6.1 22-Sep-2015  skrll Sync with HEAD
 1.6.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.6.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.2 13-Mar-2014  pooka rename component.c -> netbt_component.c
 1.1 22-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.14; 1.1.24; 1.1.28;
bluetooth stack component for rump
 1.1.28.1 18-May-2014  rmind sync with head
 1.1.24.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.14.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 22-Mar-2010  yamt file component.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:09 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 22-Mar-2010  rmind file component.c was added on branch rmind-uvmplock on 2010-05-30 05:18:07 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 22-Mar-2010  uebayasi file component.c was added on branch uebayasi-xip on 2010-04-30 14:44:31 +0000
 1.3 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 22-Aug-2014  pooka branches: 1.2.2;
Nuke the DOMAINADD() macro and just call domain_attach(), now that things
work correctly that way.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
rename component.c -> netbt_component.c
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file netbt_component.c was added on branch tls-maxphys on 2014-08-20 00:04:42 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file netbt_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:16 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file netbt_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:19 +0000
 1.2.2.1 19-Mar-2016  skrll Sync with HEAD
 1.2 26-Mar-2010  pooka Remove unused opt_bluetooth.h

plunky: "feel free"
 1.1 22-Mar-2010  pooka bluetooth stack component for rump
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 22-Mar-2010  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.24; 1.1.42;
bluetooth stack component for rump
 1.1.42.1 06-Apr-2015  skrll Sync with HEAD
 1.1.24.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 11-Aug-2010  yamt sync with head.
 1.1.6.1 22-Mar-2010  yamt file shlib_version was added on branch yamt-nfs-mp on 2010-08-11 22:55:09 +0000
 1.1.4.2 30-May-2010  rmind sync with head
 1.1.4.1 22-Mar-2010  rmind file shlib_version was added on branch rmind-uvmplock on 2010-05-30 05:18:07 +0000
 1.1.2.2 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.1 22-Mar-2010  uebayasi file shlib_version was added on branch uebayasi-xip on 2010-04-30 14:44:31 +0000
 1.2 27-May-2017  bouyer branches: 1.2.6; 1.2.10;
merge the bouyer-socketcan branch to HEAD.

CAN stands for Controller Area Network, a broadcast network used
in automation and automotive fields. For example, the NMEA2000 standard
developped for marine devices uses a CAN network as the link layer.

This is an implementation of the linux socketcan API:
https://www.kernel.org/doc/Documentation/networking/can.txt
you can also see can(4).

This adds a new socket family (AF_CAN) and protocol (PF_CAN),
as well as the canconfig(8) utility, used to set timing parameter of
CAN hardware. Also inclued is a driver for the CAN controller
found in the allwinner A20 SoC (I tested it with an Olimex lime2 board,
connected with PIC18-based CAN devices).

There is also the canloop(4) pseudo-device, which allows to use
the socketcan API without CAN hardware.

At this time the CANFD part of the linux socketcan API is not implemented.
Error frames are not implemented either. But I could get the cansend and
canreceive utilities from the canutils package to build and run with minimal
changes. tcpudmp(8) can also be used to record frames, which can be
decoded with etherreal.
 1.1 15-Jan-2017  bouyer branches: 1.1.2;
file Makefile was initially added on branch bouyer-socketcan.
 1.1.2.1 15-Jan-2017  bouyer Initial commit of a CAN socket layer, compatible with linux SoccketCAN
(but incomplete). Based on work from Robert Swindells.
 1.2.10.2 03-Dec-2017  jdolecek update from HEAD
 1.2.10.1 27-May-2017  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:18 +0000
 1.2.6.2 28-Aug-2017  skrll Sync with HEAD
 1.2.6.1 27-May-2017  skrll file Makefile was added on branch nick-nhusb on 2017-08-28 17:53:15 +0000
 1.2 27-May-2017  bouyer branches: 1.2.6; 1.2.10;
merge the bouyer-socketcan branch to HEAD.

CAN stands for Controller Area Network, a broadcast network used
in automation and automotive fields. For example, the NMEA2000 standard
developped for marine devices uses a CAN network as the link layer.

This is an implementation of the linux socketcan API:
https://www.kernel.org/doc/Documentation/networking/can.txt
you can also see can(4).

This adds a new socket family (AF_CAN) and protocol (PF_CAN),
as well as the canconfig(8) utility, used to set timing parameter of
CAN hardware. Also inclued is a driver for the CAN controller
found in the allwinner A20 SoC (I tested it with an Olimex lime2 board,
connected with PIC18-based CAN devices).

There is also the canloop(4) pseudo-device, which allows to use
the socketcan API without CAN hardware.

At this time the CANFD part of the linux socketcan API is not implemented.
Error frames are not implemented either. But I could get the cansend and
canreceive utilities from the canutils package to build and run with minimal
changes. tcpudmp(8) can also be used to record frames, which can be
decoded with etherreal.
 1.1 15-Jan-2017  bouyer branches: 1.1.2;
file NETCAN.ioconf was initially added on branch bouyer-socketcan.
 1.1.2.1 15-Jan-2017  bouyer Initial commit of a CAN socket layer, compatible with linux SoccketCAN
(but incomplete). Based on work from Robert Swindells.
 1.2.10.2 03-Dec-2017  jdolecek update from HEAD
 1.2.10.1 27-May-2017  jdolecek file NETCAN.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:18 +0000
 1.2.6.2 28-Aug-2017  skrll Sync with HEAD
 1.2.6.1 27-May-2017  skrll file NETCAN.ioconf was added on branch nick-nhusb on 2017-08-28 17:53:15 +0000
 1.5 03-Sep-2022  thorpej Garbage-collect the remaining vestiges of netisr.
 1.4 03-Sep-2022  thorpej Convert CAN from a legacy netisr to pktqueue.
 1.3 21-Jul-2020  pgoyette Remove spurious call to canloopinit() in an attempt to fix kern/55489

This attempt at fixing is a result of IRC discussions with martin@ and
riastradh@
 1.2 27-May-2017  bouyer branches: 1.2.6; 1.2.10;
merge the bouyer-socketcan branch to HEAD.

CAN stands for Controller Area Network, a broadcast network used
in automation and automotive fields. For example, the NMEA2000 standard
developped for marine devices uses a CAN network as the link layer.

This is an implementation of the linux socketcan API:
https://www.kernel.org/doc/Documentation/networking/can.txt
you can also see can(4).

This adds a new socket family (AF_CAN) and protocol (PF_CAN),
as well as the canconfig(8) utility, used to set timing parameter of
CAN hardware. Also inclued is a driver for the CAN controller
found in the allwinner A20 SoC (I tested it with an Olimex lime2 board,
connected with PIC18-based CAN devices).

There is also the canloop(4) pseudo-device, which allows to use
the socketcan API without CAN hardware.

At this time the CANFD part of the linux socketcan API is not implemented.
Error frames are not implemented either. But I could get the cansend and
canreceive utilities from the canutils package to build and run with minimal
changes. tcpudmp(8) can also be used to record frames, which can be
decoded with etherreal.
 1.1 15-Jan-2017  bouyer branches: 1.1.2;
file netcan_component.c was initially added on branch bouyer-socketcan.
 1.1.2.1 15-Jan-2017  bouyer Initial commit of a CAN socket layer, compatible with linux SoccketCAN
(but incomplete). Based on work from Robert Swindells.
 1.2.10.2 03-Dec-2017  jdolecek update from HEAD
 1.2.10.1 27-May-2017  jdolecek file netcan_component.c was added on branch tls-maxphys on 2017-12-03 11:39:18 +0000
 1.2.6.2 28-Aug-2017  skrll Sync with HEAD
 1.2.6.1 27-May-2017  skrll file netcan_component.c was added on branch nick-nhusb on 2017-08-28 17:53:15 +0000
 1.6 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.5 13-Mar-2014  pooka branches: 1.5.6;
rename component.c -> netinet_component.c
 1.4 11-Dec-2009  pooka branches: 1.4.12; 1.4.22; 1.4.26;
Include component.c instead of dummy.c so that domain constructors
get properly called.
 1.3 16-Oct-2008  pooka branches: 1.3.2; 1.3.10; 1.3.16;
Deal with the ld.so/linkset brokenness and compile all of libnet
and libnetinet into a big bunch for now. If they were separate
libraries, the DOMAIN_DEFINE() in the latter on the linkline would
not get noticed at "boot" time because of the abovementioned
brokenness. One of these days I'll add code to dlopen() the
libraries and resplit them, but this will allow things to work
until then.
 1.2 13-Oct-2008  pooka Add tcp debugging as a build option.
 1.1 06-Oct-2008  pooka branches: 1.1.2;
Provide the TCP/IP as a rump library.
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file Makefile was added on branch wrstuden-revivesa on 2008-10-10 22:37:09 +0000
 1.3.16.3 11-Mar-2010  yamt sync with head
 1.3.16.2 04-May-2009  yamt sync with head.
 1.3.16.1 16-Oct-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.3.10.2 17-Jan-2009  mjf Sync with HEAD.
 1.3.10.1 16-Oct-2008  mjf file Makefile was added on branch mjf-devfs2 on 2009-01-17 13:29:39 +0000
 1.3.2.2 19-Oct-2008  haad Sync with HEAD.
 1.3.2.1 16-Oct-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.4.26.1 18-May-2014  rmind sync with head
 1.4.22.2 03-Dec-2017  jdolecek update from HEAD
 1.4.22.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.16 20-Sep-2022  ozaki-r tcp: separate syn cache stuffs into tcp_syncache.[ch] files

No functional change.
 1.15 08-Mar-2021  christos remove ip{,6}_id.c
 1.14 14-Apr-2017  ozaki-r branches: 1.14.24;
Rumpify netipsec

Note that we should modularize netipsec and reduce reverse symbol references
(referencing symbols of netipsec from net, netinet and netinet6) though,
the task needs lots of code changes. Prior to doing so, rumpifying it and
having ATF tests should be useful.
 1.13 24-Aug-2015  pooka branches: 1.13.2; 1.13.4;
purge rump/net of component-specific opt directories
 1.12 18-Jan-2015  justin Move defines of INET and INET6 from opt_inet.h to Makefile.inc

As discussed with pooka@
fixes current issues with ipv6 on rump being broken
 1.11 14-Aug-2013  pooka branches: 1.11.6;
Separate inet and inet6, allows inet6-only rump kernels.
 1.10 01-Jun-2013  pooka branches: 1.10.2;
default portalgo to random_start, for less connections from port 65535
 1.9 01-Jun-2013  pooka cosmetic: put portalgo.c in the conceptually right place
 1.8 03-May-2011  dyoung branches: 1.8.4; 1.8.14;
Reduces the resources demanded by TCP sessions in TIME_WAIT-state using
methods called Vestigial Time-Wait (VTW) and Maximum Segment Lifetime
Truncation (MSLT).

MSLT and VTW were contributed by Coyote Point Systems, Inc.

Even after a TCP session enters the TIME_WAIT state, its corresponding
socket and protocol control blocks (PCBs) stick around until the TCP
Maximum Segment Lifetime (MSL) expires. On a host whose workload
necessarily creates and closes down many TCP sockets, the sockets & PCBs
for TCP sessions in TIME_WAIT state amount to many megabytes of dead
weight in RAM.

Maximum Segment Lifetimes Truncation (MSLT) assigns each TCP session to
a class based on the nearness of the peer. Corresponding to each class
is an MSL, and a session uses the MSL of its class. The classes are
loopback (local host equals remote host), local (local host and remote
host are on the same link/subnet), and remote (local host and remote
host communicate via one or more gateways). Classes corresponding to
nearer peers have lower MSLs by default: 2 seconds for loopback, 10
seconds for local, 60 seconds for remote. Loopback and local sessions
expire more quickly when MSLT is used.

Vestigial Time-Wait (VTW) replaces a TIME_WAIT session's PCB/socket
dead weight with a compact representation of the session, called a
"vestigial PCB". VTW data structures are designed to be very fast and
memory-efficient: for fast insertion and lookup of vestigial PCBs,
the PCBs are stored in a hash table that is designed to minimize the
number of cacheline visits per lookup/insertion. The memory both
for vestigial PCBs and for elements of the PCB hashtable come from
fixed-size pools, and linked data structures exploit this to conserve
memory by representing references with a narrow index/offset from the
start of a pool instead of a pointer. When space for new vestigial PCBs
runs out, VTW makes room by discarding old vestigial PCBs, oldest first.
VTW cooperates with MSLT.

It may help to think of VTW as a "FIN cache" by analogy to the SYN
cache.

A 2.8-GHz Pentium 4 running a test workload that creates TIME_WAIT
sessions as fast as it can is approximately 17% idle when VTW is active
versus 0% idle when VTW is inactive. It has 103 megabytes more free RAM
when VTW is active (approximately 64k vestigial PCBs are created) than
when it is inactive.
 1.7 10-Aug-2010  pooka branches: 1.7.2;
Support carp. It would be nice to support this as its own component,
but there's about 1000 lines of #ifdef which disagree with my wish.
 1.6 13-Jul-2010  rmind Split-off IPv4 re-assembly mechanism into a separate module. Abstract
into ip_reass_init(), ip_reass_lookup(), etc (note: abstraction is not
yet complete). No functional changes to the actual mechanism.

OK matt@
 1.5 16-Feb-2010  pooka branches: 1.5.2;
Globally define -Wno-pointer-sign, as it has become a pointless
exercise of "add it to every Makefile individually".

XXX: should autosynchronize with the rest of the kernel buildflags
in sys/conf/Makefile.kern.inc.
 1.4 26-May-2009  pooka branches: 1.4.2;
Support IPv6 in rump. I'd have liked to introduce a netinet6
component, but due to ifdef happiness permeating the sources, it's
a compile decision for now, so netinet pulls in both inet and inet6.

One issue, one single issue: the loopback interface still needs to
be created for IPv6 to work. I have patches to take care of it
automatically if the appropriate component (net) is present, but
they require a bit more testing before commit.
 1.3 03-Feb-2009  pooka branches: 1.3.2; 1.3.4;
Better define GATEWAY in opt_gateway.h instead of the Makefile so
UPDATE builds don't go all coocoo.
 1.2 01-Feb-2009  pooka enable GATEWAY
 1.1 16-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.10;
Deal with the ld.so/linkset brokenness and compile all of libnet
and libnetinet into a big bunch for now. If they were separate
libraries, the DOMAIN_DEFINE() in the latter on the linkline would
not get noticed at "boot" time because of the abovementioned
brokenness. One of these days I'll add code to dlopen() the
libraries and resplit them, but this will allow things to work
until then.
 1.1.10.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.10.1 16-Oct-2008  mjf file Makefile.inc was added on branch mjf-devfs2 on 2009-01-17 13:29:39 +0000
 1.1.4.1 03-Mar-2009  skrll Sync with HEAD.
 1.1.2.2 19-Oct-2008  haad Sync with HEAD.
 1.1.2.1 16-Oct-2008  haad file Makefile.inc was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.3.4.5 11-Aug-2010  yamt sync with head.
 1.3.4.4 11-Mar-2010  yamt sync with head
 1.3.4.3 20-Jun-2009  yamt sync with head
 1.3.4.2 04-May-2009  yamt sync with head.
 1.3.4.1 03-Feb-2009  yamt file Makefile.inc was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.3.2.1 23-Jul-2009  jym Sync with HEAD.
 1.4.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.4.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.5.2.2 31-May-2011  rmind sync with head
 1.5.2.1 05-Mar-2011  rmind sync with head
 1.7.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.8.14.3 03-Dec-2017  jdolecek update from HEAD
 1.8.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.8.14.1 23-Jun-2013  tls resync from head
 1.8.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.10.2.1 28-Aug-2013  rmind sync with head
 1.11.6.3 28-Aug-2017  skrll Sync with HEAD
 1.11.6.2 22-Sep-2015  skrll Sync with HEAD
 1.11.6.1 06-Apr-2015  skrll Sync with HEAD
 1.13.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.13.2.1 26-Apr-2017  pgoyette Sync with HEAD
 1.14.24.1 03-Apr-2021  thorpej Sync with HEAD.
 1.11 13-Mar-2014  pooka rename component.c -> netinet_component.c
 1.10 14-Feb-2014  pooka Register netisr's from component constructors instead of via a hardcoded
global list.
 1.9 02-Jan-2014  pooka Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
 1.8 14-Aug-2013  pooka Partially revert previous, there are still a few gotchas in
running ipv4/ipv6-only (too many dependencies on ifdefs).
 1.7 14-Aug-2013  pooka Separate inet and inet6, allows inet6-only rump kernels.
 1.6 30-Jun-2013  pooka Raise lo0 so that ipv6 config gets done for it.

Requested and tested by Justin Cormack.
 1.5 11-Jan-2011  pooka branches: 1.5.8; 1.5.18; 1.5.22;
Ensure that a) loopback attaches after all the domains have attached
b) loopback is configured only after it has attached.

makes tests/net/if_loop work again
 1.4 09-Jan-2011  pooka Autoconfigure 127.0.0.1 for lo0.
(testing bind/connect/etc. is now possible on a virgin rump kernel
without the need to ifconfig anything)
 1.3 10-Aug-2010  pooka Support carp. It would be nice to support this as its own component,
but there's about 1000 lines of #ifdef which disagree with my wish.
 1.2 01-Mar-2010  pooka branches: 1.2.2;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 28-May-2009  pooka branches: 1.1.2; 1.1.4;
Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.1.4.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.4.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.4 11-Aug-2010  yamt sync with head.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 28-May-2009  yamt file component.c was added on branch yamt-nfs-mp on 2009-06-20 07:20:37 +0000
 1.2.2.1 05-Mar-2011  rmind sync with head
 1.5.22.2 18-May-2014  rmind sync with head
 1.5.22.1 28-Aug-2013  rmind sync with head
 1.5.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2 11-Dec-2009  pooka Include component.c instead of dummy.c so that domain constructors
get properly called.
 1.1 16-Oct-2008  pooka branches: 1.1.2; 1.1.10; 1.1.16;
Deal with the ld.so/linkset brokenness and compile all of libnet
and libnetinet into a big bunch for now. If they were separate
libraries, the DOMAIN_DEFINE() in the latter on the linkline would
not get noticed at "boot" time because of the abovementioned
brokenness. One of these days I'll add code to dlopen() the
libraries and resplit them, but this will allow things to work
until then.
 1.1.16.3 11-Mar-2010  yamt sync with head
 1.1.16.2 04-May-2009  yamt sync with head.
 1.1.16.1 16-Oct-2008  yamt file dummy.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.1.10.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.10.1 16-Oct-2008  mjf file dummy.c was added on branch mjf-devfs2 on 2009-01-17 13:29:39 +0000
 1.1.2.2 19-Oct-2008  haad Sync with HEAD.
 1.1.2.1 16-Oct-2008  haad file dummy.c was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.13 03-Sep-2022  thorpej Garbage-collect the remaining vestiges of netisr.
 1.12 03-Sep-2022  thorpej Convert ARP from a legacy netisr to pktqueue.
 1.11 24-Feb-2018  ozaki-r Avoid a deadlock between softnet_lock and IFNET_LOCK

A deadlock occurs because there is a violation of the rule of lock ordering;
softnet_lock is held with hodling IFNET_LOCK, which violates the rule.
To avoid the deadlock, replace softnet_lock in in_control and in6_control
with KERNEL_LOCK.

We also need to add some KERNEL_LOCKs to protect the network stack surely.
This is required, for example, for PR kern/51356.

Fix PR kern/53043
 1.10 11-Dec-2017  ozaki-r Wrap if_ioctl_lock with IFNET_* macros (NFC)

Also if_ioctl_lock perhaps needs to be renamed to something because it's now
not just for ioctl...
 1.9 07-Dec-2017  ozaki-r Ensure to call if_addr_init with holding if_ioctl_lock
 1.8 20-Jan-2017  ozaki-r branches: 1.8.6;
Protect if_clone data with if_clone_mtx

To this end, carpattach needs to be delayed from RUMP_COMPONENT_NET to
RUMP_COMPONENT_NET_IF on rump_server. Otherwise mutex_enter via carpattach
for if_clone_mtx is called before mutex_init for it in ifinit1.
 1.7 13-Aug-2016  christos branches: 1.7.2;
Don't call loopinit() here. Instead panic if -lrumpnet_net has not been
called to initialize lo0ifp.
 1.6 12-Aug-2016  christos more loopinit();
 1.5 26-Jan-2016  pooka branches: 1.5.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 22-Aug-2014  pooka branches: 1.4.2;
Nuke the DOMAINADD() macro and just call domain_attach(), now that things
work correctly that way.
 1.3 01-Jul-2014  rtr branches: 1.3.4;
fix parameter types in pr_ioctl, called xx_control() functions and remove
abuse of pointer to struct mbuf type.

param2 changed to u_long type and uses parameter name 'cmd' (ioctl command)
param3 changed to void * type and uses parameter name 'data'
param4 changed to struct ifnet * and uses parameter name 'ifp'
param5 has been removed (formerly struct lwp *) and uses of 'l' have been
replaced with curlwp from curproc(9).

callers have had (now unnecessary) casts to struct mbuf * removed, called
code has had (now unnecessary) casts to u_long, void * and struct ifnet *
respectively removed.

reviewed by rmind@
 1.2 05-Jun-2014  rmind - Implement pktqueue interface for lockless IP input queue.
- Replace ipintrq and ip6intrq with the pktqueue mechanism.
- Eliminate kernel-lock from ipintr() and ip6intr().
- Some preparation work to push softnet_lock out of ipintr().

Discussed on tech-net.
 1.1 13-Mar-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6;
rename component.c -> netinet_component.c
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file netinet_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file netinet_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.3.4.3 03-Dec-2017  jdolecek update from HEAD
 1.3.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.4.1 01-Jul-2014  tls file netinet_component.c was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.4.2.3 05-Feb-2017  skrll Sync with HEAD
 1.4.2.2 05-Oct-2016  skrll Sync with HEAD
 1.4.2.1 19-Mar-2016  skrll Sync with HEAD
 1.5.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.7.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.8.6.2 26-Feb-2018  martin Pull up following revision(s) (requested by ozaki-r in ticket #588):
sys/netinet6/in6.c: revision 1.260
sys/netinet/in.c: revision 1.219
sys/netinet/wqinput.c: revision 1.4
sys/rump/net/lib/libnetinet/netinet_component.c: revision 1.11
sys/netinet/ip_input.c: revision 1.376
sys/netinet6/ip6_input.c: revision 1.193
Avoid a deadlock between softnet_lock and IFNET_LOCK

A deadlock occurs because there is a violation of the rule of lock ordering;
softnet_lock is held with hodling IFNET_LOCK, which violates the rule.
To avoid the deadlock, replace softnet_lock in in_control and in6_control
with KERNEL_LOCK.

We also need to add some KERNEL_LOCKs to protect the network stack surely.
This is required, for example, for PR kern/51356.

Fix PR kern/53043
 1.8.6.1 02-Jan-2018  snj Pull up following revision(s) (requested by ozaki-r in ticket #456):
sys/arch/arm/sunxi/sunxi_emac.c: 1.9
sys/dev/ic/dwc_gmac.c: 1.43-1.44
sys/dev/pci/if_iwm.c: 1.75
sys/dev/pci/if_wm.c: 1.543
sys/dev/pci/ixgbe/ixgbe.c: 1.112
sys/dev/pci/ixgbe/ixv.c: 1.74
sys/kern/sys_socket.c: 1.75
sys/net/agr/if_agr.c: 1.43
sys/net/bpf.c: 1.219
sys/net/if.c: 1.397, 1.399, 1.401-1.403, 1.406-1.410, 1.412-1.416
sys/net/if.h: 1.242-1.247, 1.250, 1.252-1.257
sys/net/if_bridge.c: 1.140 via patch, 1.142-1.146
sys/net/if_etherip.c: 1.40
sys/net/if_ethersubr.c: 1.243, 1.246
sys/net/if_faith.c: 1.57
sys/net/if_gif.c: 1.132
sys/net/if_l2tp.c: 1.15, 1.17
sys/net/if_loop.c: 1.98-1.101
sys/net/if_media.c: 1.35
sys/net/if_pppoe.c: 1.131-1.132
sys/net/if_spppsubr.c: 1.176-1.177
sys/net/if_tun.c: 1.142
sys/net/if_vlan.c: 1.107, 1.109, 1.114-1.121
sys/net/npf/npf_ifaddr.c: 1.3
sys/net/npf/npf_os.c: 1.8-1.9
sys/net/rtsock.c: 1.230
sys/netcan/if_canloop.c: 1.3-1.5
sys/netinet/if_arp.c: 1.255
sys/netinet/igmp.c: 1.65
sys/netinet/in.c: 1.210-1.211
sys/netinet/in_pcb.c: 1.180
sys/netinet/ip_carp.c: 1.92, 1.94
sys/netinet/ip_flow.c: 1.81
sys/netinet/ip_input.c: 1.362
sys/netinet/ip_mroute.c: 1.147
sys/netinet/ip_output.c: 1.283, 1.285, 1.287
sys/netinet6/frag6.c: 1.61
sys/netinet6/in6.c: 1.251, 1.255
sys/netinet6/in6_pcb.c: 1.162
sys/netinet6/ip6_flow.c: 1.35
sys/netinet6/ip6_input.c: 1.183
sys/netinet6/ip6_output.c: 1.196
sys/netinet6/mld6.c: 1.90
sys/netinet6/nd6.c: 1.239-1.240
sys/netinet6/nd6_nbr.c: 1.139
sys/netinet6/nd6_rtr.c: 1.136
sys/netipsec/ipsec_output.c: 1.65
sys/rump/net/lib/libnetinet/netinet_component.c: 1.9-1.10
kmem_intr_free kmem_intr_[z]alloced memory
the underlying pools are the same but api-wise those should match
Unify IFEF_*_MPSAFE into IFEF_MPSAFE
There are already two flags for if_output and if_start, however, it seems such
MPSAFE flags are eventually needed for all if_XXX operations. Having discrete
flags for each operation is wasteful of if_extflags bits. So let's unify
the flags into one: IFEF_MPSAFE.
Fortunately IFEF_*_MPSAFE flags have never been included in any releases, so
we can change them without breaking backward compatibility of the releases
(though the kernel version of -current should be bumped).
Note that if an interface have both MP-safe and non-MP-safe operations at a
time, we have to set the IFEF_MPSAFE flag and let callees of non-MP-safe
opeartions take the kernel lock.
Proposed on tech-kern@ and tech-net@
Provide macros for softnet_lock and KERNEL_LOCK hiding NET_MPSAFE switch
It reduces C&P codes such as "#ifndef NET_MPSAFE KERNEL_LOCK(1, NULL); ..."
scattered all over the source code and makes it easy to identify remaining
KERNEL_LOCK and/or softnet_lock that are held even if NET_MPSAFE.
No functional change
Hold KERNEL_LOCK on if_ioctl selectively based on IFEF_MPSAFE
If IFEF_MPSAFE is set, hold the lock and otherwise don't hold.
This change requires additions of KERNEL_LOCK to subsequence functions from
if_ioctl such as ifmedia_ioctl and ifioctl_common to protect non-MP-safe
components.
Proposed on tech-kern@ and tech-net@
Ensure to hold if_ioctl_lock when calling if_flags_set
Fix locking against myself on ifpromisc
vlan_unconfig_locked could be called with holding if_ioctl_lock.
Ensure to not turn on IFF_RUNNING of an interface until its initialization completes
And ensure to turn off it before destruction as per IFF_RUNNING's description
"resource allocated". (The description is a bit doubtful though, I believe the
change is still proper.)
Ensure to hold if_ioctl_lock on if_up and if_down
One exception for if_down is if_detach; in the case the lock isn't needed
because it's guaranteed that no other one can access ifp at that point.
Make if_link_queue MP-safe if IFEF_MPSAFE
if_link_queue is a queue to store events of link state changes, which is
used to pass events from (typically) an interrupt handler to
if_link_state_change softint. The queue was protected by KERNEL_LOCK so far,
but if IFEF_MPSAFE is enabled, it becomes unsafe because (perhaps) an interrupt
handler of an interface with IFEF_MPSAFE doesn't take KERNEL_LOCK. Protect it
by a spin mutex.
Additionally with this change KERNEL_LOCK of if_link_state_change softint is
omitted if NET_MPSAFE is enabled.
Note that the spin mutex is now ifp->if_snd.ifq_lock as well as the case of
if_timer (see the comment).
Use IFADDR_WRITER_FOREACH instead of IFADDR_READER_FOREACH
At that point no other one modifies the list so IFADDR_READER_FOREACH
is unnecessary. Use of IFADDR_READER_FOREACH is harmless in general though,
if we try to detect contract violations of pserialize, using it violates
the contract. So avoid using it makes life easy.
Ensure to call if_addr_init with holding if_ioctl_lock
Get rid of outdated comments
Fix build of kernels without ether
By throwing out if_enable_vlan_mtu and if_disable_vlan_mtu that
created a unnecessary dependency from if.c to if_ethersubr.c.
PR kern/52790
Rename IFNET_LOCK to IFNET_GLOBAL_LOCK
IFNET_LOCK will be used in another lock, if_ioctl_lock (might be renamed then).
Wrap if_ioctl_lock with IFNET_* macros (NFC)
Also if_ioctl_lock perhaps needs to be renamed to something because it's now
not just for ioctl...
Reorder some destruction routines in if_detach
- Destroy if_ioctl_lock at the end of the if_detach because it's used in various
destruction routines
- Move psref_target_destroy after pr_purgeif because we want to use psref in
pr_purgeif (otherwise destruction procedures can be tricky)
Ensure to call if_mcast_op with holding IFNET_LOCK
Note that CARP doesn't deal with IFNET_LOCK yet.
Remove IFNET_GLOBAL_LOCK where it's unnecessary because IFNET_LOCK is held
Describe which lock is used to protect each member variable of struct ifnet
Requested by skrll@
Write a guideline for converting an interface to IFEF_MPSAFE
Requested by skrll@
Note that IFNET_LOCK must not be held in softint
Don't set IFEF_MPSAFE unless NET_MPSAFE at this point
Because recent investigations show that interfaces with IFEF_MPSAFE need to
follow additional restrictions to work with the flag safely. We should enable it
on an interface by default only if the interface surely satisfies the
restrictions, which are described in if.h.
Note that enabling IFEF_MPSAFE solely gains a few benefit on performance because
the network stack is still serialized by the big kernel locks by default.
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.12; 1.1.18; 1.1.46; 1.1.66;
Provide the TCP/IP as a rump library.
 1.1.66.1 06-Apr-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 06-Oct-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.1.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.12.1 06-Oct-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2009-01-17 13:29:39 +0000
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file shlib_version was added on branch wrstuden-revivesa on 2008-10-10 22:37:09 +0000
 1.3 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.2 13-Mar-2014  pooka branches: 1.2.4; 1.2.8; 1.2.10;
rename component.c -> netinet6_component.c
 1.1 14-Aug-2013  pooka branches: 1.1.2;
Separate inet and inet6, allows inet6-only rump kernels.
 1.1.2.3 18-May-2014  rmind sync with head
 1.1.2.2 28-Aug-2013  rmind sync with head
 1.1.2.1 14-Aug-2013  rmind file Makefile was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.2.10.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.8.3 03-Dec-2017  jdolecek update from HEAD
 1.2.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.8.1 13-Mar-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 13-Mar-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.6 08-Mar-2021  christos remove ip{,6}_id.c
 1.5 08-Feb-2018  maxv branches: 1.5.16;
Move udp6_output() into udp6_usrreq.c, and remove udp6_output.c. This is
more consistent with IPv4, and there is no good reason for keeping a
separate file only for one function. FreeBSD did the same.
 1.4 14-Apr-2017  ozaki-r Rumpify netipsec

Note that we should modularize netipsec and reduce reverse symbol references
(referencing symbols of netipsec from net, netinet and netinet6) though,
the task needs lots of code changes. Prior to doing so, rumpifying it and
having ATF tests should be useful.
 1.3 25-Aug-2015  pooka branches: 1.3.2; 1.3.4;
some final -Ifoo/opt removal
 1.2 18-Jan-2015  justin Move defines of INET and INET6 from opt_inet.h to Makefile.inc

As discussed with pooka@
fixes current issues with ipv6 on rump being broken
 1.1 14-Aug-2013  pooka branches: 1.1.2; 1.1.6; 1.1.10; 1.1.12;
Separate inet and inet6, allows inet6-only rump kernels.
 1.1.12.3 28-Aug-2017  skrll Sync with HEAD
 1.1.12.2 22-Sep-2015  skrll Sync with HEAD
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 14-Aug-2013  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 14-Aug-2013  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.2.2 28-Aug-2013  rmind sync with head
 1.1.2.1 14-Aug-2013  rmind file Makefile.inc was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.3.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.3.2.1 26-Apr-2017  pgoyette Sync with HEAD
 1.5.16.1 03-Apr-2021  thorpej Sync with HEAD.
 1.5 13-Mar-2014  pooka rename component.c -> netinet6_component.c
 1.4 14-Feb-2014  pooka Register netisr's from component constructors instead of via a hardcoded
global list.
 1.3 02-Jan-2014  pooka Allow kernels compiled with INET+INET6 to be booted as IPv4-only or IPv6-only.
 1.2 14-Aug-2013  pooka branches: 1.2.2;
Partially revert previous, there are still a few gotchas in
running ipv4/ipv6-only (too many dependencies on ifdefs).
 1.1 14-Aug-2013  pooka Separate inet and inet6, allows inet6-only rump kernels.
 1.2.2.3 18-May-2014  rmind sync with head
 1.2.2.2 28-Aug-2013  rmind sync with head
 1.2.2.1 14-Aug-2013  rmind file component.c was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.7 03-Sep-2022  thorpej Garbage-collect the remaining vestiges of netisr.
 1.6 13-Aug-2016  christos Don't call loopinit() here. Instead panic if -lrumpnet_net has not been
called to initialize lo0ifp.
 1.5 12-Aug-2016  christos more loopinit();
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 22-Aug-2014  pooka branches: 1.3.2;
Nuke the DOMAINADD() macro and just call domain_attach(), now that things
work correctly that way.
 1.2 05-Jun-2014  rmind branches: 1.2.4;
- Implement pktqueue interface for lockless IP input queue.
- Replace ipintrq and ip6intrq with the pktqueue mechanism.
- Eliminate kernel-lock from ipintr() and ip6intr().
- Some preparation work to push softnet_lock out of ipintr().

Discussed on tech-net.
 1.1 13-Mar-2014  pooka branches: 1.1.2; 1.1.4; 1.1.6;
rename component.c -> netinet6_component.c
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file netinet6_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file netinet6_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.1.2.1 10-Aug-2014  tls Rebase.
 1.2.4.3 03-Dec-2017  jdolecek update from HEAD
 1.2.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.4.1 05-Jun-2014  tls file netinet6_component.c was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.3.2.2 05-Oct-2016  skrll Sync with HEAD
 1.3.2.1 19-Mar-2016  skrll Sync with HEAD
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 14-Aug-2013  pooka branches: 1.1.2; 1.1.6; 1.1.10; 1.1.12;
Separate inet and inet6, allows inet6-only rump kernels.
 1.1.12.1 06-Apr-2015  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 14-Aug-2013  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 14-Aug-2013  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.2.2 28-Aug-2013  rmind sync with head
 1.1.2.1 14-Aug-2013  rmind file shlib_version was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.1 14-Apr-2017  ozaki-r branches: 1.1.2; 1.1.4; 1.1.12; 1.1.16;
Rumpify netipsec

Note that we should modularize netipsec and reduce reverse symbol references
(referencing symbols of netipsec from net, netinet and netinet6) though,
the task needs lots of code changes. Prior to doing so, rumpifying it and
having ATF tests should be useful.
 1.1.16.2 03-Dec-2017  jdolecek update from HEAD
 1.1.16.1 14-Apr-2017  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:18 +0000
 1.1.12.2 28-Aug-2017  skrll Sync with HEAD
 1.1.12.1 14-Apr-2017  skrll file Makefile was added on branch nick-nhusb on 2017-08-28 17:53:16 +0000
 1.1.4.2 26-Apr-2017  pgoyette Sync with HEAD
 1.1.4.1 14-Apr-2017  pgoyette file Makefile was added on branch pgoyette-localcount on 2017-04-26 02:53:31 +0000
 1.1.2.2 14-Apr-2017  ozaki-r 795880
 1.1.2.1 14-Apr-2017  ozaki-r file Makefile was added on branch bouyer-socketcan on 2017-04-14 02:43:29 +0000
 1.1 14-Apr-2017  ozaki-r branches: 1.1.2; 1.1.4; 1.1.12; 1.1.16;
Rumpify netipsec

Note that we should modularize netipsec and reduce reverse symbol references
(referencing symbols of netipsec from net, netinet and netinet6) though,
the task needs lots of code changes. Prior to doing so, rumpifying it and
having ATF tests should be useful.
 1.1.16.2 03-Dec-2017  jdolecek update from HEAD
 1.1.16.1 14-Apr-2017  jdolecek file Makefile.inc was added on branch tls-maxphys on 2017-12-03 11:39:18 +0000
 1.1.12.2 28-Aug-2017  skrll Sync with HEAD
 1.1.12.1 14-Apr-2017  skrll file Makefile.inc was added on branch nick-nhusb on 2017-08-28 17:53:16 +0000
 1.1.4.2 26-Apr-2017  pgoyette Sync with HEAD
 1.1.4.1 14-Apr-2017  pgoyette file Makefile.inc was added on branch pgoyette-localcount on 2017-04-26 02:53:31 +0000
 1.1.2.2 14-Apr-2017  ozaki-r 795880
 1.1.2.1 14-Apr-2017  ozaki-r file Makefile.inc was added on branch bouyer-socketcan on 2017-04-14 02:43:29 +0000
 1.1 14-Apr-2017  ozaki-r branches: 1.1.2; 1.1.4; 1.1.12; 1.1.16;
Rumpify netipsec

Note that we should modularize netipsec and reduce reverse symbol references
(referencing symbols of netipsec from net, netinet and netinet6) though,
the task needs lots of code changes. Prior to doing so, rumpifying it and
having ATF tests should be useful.
 1.1.16.2 03-Dec-2017  jdolecek update from HEAD
 1.1.16.1 14-Apr-2017  jdolecek file netipsec_component.c was added on branch tls-maxphys on 2017-12-03 11:39:18 +0000
 1.1.12.2 28-Aug-2017  skrll Sync with HEAD
 1.1.12.1 14-Apr-2017  skrll file netipsec_component.c was added on branch nick-nhusb on 2017-08-28 17:53:16 +0000
 1.1.4.2 26-Apr-2017  pgoyette Sync with HEAD
 1.1.4.1 14-Apr-2017  pgoyette file netipsec_component.c was added on branch pgoyette-localcount on 2017-04-26 02:53:31 +0000
 1.1.2.2 14-Apr-2017  ozaki-r 795880
 1.1.2.1 14-Apr-2017  ozaki-r file netipsec_component.c was added on branch bouyer-socketcan on 2017-04-14 02:43:29 +0000
 1.6 03-Sep-2022  thorpej Machete-waving to fix mpls rump build after pktqueue changes.
 1.5 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.4 24-Aug-2015  pooka purge rump/net of component-specific opt directories
 1.3 20-Aug-2015  christos add ioconf files for pseudo device attach prototypes
 1.2 13-Mar-2014  pooka branches: 1.2.4; 1.2.8; 1.2.10;
rename component.c -> netmpls_component.c
 1.1 18-Jul-2013  kefren branches: 1.1.2; 1.1.4;
Add librumpnet_netmpls that provides MPLS features into rump kernels
ok'ed pooka@
 1.1.4.3 18-May-2014  rmind sync with head
 1.1.4.2 28-Aug-2013  rmind sync with head
 1.1.4.1 18-Jul-2013  rmind file Makefile was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.1.2.2 23-Jul-2013  riastradh sync with HEAD
 1.1.2.1 18-Jul-2013  riastradh file Makefile was added on branch riastradh-drm2 on 2013-07-23 21:07:37 +0000
 1.2.10.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.10.1 22-Sep-2015  skrll Sync with HEAD
 1.2.8.3 03-Dec-2017  jdolecek update from HEAD
 1.2.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.8.1 13-Mar-2014  tls file Makefile was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 13-Mar-2014  yamt file Makefile was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.3 03-Sep-2022  thorpej Machete-waving to fix mpls rump build after pktqueue changes.
 1.2 18-Mar-2014  riastradh branches: 1.2.4; 1.2.8;
Merge riastradh-drm2 to HEAD.
 1.1 18-Jul-2013  kefren branches: 1.1.2; 1.1.4;
Add librumpnet_netmpls that provides MPLS features into rump kernels
ok'ed pooka@
 1.1.4.2 28-Aug-2013  rmind sync with head
 1.1.4.1 18-Jul-2013  rmind file Makefile.inc was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.1.2.2 23-Jul-2013  riastradh sync with HEAD
 1.1.2.1 18-Jul-2013  riastradh file Makefile.inc was added on branch riastradh-drm2 on 2013-07-23 21:07:37 +0000
 1.2.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.8.1 18-Mar-2014  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 18-Mar-2014  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.2 07-Aug-2016  christos branches: 1.2.14;
finish ifmpls->mpls renaming.
 1.1 20-Aug-2015  christos branches: 1.1.2;
add ioconf files for pseudo device attach prototypes
 1.1.2.3 05-Oct-2016  skrll Sync with HEAD
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file NETMPLS.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:16 +0000
 1.2.14.2 03-Dec-2017  jdolecek update from HEAD
 1.2.14.1 07-Aug-2016  jdolecek file NETMPLS.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.3 13-Mar-2014  pooka rename component.c -> netmpls_component.c
 1.2 14-Feb-2014  pooka Register netisr's from component constructors instead of via a hardcoded
global list.
 1.1 18-Jul-2013  kefren branches: 1.1.2; 1.1.4;
Add librumpnet_netmpls that provides MPLS features into rump kernels
ok'ed pooka@
 1.1.4.3 18-May-2014  rmind sync with head
 1.1.4.2 28-Aug-2013  rmind sync with head
 1.1.4.1 18-Jul-2013  rmind file component.c was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.1.2.2 23-Jul-2013  riastradh sync with HEAD
 1.1.2.1 18-Jul-2013  riastradh file component.c was added on branch riastradh-drm2 on 2013-07-23 21:07:37 +0000
 1.7 03-Sep-2022  thorpej Garbage-collect the remaining vestiges of netisr.
 1.6 03-Sep-2022  thorpej Convert MPLS from a legacy netisr to pktqueue.
 1.5 07-Aug-2016  christos finish ifmpls->mpls renaming.
 1.4 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.3 20-Aug-2015  christos add ioconf files for pseudo device attach prototypes
 1.2 22-Aug-2014  pooka branches: 1.2.2;
Nuke the DOMAINADD() macro and just call domain_attach(), now that things
work correctly that way.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
rename component.c -> netmpls_component.c
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file netmpls_component.c was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file netmpls_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file netmpls_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.2.2.3 05-Oct-2016  skrll Sync with HEAD
 1.2.2.2 19-Mar-2016  skrll Sync with HEAD
 1.2.2.1 22-Sep-2015  skrll Sync with HEAD
 1.3 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.2 18-Mar-2014  riastradh branches: 1.2.4; 1.2.8; 1.2.10;
Merge riastradh-drm2 to HEAD.
 1.1 18-Jul-2013  kefren branches: 1.1.2; 1.1.4;
Add librumpnet_netmpls that provides MPLS features into rump kernels
ok'ed pooka@
 1.1.4.2 28-Aug-2013  rmind sync with head
 1.1.4.1 18-Jul-2013  rmind file shlib_version was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.1.2.2 23-Jul-2013  riastradh sync with HEAD
 1.1.2.1 18-Jul-2013  riastradh file shlib_version was added on branch riastradh-drm2 on 2013-07-23 21:07:37 +0000
 1.2.10.1 06-Apr-2015  skrll Sync with HEAD
 1.2.8.3 03-Dec-2017  jdolecek update from HEAD
 1.2.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.8.1 18-Mar-2014  tls file shlib_version was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 18-Mar-2014  yamt file shlib_version was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.28 01-Jun-2025  joe kernel: extract rules, lookup socket, process filtering, reviews by christos@
 1.27 23-Jul-2019  rmind branches: 1.27.34;
NPF improvements:
- Add support for dynamic NETMAP algorithm (stateful net-to-net).
- Add most of the support for the dynamic NAT rules; a little bit more
userland work is needed to finish this up and enable.
- Replace 'stateful-ends' with more permissive 'stateful-all'.
- Add various tunable parameters and document them, see npf-params(7).
- Reduce the memory usage of the connection state table (conndb).
- Portmap rewrite: use memory more efficiently, handle addresses dynamically.
- Bug fix: add splsoftnet()/splx() around the thmap writers and comment.
- npftest: clean up and simplify; fix some memleaks to make ASAN happy.
 1.26 29-Oct-2018  christos Back to using _NPF_TESTING now that it does not change the semantics of
the calls, but only adds extra functionality.
 1.25 26-Oct-2018  christos add an _NPF_RUMP define to expose the sampling function.
 1.24 26-Oct-2018  kre Revert previous (unbreak build) - for now anyway.

It turns out _NPF_TESTING is needed for the (rump only) function
npf_state_setsampler() in sys/net/npf/npf_state.c
 1.23 26-Oct-2018  christos Comment out _NPF_TESTING (really should be removed)
 1.22 26-Oct-2018  christos need libnvpair
 1.21 29-Sep-2018  rmind NPF: Major rework -- migrate NPF to the libnv library.
- This conversion significantly simplifies the code and moves NPF to
a binary serialisation format (replacing the XML-like format).
- Fix some memory/reference leaks and possibly use-after-free bugs.
- Bump NPF_VERSION as this change makes libnpf incompatible with the
previous versions. Also, different serialisation format means NPF
connection/config saving and loading is not compatible with the
previous versions either.

Thanks to christos@ for extra testing.
 1.20 03-Jan-2017  christos branches: 1.20.14; 1.20.16;
need new file
 1.19 26-Dec-2016  christos Sync NPF with the version on github: backport standalone NPF changes,
which allow us to create and run separate NPF instances. Minor fixes.
(from rmind@)
 1.18 09-Dec-2016  christos remove ptree add lpm
 1.17 26-Jan-2016  pooka branches: 1.17.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.16 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.15 20-Aug-2015  christos add ioconf files for pseudo device attach prototypes
 1.14 19-Jul-2014  rmind branches: 1.14.2; 1.14.4; 1.14.8;
NPF: partially rewrite the connection tracking mechanism:
- Separate the tracking interface from the storage (state table)
and thus prepare to use a new data structure for the storage.
- Fix some race conditions in NAT association logic.
 1.13 04-Apr-2014  njoly branches: 1.13.2;
No lint for rumpnet npf library.
 1.12 13-Mar-2014  pooka rename component.c -> npf_component.c
 1.11 03-Mar-2014  pooka also include bsd.own.mk, so value for RUMP_NPF_TESTING can come from mk.conf
 1.10 03-Mar-2014  pooka For now, make it possible to not specify -D_NPF_TESTING by compiling
with RUMP_NPF_TESTING_=no. This in turn makes it possible to use npf
in a rump kernel for real packet filtering instead of just testing.

no change to default
 1.9 08-Nov-2013  rmind NPF: add support for specifying the interfaces before they are attached.
If an interface is or gets detached, all associated rules and connections
will be deactivated (it might be useful to have an option to invalidate
the associated connections). Once the interface is reattached they will
become active.

Bump NPF_VERSION.
 1.8 19-Sep-2013  rmind NPF: G/C n-code in favour of BPF byte-code. Delete lots of code, mmm!
 1.7 02-Jun-2013  rmind branches: 1.7.2;
- NPF connection tracking: rework synchronisation on tracking disable/enable
points and document it. Split the worker thread into a separate module
with an interface, so it could be re-used for other tasks.
- Replace ALG list with arrays and thus hit fewer cache lines.
- Misc bug fixes.
 1.6 12-Mar-2013  christos normali{s,z}e
 1.5 10-Mar-2013  christos remember to detach and add if_npflog module
 1.4 09-Feb-2013  rmind NPF:
- Implement dynamic NPF rules. Controlled through npf(3) library of via
npfctl rule command. A rule can be removed using a unique identifier,
returned on addition, or using a key which is SHA1 hash of the rule.
Adjust npftest and add a regression test.
- Improvements to rule inspection mechanism.
- Initial BPF support as an alternative to n-code.
- Minor fixes; bump the version.
 1.3 21-Nov-2012  pooka This component is not WARNS>3 clean (example: it includes socketvar.h
which does signed-unsigned comparison in an inline function). Why it
compiled at all is one of those marvels of compiler technology.
 1.2 16-Sep-2012  rmind branches: 1.2.2; 1.2.4;
Implement dynamic NPF extensions interface. An extension consists of
dynamically loaded module (.so) supplementing npfctl(8) and a kernel
module. Move normalisation and logging functionality into their own
extensions. More improvements to come.
 1.1 14-Aug-2012  rmind branches: 1.1.2;
Move and rename librumpdev_npf to librumpnet_npf.
 1.1.2.5 03-Dec-2017  jdolecek update from HEAD
 1.1.2.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.3 23-Jun-2013  tls resync from head
 1.1.2.2 25-Feb-2013  tls resync with head
 1.1.2.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.2.4.5 11-Feb-2013  riz Pull up following revision(s) (requested by rmind in ticket #817):
usr.sbin/npf/npfctl/npfctl.8: revision 1.12
usr.sbin/npf/npfctl/npf.conf.5: revision 1.27
usr.sbin/npf/npfctl/npf_parse.y: revision 1.18
usr.sbin/npf/npfctl/npf_build.c: revision 1.20
usr.sbin/npf/npfctl/npfctl.c: revision 1.28
lib/libnpf/npf.c: revision 1.16
usr.sbin/npf/npfctl/npfctl.c: revision 1.29
lib/libnpf/npf.c: revision 1.17
sys/modules/npf/Makefile: revision 1.12
sys/net/npf/npf_rproc.c: revision 1.6
usr.sbin/npf/npftest/README: revision 1.4
sys/net/npf/npf_tableset.c: revision 1.17
sys/net/npf/npf_ctl.c: revision 1.21
sys/net/npf/npf_ctl.c: revision 1.22
usr.sbin/npf/npfctl/npfctl.h: revision 1.25
lib/libnpf/npf.h: revision 1.13
usr.sbin/npf/npftest/npftest.conf: revision 1.2
usr.sbin/npf/npfctl/npfctl.h: revision 1.26
sys/net/npf/npf_ruleset.c: revision 1.17
lib/libnpf/npf.h: revision 1.14
sys/net/npf/npf_ruleset.c: revision 1.18
sys/net/npf/npf_conf.c: revision 1.1
usr.sbin/npf/npfctl/npf_scan.l: revision 1.10
sys/net/npf/npf_conf.c: revision 1.2
sys/net/npf/npf_instr.c: revision 1.16
sys/net/npf/npf_handler.c: revision 1.26
sys/net/npf/npf_impl.h: revision 1.26
usr.sbin/npf/npfctl/npf_disassemble.c: revision 1.14
sys/net/npf/npf_processor.c: revision 1.15
sys/net/npf/npf_impl.h: revision 1.27
sys/net/npf/npf_alg_icmp.c: revision 1.15
usr.sbin/npf/npfctl/npf_disassemble.c: revision 1.15
usr.sbin/npf/npfctl/npf_disassemble.c: revision 1.16
sys/net/npf/npf_ncode.h: revision 1.11
sys/net/npf/files.npf: revision 1.10
usr.sbin/npf/npftest/Makefile: revision 1.4
usr.sbin/npf/npfctl/npfctl.c: revision 1.30
lib/libnpf/npf.3: revision 1.8
usr.sbin/npf/npftest/libnpftest/npf_rule_test.c: revision 1.4
sys/net/npf/npf_session.c: revision 1.21
usr.sbin/npf/npftest/libnpftest/npf_rule_test.c: revision 1.5
usr.sbin/npf/npfctl/npf_build.c: revision 1.18
usr.sbin/npf/npfctl/npf_build.c: revision 1.19
sys/net/npf/npf_alg.c: revision 1.7
usr.sbin/npf/npfctl/Makefile: revision 1.10
sys/net/npf/npf_inet.c: revision 1.21
sys/net/npf/npf.h: revision 1.26
sys/net/npf/npf.h: revision 1.27
usr.sbin/pf/ftp-proxy/Makefile: revision 1.8
sys/net/npf/npf_nat.c: revision 1.19
sys/net/npf/npf.c: revision 1.15
sys/net/npf/npf_state.c: revision 1.14
sys/net/npf/npf_sendpkt.c: revision 1.14
sys/rump/net/lib/libnpf/Makefile: revision 1.4
IPv6 linklocal address printing cosmetics
NPF:
- Implement dynamic NPF rules. Controlled through npf(3) library of via
npfctl rule command. A rule can be removed using a unique identifier,
returned on addition, or using a key which is SHA1 hash of the rule.
Adjust npftest and add a regression test.
- Improvements to rule inspection mechanism.
- Initial BPF support as an alternative to n-code.
- Minor fixes; bump the version.
Disable -DWITH_NPF for now; will be converted to BPF mechanism.
- Fix NPF config reload with dynamic rules present.
- Implement list and flush commands on a dynamic ruleset.
Allow filtering on IP addresses even if the L4 protocol is unknown.
Patch from spz@.
npftest: adjust for recent change.
 1.2.4.4 09-Feb-2013  riz sys/kern/uipc_mbuf.c 1.148
sys/net/npf/npf.h 1.25
sys/net/npf/npf_alg.c 1.6
sys/net/npf/npf_alg_icmp.c 1.14
sys/net/npf/npf_ext_log.c 1.2
sys/net/npf/npf_ext_normalise.c 1.2
sys/net/npf/npf_handler.c 1.24-1.25
sys/net/npf/npf_impl.h 1.25
sys/net/npf/npf_inet.c 1.19-1.20
sys/net/npf/npf_instr.c 1.15
sys/net/npf/npf_mbuf.c 1.9-1.10
sys/net/npf/npf_nat.c 1.18
sys/net/npf/npf_processor.c 1.13-1.14
sys/net/npf/npf_rproc.c 1.5
sys/net/npf/npf_ruleset.c 1.15-1.16
sys/net/npf/npf_sendpkt.c 1.13
sys/net/npf/npf_session.c 1.19-1.20
sys/net/npf/npf_state.c 1.13
sys/net/npf/npf_state_tcp.c 1.12
sys/rump/net/lib/libnpf/Makefile 1.3
sys/sys/mbuf.h 1.151
usr.sbin/npf/npfctl/npfctl.c 1.27
usr.sbin/npf/npftest/README 1.3
usr.sbin/npf/npftest/libnpftest/npf_mbuf_subr.c 1.4
usr.sbin/npf/npftest/libnpftest/npf_nat_test.c 1.2
usr.sbin/npf/npftest/libnpftest/npf_nbuf_test.c 1.3-1.4
usr.sbin/npf/npftest/libnpftest/npf_processor_test.c 1.4
usr.sbin/npf/npftest/libnpftest/npf_rule_test.c 1.3
usr.sbin/npf/npftest/libnpftest/npf_state_test.c 1.4

NPF: rework nbuf interface, simplify ICMP ALG, handle ICMP ECHO
for traceroute. Misc. other fixes.
[rmind, ticket #777]

Update ticket #777 to fix build:

This component is not WARNS>3 clean (example: it includes socketvar.h
which does signed-unsigned comparison in an inline function). Why it
compiled at all is one of those marvels of compiler technology.
 1.2.4.3 18-Nov-2012  riz Pull up following revision(s) (requested by rmind in ticket #693):
lib/npf/ext_normalise/shlib_version: revision 1.1
lib/libnpf/npf.c: revision 1.13
distrib/sets/lists/modules/mi: revision 1.48
sys/net/npf/npf_rproc.c: revision 1.3
sys/net/npf/npf_rproc.c: revision 1.4
sys/modules/npf/Makefile: revision 1.11
usr.sbin/npf/npfctl/npfctl.h: revision 1.20
lib/npf/ext_log/npfext_log.c: revision 1.1
lib/libnpf/npf.h: revision 1.11
sys/net/npf/npf_inet.c: revision 1.17
sys/net/npf/npf_log.c: file removal
sys/net/npf/npf_handler.c: revision 1.22
distrib/sets/lists/base/shl.mi: revision 1.636
sys/net/npf/npf_impl.h: revision 1.23
usr.sbin/npf/npfctl/Makefile: revision 1.8
lib/npf/Makefile: revision 1.1
lib/npf/ext_log/shlib_version: revision 1.1
lib/Makefile: revision 1.189
distrib/sets/lists/comp/shl.mi: revision 1.236
usr.sbin/npf/npfctl/npf_build.c: revision 1.14
distrib/sets/lists/base/mi: revision 1.1007
usr.sbin/npf/npfctl/npf_scan.l: revision 1.6
distrib/sets/lists/base/mi: revision 1.1009
sys/net/npf/npf.h: revision 1.21
lib/npf/ext_normalise/npfext_normalise.c: revision 1.1
etc/mtree/NetBSD.dist.base: revision 1.105
lib/libnpf/Makefile: revision 1.3
etc/mtree/NetBSD.dist.base: revision 1.106
usr.sbin/npf/npfctl/npf_extmod.c: revision 1.1
sys/net/npf/npf_ctl.c: revision 1.18
lib/npf/ext_log/Makefile: revision 1.1
distrib/sets/lists/comp/mi: revision 1.1781
usr.sbin/npf/npfctl/npf_var.h: revision 1.4
sys/net/npf/npf.c: revision 1.13
sys/modules/Makefile: revision 1.111
sys/net/npf/npf_ext_log.c: revision 1.1
lib/npf/Makefile.inc: revision 1.1
sys/net/npf/npf_ext_normalise.c: revision 1.1
sys/net/npf/files.npf: revision 1.8
sys/rump/net/lib/libnpf/Makefile: revision 1.2
sys/modules/npf_ext_log/Makefile: revision 1.1
lib/npf/ext_normalise/Makefile: revision 1.1
usr.sbin/npf/npfctl/npfctl.c: revision 1.20
usr.sbin/npf/npfctl/npf_parse.y: revision 1.13
sys/modules/npf_ext_normalise/Makefile: revision 1.1
Implement dynamic NPF extensions interface. An extension consists of
dynamically loaded module (.so) supplementing npfctl(8) and a kernel
module. Move normalisation and logging functionality into their own
extensions. More improvements to come.
Add /usr/lib/npf.
Add ./usr/libdata/debug/usr/lib/npf for rmind
Fix MKDEBUG set lists
ext_ops does not change during the life cycle and can be fetched without
the mutex held. This avoids confusion in the compiler about an uninitialized
variable ext_ops.
ok rmind@
 1.2.4.2 18-Nov-2012  riz Pull up following revision(s) (requested by rmind in ticket #678):
sys/rump/librump/rumpkern/rump.c: revision 1.243
sys/rump/librump/rumpkern/rump.c: revision 1.244
sys/rump/librump/rumpkern/rump.c: revision 1.245
sys/rump/librump/rumpkern/rump.c: revision 1.246
usr.sbin/npf/npftest/npftest.c: revision 1.5
usr.sbin/npf/npftest/README: revision 1.2
usr.sbin/npf/npftest/npftest.h: revision 1.5
sys/rump/net/Makefile.rumpnetcomp: revision 1.5
sys/rump/net/lib/libnpf/shlib_version: revision 1.1
sys/net/npf/npf_impl.h: revision 1.22
sys/rump/dev/lib/libnpf/Makefile: file removal
usr.sbin/npf/npftest/Makefile: revision 1.3
sys/rump/dev/lib/libnpf/component.c: file removal
sys/rump/dev/lib/libnpf/shlib_version: file removal
sys/net/npf/npf_state.c: revision 1.12
sys/rump/net/lib/libnpf/component.c: revision 1.1
usr.sbin/npf/npftest/libnpftest/npf_test_subr.c: revision 1.4
usr.sbin/npf/npftest/libnpftest/npf_test.h: revision 1.6
sys/rump/net/lib/libnpf/Makefile: revision 1.1
Move and rename librumpdev_npf to librumpnet_npf.
Enable the build of librumpnet_npf.
Add npf_state_setsampler() for _NPF_TESTING case. This also fixes the build.
Call pserialize_init() during rump start-up, since librump/net/npf
uses it.
It helps to include the declaration of the routine being called.
We also need kcpuset_init() now.
Use correct routine name - kcpuset_sysinit() vs kcpuset_init()
 1.2.4.1 16-Sep-2012  riz file Makefile was added on branch netbsd-6 on 2012-11-18 21:45:08 +0000
 1.2.2.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.2.3 16-Jan-2013  yamt sync with (a bit old) head
 1.2.2.2 30-Oct-2012  yamt sync with head
 1.2.2.1 16-Sep-2012  yamt file Makefile was added on branch yamt-pagecache on 2012-10-30 17:22:55 +0000
 1.7.2.1 18-May-2014  rmind sync with head
 1.13.2.1 10-Aug-2014  tls Rebase.
 1.14.8.1 18-Jan-2017  skrll Sync with netbsd-5
 1.14.4.4 05-Feb-2017  skrll Sync with HEAD
 1.14.4.3 19-Mar-2016  skrll Sync with HEAD
 1.14.4.2 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.14.4.1 22-Sep-2015  skrll Sync with HEAD
 1.14.2.1 18-Dec-2016  snj Pull up following revision(s) (requested by rmind in ticket #1319):
sys/modules/npf/Makefile: revision 1.19
sys/net/npf/files.npf: revision 1.18
sys/net/npf/lpm.c: revision 1.1
sys/net/npf/lpm.h: revision 1.1
sys/net/npf/npf_impl.h: revision 1.62
sys/net/npf/npf_tableset.c: revision 1.24
sys/net/npf/npf_tableset_ptree.c: file removal
sys/rump/net/lib/libnpf/Makefile: revision 1.18
This patches ditches the ptree(3) library, because it is broken (you
can get missing entries!). Instead, as a temporary solution, we switch
to a simple linear scan of the hash tables for the longest-prefix-match
(lpm.c lpm.h) algorithm. In fact, with few unique prefixes in the set,
on modern hardware this simple algorithm is pretty fast anyway!
--
ditch ptree and use lpm
--
remove ptree add lpm
 1.17.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.20.16.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.20.16.1 10-Jun-2019  christos Sync with HEAD
 1.20.14.2 26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.20.14.1 30-Sep-2018  pgoyette Ssync with HEAD
 1.27.34.1 02-Aug-2025  perseant Sync with HEAD
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
add ioconf files for pseudo device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file NPF.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file NPF.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:16 +0000
 1.4 13-Mar-2014  pooka rename component.c -> npf_component.c
 1.3 26-Feb-2014  pooka Run constructor as part of network faction bootstrap, not device
(rumpdev no longer necessary)
 1.2 10-Mar-2013  christos branches: 1.2.6;
remember to detach and add if_npflog module
 1.1 14-Aug-2012  rmind branches: 1.1.2; 1.1.4; 1.1.6;
Move and rename librumpdev_npf to librumpnet_npf.
 1.1.6.2 18-Nov-2012  riz Pull up following revision(s) (requested by rmind in ticket #678):
sys/rump/librump/rumpkern/rump.c: revision 1.243
sys/rump/librump/rumpkern/rump.c: revision 1.244
sys/rump/librump/rumpkern/rump.c: revision 1.245
sys/rump/librump/rumpkern/rump.c: revision 1.246
usr.sbin/npf/npftest/npftest.c: revision 1.5
usr.sbin/npf/npftest/README: revision 1.2
usr.sbin/npf/npftest/npftest.h: revision 1.5
sys/rump/net/Makefile.rumpnetcomp: revision 1.5
sys/rump/net/lib/libnpf/shlib_version: revision 1.1
sys/net/npf/npf_impl.h: revision 1.22
sys/rump/dev/lib/libnpf/Makefile: file removal
usr.sbin/npf/npftest/Makefile: revision 1.3
sys/rump/dev/lib/libnpf/component.c: file removal
sys/rump/dev/lib/libnpf/shlib_version: file removal
sys/net/npf/npf_state.c: revision 1.12
sys/rump/net/lib/libnpf/component.c: revision 1.1
usr.sbin/npf/npftest/libnpftest/npf_test_subr.c: revision 1.4
usr.sbin/npf/npftest/libnpftest/npf_test.h: revision 1.6
sys/rump/net/lib/libnpf/Makefile: revision 1.1
Move and rename librumpdev_npf to librumpnet_npf.
Enable the build of librumpnet_npf.
Add npf_state_setsampler() for _NPF_TESTING case. This also fixes the build.
Call pserialize_init() during rump start-up, since librump/net/npf
uses it.
It helps to include the declaration of the routine being called.
We also need kcpuset_init() now.
Use correct routine name - kcpuset_sysinit() vs kcpuset_init()
 1.1.6.1 14-Aug-2012  riz file component.c was added on branch netbsd-6 on 2012-11-18 21:45:08 +0000
 1.1.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 14-Aug-2012  yamt file component.c was added on branch yamt-pagecache on 2012-10-30 17:22:55 +0000
 1.1.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.1 23-Jun-2013  tls resync from head
 1.2.6.1 18-May-2014  rmind sync with head
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> npf_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file npf_component.c was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file npf_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file npf_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 14-Aug-2012  rmind branches: 1.1.2; 1.1.4; 1.1.6; 1.1.20;
Move and rename librumpdev_npf to librumpnet_npf.
 1.1.20.1 06-Apr-2015  skrll Sync with HEAD
 1.1.6.2 18-Nov-2012  riz Pull up following revision(s) (requested by rmind in ticket #678):
sys/rump/librump/rumpkern/rump.c: revision 1.243
sys/rump/librump/rumpkern/rump.c: revision 1.244
sys/rump/librump/rumpkern/rump.c: revision 1.245
sys/rump/librump/rumpkern/rump.c: revision 1.246
usr.sbin/npf/npftest/npftest.c: revision 1.5
usr.sbin/npf/npftest/README: revision 1.2
usr.sbin/npf/npftest/npftest.h: revision 1.5
sys/rump/net/Makefile.rumpnetcomp: revision 1.5
sys/rump/net/lib/libnpf/shlib_version: revision 1.1
sys/net/npf/npf_impl.h: revision 1.22
sys/rump/dev/lib/libnpf/Makefile: file removal
usr.sbin/npf/npftest/Makefile: revision 1.3
sys/rump/dev/lib/libnpf/component.c: file removal
sys/rump/dev/lib/libnpf/shlib_version: file removal
sys/net/npf/npf_state.c: revision 1.12
sys/rump/net/lib/libnpf/component.c: revision 1.1
usr.sbin/npf/npftest/libnpftest/npf_test_subr.c: revision 1.4
usr.sbin/npf/npftest/libnpftest/npf_test.h: revision 1.6
sys/rump/net/lib/libnpf/Makefile: revision 1.1
Move and rename librumpdev_npf to librumpnet_npf.
Enable the build of librumpnet_npf.
Add npf_state_setsampler() for _NPF_TESTING case. This also fixes the build.
Call pserialize_init() during rump start-up, since librump/net/npf
uses it.
It helps to include the declaration of the routine being called.
We also need kcpuset_init() now.
Use correct routine name - kcpuset_sysinit() vs kcpuset_init()
 1.1.6.1 14-Aug-2012  riz file shlib_version was added on branch netbsd-6 on 2012-11-18 21:45:08 +0000
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 14-Aug-2012  yamt file shlib_version was added on branch yamt-pagecache on 2012-10-30 17:22:55 +0000
 1.1.2.1 03-Dec-2017  jdolecek update from HEAD
 1.3 23-Apr-2021  yamaguchi enabled PPPOE_DEBUG for librumpnet_pppoe* when RUMP_DEBUG is defined
 1.2 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.1 15-Apr-2016  ozaki-r branches: 1.1.2; 1.1.18; 1.1.20; 1.1.22;
Rump-ify if_pppoe

From s-yamaguchi@IIJ
 1.1.22.1 10-Jun-2019  christos Sync with HEAD
 1.1.20.1 05-Sep-2018  pgoyette if_spppsubr.c is now required, since it was split out from if_pppoe.c
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 15-Apr-2016  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.2.2 22-Apr-2016  skrll Sync with HEAD
 1.1.2.1 15-Apr-2016  skrll file Makefile was added on branch nick-nhusb on 2016-04-22 15:44:19 +0000
 1.1 15-Apr-2016  ozaki-r branches: 1.1.2; 1.1.18;
Rump-ify if_pppoe

From s-yamaguchi@IIJ
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 15-Apr-2016  jdolecek file PPPOE.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.2.2 22-Apr-2016  skrll Sync with HEAD
 1.1.2.1 15-Apr-2016  skrll file PPPOE.ioconf was added on branch nick-nhusb on 2016-04-22 15:44:19 +0000
 1.2 12-Dec-2018  alnsn Add missing RCSIDs.
 1.1 15-Apr-2016  ozaki-r branches: 1.1.2; 1.1.18; 1.1.20; 1.1.22;
Rump-ify if_pppoe

From s-yamaguchi@IIJ
 1.1.22.1 10-Jun-2019  christos Sync with HEAD
 1.1.20.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 15-Apr-2016  jdolecek file pppoe_component.c was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.2.2 22-Apr-2016  skrll Sync with HEAD
 1.1.2.1 15-Apr-2016  skrll file pppoe_component.c was added on branch nick-nhusb on 2016-04-22 15:44:19 +0000
 1.8 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.7 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.6 13-Mar-2014  pooka branches: 1.6.6;
rename component.c -> shmif_component.c
 1.5 13-Mar-2014  pooka rename rumpcomp_user.* -> shmif_user.*
 1.4 28-Apr-2013  pooka branches: 1.4.4;
make the file monitoring hypercalls private to shmif
 1.3 15-Nov-2010  pooka branches: 1.3.8; 1.3.18;
* make interface a cloner
* use SIOCSLINKSTR for supplying bus filename in case of cloned if

TODO: downing interface, unclone, and some tweaks for robustness
 1.2 12-Aug-2010  pooka Include a pointer to the beginning of the buffer and add support
to the packet dumper. This helps in situations where the juicy
details are in a bus multiple generations old.
 1.1 28-Feb-2009  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.10;
Add a virtual ethernet interface which uses shared memory as the
bus instead of relying on the host kernel's tap and bridge. This
is much lighterweight approach which does not consume non-pageable
kernel resources.
 1.1.10.1 05-Mar-2011  rmind sync with head
 1.1.8.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.1.6.2 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.1.6.1 28-Feb-2009  jym file Makefile was added on branch jym-xensuspend on 2009-05-13 17:23:02 +0000
 1.1.4.3 09-Oct-2010  yamt sync with head
 1.1.4.2 04-May-2009  yamt sync with head.
 1.1.4.1 28-Feb-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.1.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.1.2.1 28-Feb-2009  skrll file Makefile was added on branch nick-hppapmap on 2009-03-03 18:34:31 +0000
 1.3.18.3 03-Dec-2017  jdolecek update from HEAD
 1.3.18.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.18.1 23-Jun-2013  tls resync from head
 1.3.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.1 18-May-2014  rmind sync with head
 1.6.6.2 19-Mar-2016  skrll Sync with HEAD
 1.6.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.3 13-Mar-2014  pooka rename component.c -> shmif_component.c
 1.2 16-Nov-2010  pooka branches: 1.2.6; 1.2.10; 1.2.20; 1.2.24;
Use vmem for keeping track of unit numbers so that wildcard allocation
works correctly.
 1.1 15-Nov-2010  pooka remember to commit this file too
 1.2.24.1 18-May-2014  rmind sync with head
 1.2.20.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.2 05-Mar-2011  rmind sync with head
 1.2.6.1 16-Nov-2010  rmind file component.c was added on branch rmind-uvmplock on 2011-03-05 20:56:21 +0000
 1.11 21-Mar-2011  pooka this was moved to usr.bin ages ago
 1.10 15-Nov-2010  pooka branches: 1.10.2; 1.10.6;
un-\240
 1.9 15-Nov-2010  pooka add -h which prints only the bus header info
 1.8 13-Aug-2010  pooka branches: 1.8.2; 1.8.4;
truncate pcap output file
 1.7 13-Aug-2010  pooka Include a timestamp in the frame header. When converting to pcap,
it can give some idea of when packets were sent.

nb. it's the sending host's timestamp, not an observer timestamp
like in the typical pcap case.
 1.6 12-Aug-2010  pooka Include a pointer to the beginning of the buffer and add support
to the packet dumper. This helps in situations where the juicy
details are in a bus multiple generations old.
 1.5 12-Aug-2010  pooka Recognize ``-'' for stdout. allows piping output to tcpdump -r -
 1.4 12-Aug-2010  pooka * include a magic number in the bus format
* simplify offset calculations by making them start from beginning of data
 1.3 12-Aug-2010  pooka Make shmif memory access slightly more sane. Create a header which
is shared by the interface and the bus analyzer.
 1.2 12-Aug-2010  pooka pass Wall
 1.1 11-Aug-2010  pooka Add a little utility to convert shmif bus traffic to a pcap file
which can be then examined with tcpdump -r, wireshark, etc.
 1.8.4.2 09-Oct-2010  yamt sync with head
 1.8.4.1 13-Aug-2010  yamt file dumpbus.c was added on branch yamt-nfs-mp on 2010-10-09 03:32:44 +0000
 1.8.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.8.2.1 13-Aug-2010  uebayasi file dumpbus.c was added on branch uebayasi-xip on 2010-08-17 06:48:05 +0000
 1.10.6.3 21-Apr-2011  rmind sync with head
 1.10.6.2 05-Mar-2011  rmind sync with head
 1.10.6.1 15-Nov-2010  rmind file dumpbus.c was added on branch rmind-uvmplock on 2011-03-05 20:56:21 +0000
 1.10.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.89 01-Oct-2024  rin shmif: Fix logics for media change and status

- shmif_mediachange: Drop check for if_link_state. Otherwise,
there can be race b/w events in if_link_queue.

- shmif_mediastatus: Set ifm_status appropriately, by which
link state appears in ifconfig(8) "status:" line.

Pointed out by roy@, and taken from his codes in vether(4). Thanks!!
 1.88 02-Sep-2024  ozaki-r shmif: export LOCK_* definitions

They will be used by upcoming shmif_pcapin.
 1.87 20-Aug-2024  riastradh shmem(4): Fix typo in comment: AFT -> ATF.

Also fix grammar (if I understood correctly what this meant: rump
servers written in C, rather than set up via shell scripts around
rump_server invoking ifconfig).

No functional change intended.
 1.86 20-Aug-2024  ozaki-r shmif: support media

It enables to link-down shmif by ifconfig media none and link-up
again by media auto.
 1.85 20-Aug-2024  ozaki-r shmif: change behaviors about link states

- Change the link state to UP on ifconfig linkstr
- This behavior emulates physical devices
- Change the link state to UNKNOWN on ifconfig -linkstr just in case
- Reject sending/receiving packets if the link state is DOWN
- Permit to send/receive packets on UNKNOWN, which is required
to unbreak some ATF tests written in C
 1.84 09-Apr-2022  riastradh branches: 1.84.4; 1.84.10;
if_shmem(4): Use membar_acquire/release for lock acquire/release.
 1.83 14-Jul-2021  ozaki-r shmif: support ALTQ
 1.82 16-Jun-2021  riastradh if_attach and if_initialize cannot fail, don't test return value

These were originally made failable back in 2017 when if_initialize
allocated a softint in every interface for link state changes, so
that it could fail gracefully instead of panicking:

https://mail-index.NetBSD.org/source-changes/2017/10/23/msg089053.html

However, this spawned many seldom- or never-tested error branches,
which are risky to have around. And that softint in every interface
has since been replaced by a single global workqueue, because link
state changes require thread context but not low latency or high
throughput:

https://mail-index.NetBSD.org/source-changes/2020/02/06/msg113759.html

So there is no longer any reason for if_initialize to fail. (The
subroutine if_stats_init can't fail because percpu_alloc can't fail
either.)

There is a snag: the softint_establish in if_percpuq_create could
fail, potentially leading to bad consequences later on trying to use
the softint. This change doesn't introduce any new bugs because of
the snag -- if_percpuq_attach was already broken. However, the snag
can be better addressed without spawning error branches, either by
using a single softint or making softints less scarce.

(Separate commit will change the signatures of if_attach and
if_initialize to return void, scheduled to ride whatever is the next
convenient kernel bump.)

Patch and testing on amd64 and evbmips64-eb by maya@; commit message
soliloquy, and compile-testing on evbppc/i386/earmv7hf, by me.
 1.81 25-Feb-2020  ozaki-r branches: 1.81.10;
shmif: reduce the number of calls of cprng(9)
 1.80 25-Feb-2020  ozaki-r shmif: s/sc_uuid/sc_uid/

It's not UUID :-/
 1.79 25-Feb-2020  ozaki-r shmif: use cprng_strong64 instead of cprng_fast64 to generate a unique ID

shmif uses random bytes generated by cprng(9) as a unique device ID
between rump kernels to identify packets fed by itself and not receive
them. So if generated bytes are identical between shmif interfaces on
different rump kernels, shmif may drop incoming packets unintentionally.
This is one cause of recent ATF test failures of IPsec.

Fix it by using cprng_strong64 instead of cprng_fast64. This is a
workaround and we should also investigate why cprng_fast64 starts
failing on rump kernels, although using cprng_strong64 in initialization
itself is feasible.

Fix PR kern/54897
 1.78 20-Feb-2020  ozaki-r shmif: use cprng_strong32 to generate random bytes for a MAC address

cprng_fast32 sometimes returns indentical bytes, which look
"20:0e:11:33" in a MAC address, on different rump_server instances.
That leads MAC address duplications resulting in a test failure.

Fix it by using cprng_strong32 instead of cprng_fast32. However
we should rather fix cprng_fast32 (or rump itself) somehow.

The fix mitigates PR kern/54897 but test failures due to other
causes still remain.
 1.77 01-Feb-2020  thorpej Adopt <net/if_stats.h>.
 1.76 12-Dec-2018  rin branches: 1.76.6;
Add TX/RX offload capabilities to shmif(4). They are emulated in
software by ether_sw_offload_[tr]x().

For rump kernels, if_capabilities for shmemif(4) can be specified
by environmental variable RUMP_SHMIF_CAPENABLE:

setenv RUMP_SHMIF_CAPENABLE 0x7ff80 (all offload)
setenv RUMP_SHMIF_CAPENABLE 0x6aa80 (all TX)
setenv RUMP_SHMIF_CAPENABLE 0x15500 (all RX)

part of PR kern/53562
OK msaitoh
 1.75 26-Jun-2018  msaitoh branches: 1.75.2;
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward
compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same
as FreeBSD.

This change also fixes a bug that the direction is misunderstand on some
environment by passing the direction to bpf_mtap*() instead of checking
m->m_pkthdr.rcvif.
 1.74 23-Oct-2017  msaitoh branches: 1.74.2;
Fix compile error.
 1.73 23-Oct-2017  msaitoh If if_initialize() failed in the attach function, free resources and return.
 1.72 22-Dec-2016  ozaki-r branches: 1.72.8;
Fix that rump.ifconfig shmifN destroy hangs up

rump.ifconfig shmifN destroy sometimes hangs up on closing a file
descriptor of kqueue under heavy load. It seems it happens because of
a race condition between closing a fd and kevent to the same fd on
another kthread for packet Rx. Fix it by executing the close operation
after the kthread left.
 1.71 22-Dec-2016  ozaki-r Fix handling return value of rumpcomp_shmif_watchwait
 1.70 15-Dec-2016  ozaki-r Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input

The benefits of the change are:
- We can reduce codes
- We can provide the same behavior between drivers
- Where/When if_ipackets is counted up
- Note that some drivers still update packet statistics in their own
way (periodical update)
- Moved bpf_mtap run in softint
- This makes it easy to MP-ify bpf

Proposed on tech-kern and tech-net
 1.69 07-Jul-2016  msaitoh branches: 1.69.2;
KNF. Remove extra spaces. No functional change.
 1.68 16-Jun-2016  ozaki-r Use curlwp_bind and curlwp_bindx instead of open-coding LP_BOUND
 1.67 10-Jun-2016  ozaki-r Introduce m_set_rcvif and m_reset_rcvif

The API is used to set (or reset) a received interface of a mbuf.
They are counterpart of m_get_rcvif, which will come in another
commit, hide internal of rcvif operation, and reduce the diff of
the upcoming change.

No functional change.
 1.66 19-Apr-2016  ozaki-r Prevent LWP migrations between CPUs during upper layer processing

This is a contract of psref(9) that is used by upper layer componenets,
e.g., bridge(4).
 1.65 09-Feb-2016  ozaki-r Introduce softint-based if_input

This change intends to run the whole network stack in softint context
(or normal LWP), not hardware interrupt context. Note that the work is
still incomplete by this change; to that end, we also have to softint-ify
if_link_state_change (and bpf) which can still run in hardware interrupt.

This change softint-ifies at ifp->if_input that is called from
each device driver (and ieee80211_input) to ensure Layer 2 runs
in softint (e.g., ether_input and bridge_input). To this end,
we provide a framework (called percpuq) that utlizes softint(9)
and percpu ifqueues. With this patch, rxintr of most drivers just
queues received packets and schedules a softint, and the softint
dequeues packets and does rest packet processing.

To minimize changes to each driver, percpuq is allocated in struct
ifnet for now and that is initialized by default (in if_attach).
We probably have to move percpuq to softc of each driver, but it's
future work. At this point, only wm(4) has percpuq in its softc
as a reference implementation.

Additional information including performance numbers can be found
in the thread at tech-kern@ and tech-net@:
http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html

Acknowledgment: riastradh@ greatly helped this work.
Thank you very much!
 1.64 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.63 15-Aug-2014  ozaki-r branches: 1.63.2;
Make shmif SIMPLEX

Add a sender field to a packet header on a shmif bus to identify
and ignore packets sent by itself.

This makes shmif work with bridges.

ok pooka@
 1.62 09-Aug-2014  ozaki-r branches: 1.62.2;
Count packets in if_shmem

ok @pooka
 1.61 28-May-2014  justin Add missing __diagused in rump code
 1.60 20-Mar-2014  christos branches: 1.60.2;
kill sprintf
 1.59 13-Mar-2014  pooka rename rumpcomp_user.* -> shmif_user.*
 1.58 13-Sep-2013  joerg Remove busversion.
 1.57 22-Jul-2013  pooka In recv, align data after ether_header at _ALIGN_BYTES.
 1.56 14-Jun-2013  pooka branches: 1.56.2; 1.56.4;
sauce previous with a comment
 1.55 14-Jun-2013  pooka Ignore too short packets. This condition is true especially for the
first packet on a new bus (len == 0). Everything else in the stack
besides bpf seemed to be able to deal with one, though.
 1.54 01-May-2013  pooka Three cheers for the mighty C type system that doesn't recognize the
difference between an enum and an integer. Due to wrong parameter order,
the lock backoff routine ended up sleeping 1 million seconds instead
of 1ms. On the plus side, we got some sort of idea how often the shmif
spinlock backoff routine is hit during a standard test run.
 1.53 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.52 29-Apr-2013  pooka Reduce hypercalls related to reading to essentially an amalgamation
of readv and preadv. ditto for writing. Hypercalls are so seldomly
used that it doesn't justify 3x the calls for syntactic sugar.
 1.51 29-Apr-2013  pooka add a private hypercall to map the bus into memory
 1.50 28-Apr-2013  pooka Improve the time-related hypercalls so that's it's possible to
sleep until an absolute time on the host's monotonic clock (should
something like that be supported).
 1.49 28-Apr-2013  pooka * remove the unused "opaque" parameter
* fix some typos in the previous
 1.48 28-Apr-2013  pooka make the file monitoring hypercalls private to shmif
 1.47 14-Jan-2013  pooka fix debug printf formats
 1.46 11-Oct-2012  pooka Pass up all multicast addresses, not just broadcast. Among other
things, makes IPv6 work over this interface.
 1.45 14-Sep-2012  pooka Do not assume that O_FOO flags have matching values in the rump kernel
and hypervisor.
 1.44 19-Nov-2011  tls branches: 1.44.4; 1.44.8;
First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.43 02-Sep-2011  dyoung branches: 1.43.2;
Report vmem(9) errors out-of-band so that we can use vmem(9) to manage
ranges that include the least and the greatest vmem_addr_t. Update
vmem(9) uses throughout the kernel. Slightly expand on the tests in
subr_vmem.c, which still pass. I've been running a kernel with this
patch without any trouble.
 1.42 25-Aug-2011  dyoung Use VMEM_ADDR_MIN and VMEM_ADDR_MAX.
 1.41 23-Aug-2011  dyoung Introduce a couple of new constants, VMEM_ADDR_MIN (the least possible
address in a vmem(9) arena, 0) and VMEM_ADDR_MAX (the maximum possible
address, currently 0xFFFFFFFF). Modify several boundary conditions so
that a vmem(9) arena can allocate ranges including VMEM_ADDR_MAX.
Update documentation and tests.

These changes pass the tests in sys/kern/subr_vmem.c. To compile the
and run the test program, run "cd sys/kern/ && gcc -DVMEM_SANITY -o
subr_vmem ./subr_vmem.c && ./subr_vmem".
 1.40 07-Aug-2011  rmind Rename slightly misleading KTHREAD_JOINABLE to KTHREAD_MUSTJOIN.
 1.39 21-Mar-2011  pooka Update copyright statements.

no functional change.
 1.38 11-Mar-2011  pooka make the if-else logic more obvious
 1.37 11-Mar-2011  pooka After my change to the "interface accepts this packet" logic
yesterday the CARP test stopped working, since CARP depends on
IFF_PROMISC (which was previously always accidentally enabled).
While making the interface honor IFF_PROMISC, also make it compare
the received frame's address against ifp->if_sadl instead of a
local enaddr value we cached when the interface was created.
 1.36 11-Mar-2011  pooka Don't assume rump kernel PAGE_SIZE and host page size are the same.
 1.35 10-Mar-2011  pooka Support bpf. shmif_dumpbus(1) can be used for much the same effect,
but sometimes it's just more convenient to run tcpdump live.
 1.34 10-Mar-2011  pooka Pass packet up if it's *for* us, not if it's from someone else.
This fixes a rather curious forwarding/redirect/etc. storm which
happened when there were >2 shmif kernels on the same shmbus with
ip forwarding set on. (at least it stress-tested other code ;)
 1.33 06-Dec-2010  pooka branches: 1.33.2;
Allow creation with NULL busname (to be later set with SIOCSLINKSTR).
 1.32 17-Nov-2010  pooka Support destroy in shmif.
 1.31 16-Nov-2010  pooka Use vmem for keeping track of unit numbers so that wildcard allocation
works correctly.
 1.30 15-Nov-2010  pooka "fix" completely crackheaded code w/ uninitialized use,
missed as usual by the wonderful -g -O0
 1.29 15-Nov-2010  pooka * make interface a cloner
* use SIOCSLINKSTR for supplying bus filename in case of cloned if

TODO: downing interface, unclone, and some tweaks for robustness
 1.28 17-Aug-2010  pooka Prefault bus pages in driver attachment. This seems to work around
weird corruption I've been seeing (most likely a host kernel bug).

For more details, see thread at:
http://mail-index.netbsd.org/tech-kern/2010/08/17/msg008749.html
 1.27 17-Aug-2010  pooka * fix off-by-wrap case where current datagram aligns exactly with
the end of the bus
* clarify the "can we still use the device's next pointer" calculation
and move it to its own routine
* sprinkle dprintf
 1.26 16-Aug-2010  pooka simplify, improve, etc.
 1.25 15-Aug-2010  pooka reset pktsize each loop
 1.24 15-Aug-2010  pooka reset wrap where necessary
 1.23 15-Aug-2010  pooka Move the lockops together with the interface -- they are needed
only at runtime.
 1.22 15-Aug-2010  pooka Take kernel lock before passing data to if_input. This is in line
with IPL_NET interrupts generally not being MPSAFE.
 1.21 15-Aug-2010  pooka Don't do timestamping with buslock held. it's the little things ...
 1.20 13-Aug-2010  pooka Include a timestamp in the frame header. When converting to pcap,
it can give some idea of when packets were sent.

nb. it's the sending host's timestamp, not an observer timestamp
like in the typical pcap case.
 1.19 12-Aug-2010  pooka Include a pointer to the beginning of the buffer and add support
to the packet dumper. This helps in situations where the juicy
details are in a bus multiple generations old.
 1.18 12-Aug-2010  pooka further simplify & fix calculations
 1.17 12-Aug-2010  pooka * include a magic number in the bus format
* simplify offset calculations by making them start from beginning of data
 1.16 12-Aug-2010  pooka Make shmif memory access slightly more sane. Create a header which
is shared by the interface and the bus analyzer.
 1.15 11-Aug-2010  pooka * remove some magic numbers from the code
* include bus version number in header just in case we want to examine
bus traffic at some point in the future
 1.14 11-Aug-2010  pooka Change bus header a little: reserve only 32bits for the lock and
use 32bit atomic ops to handle it. Begin data from 0x10 instead
of 0x14.
 1.13 10-Aug-2010  pooka * use atomic ops instead of __cpu_simple_luck
* this interface is un-IFF_SIMPLEX
 1.12 29-Jul-2010  pooka * print interface number, backend path and ethernet address for dmesg
* make kassert more demanding
 1.11 29-Jul-2010  pooka * increase bus size so that we don't wrap so quickly when NFS
flushes writes
* verbosize debug print a bit
 1.10 30-Nov-2009  pooka branches: 1.10.2; 1.10.4;
fix comment
 1.9 20-Oct-2009  pooka use autogenerated prototype
 1.8 20-Oct-2009  pooka printf -> rumpuser_dprintf
(can't use printf while holding spinlock)
 1.7 26-May-2009  pooka Filter out ENETRESET from ether_ioctl() since we aren't interested
in multicast hugging.
 1.6 06-Apr-2009  pooka branches: 1.6.2; 1.6.4;
let drivers define DPRINTF
 1.5 18-Mar-2009  pooka * allow to specify PROT_READ/PROT_WRITE when mmapping a file
* add msync
 1.4 01-Mar-2009  pooka branches: 1.4.2;
Create receive thread only in if_start() to make sure it happens
after the we have been attached to the ethernet framework.
XXX: if_stop is still unimplemented
 1.3 01-Mar-2009  martin add missing atomic.h include
 1.2 28-Feb-2009  pooka don't require the ifnum return pointer.
 1.1 28-Feb-2009  pooka Add a virtual ethernet interface which uses shared memory as the
bus instead of relying on the host kernel's tap and bridge. This
is much lighterweight approach which does not consume non-pageable
kernel resources.
 1.4.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.4.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.4.2.1 01-Mar-2009  skrll file if_shmem.c was added on branch nick-hppapmap on 2009-03-03 18:34:31 +0000
 1.6.4.3 23-Jul-2009  jym Sync with HEAD.
 1.6.4.2 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.6.4.1 06-Apr-2009  jym file if_shmem.c was added on branch jym-xensuspend on 2009-05-13 17:23:02 +0000
 1.6.2.6 09-Oct-2010  yamt sync with head
 1.6.2.5 11-Aug-2010  yamt sync with head.
 1.6.2.4 11-Mar-2010  yamt sync with head
 1.6.2.3 20-Jun-2009  yamt sync with head
 1.6.2.2 04-May-2009  yamt sync with head.
 1.6.2.1 06-Apr-2009  yamt file if_shmem.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.10.4.2 21-Apr-2011  rmind sync with head
 1.10.4.1 05-Mar-2011  rmind sync with head
 1.10.2.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.10.2.1 17-Aug-2010  uebayasi Sync with HEAD.
 1.33.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.43.2.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.43.2.3 23-Jan-2013  yamt sync with head
 1.43.2.2 30-Oct-2012  yamt sync with head
 1.43.2.1 17-Apr-2012  yamt sync with head
 1.44.8.5 03-Dec-2017  jdolecek update from HEAD
 1.44.8.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.44.8.3 23-Jun-2013  tls resync from head
 1.44.8.2 25-Feb-2013  tls resync with head
 1.44.8.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.44.4.1 08-Feb-2013  riz Pull up following revision(s) (requested by gdt in ticket #796):
sys/rump/net/lib/libshmif/if_shmem.c: revision 1.46
Pass up all multicast addresses, not just broadcast. Among other
things, makes IPv6 work over this interface.
 1.56.4.1 23-Jul-2013  riastradh sync with HEAD
 1.56.2.2 18-May-2014  rmind sync with head
 1.56.2.1 28-Aug-2013  rmind sync with head
 1.60.2.1 10-Aug-2014  tls Rebase.
 1.62.2.1 17-Aug-2014  riz Pull up following revision(s) (requested by ozaki-r in ticket #28):
sys/rump/net/lib/libshmif/shmifvar.h: revision 1.8
sys/rump/net/lib/libshmif/if_shmem.c: revision 1.63
sys/rump/net/lib/libshmif/shmifvar.h: revision 1.9
Make shmif SIMPLEX
Add a sender field to a packet header on a shmif bus to identify
and ignore packets sent by itself.
This makes shmif work with bridges.
ok pooka@
Bump SHMIF_VERSION
 1.63.2.4 05-Feb-2017  skrll Sync with HEAD
 1.63.2.3 09-Jul-2016  skrll Sync with HEAD
 1.63.2.2 22-Apr-2016  skrll Sync with HEAD
 1.63.2.1 19-Mar-2016  skrll Sync with HEAD
 1.69.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.72.8.1 10-Dec-2017  snj Pull up following revision(s) (requested by msaitoh in ticket #427):
sys/arch/amiga/dev/if_bah_zbus.c: 1.17
sys/arch/arm/broadcom/bcm53xx_eth.c: 1.30
sys/arch/powerpc/booke/dev/pq3etsec.c: 1.32
sys/arch/usermode/dev/if_veth.c: 1.9
sys/dev/ic/an.c: 1.66
sys/dev/ic/athn.c: 1.17
sys/dev/ic/atw.c: 1.162
sys/dev/ic/bwi.c: 1.33
sys/dev/ic/dwc_gmac.c: 1.41-1.42
sys/dev/ic/malo.c: 1.10
sys/dev/ic/rt2560.c: 1.31
sys/dev/ic/rt2661.c: 1.36
sys/dev/ic/rt2860.c: 1.29
sys/dev/ic/rtw.c: 1.127
sys/dev/ic/rtwvar.h: 1.46
sys/dev/ic/smc90cx6.c: 1.71
sys/dev/ic/smc90cx6var.h: 1.12
sys/dev/ic/wi.c: 1.244
sys/dev/pci/if_ipw.c: 1.66
sys/dev/pci/if_iwi.c: 1.104
sys/dev/pci/if_iwm.c: 1.76
sys/dev/pci/if_iwn.c: 1.86
sys/dev/pci/if_rtwn.c: 1.13
sys/dev/pci/if_wm.c: 1.541
sys/dev/pci/if_wpi.c: 1.79
sys/dev/pci/ixgbe/ixgbe.c: 1.106
sys/dev/pci/ixgbe/ixv.c: 1.73 via patch
sys/dev/pcmcia/if_malo_pcmcia.c: 1.15
sys/dev/scsipi/if_se.c: 1.95
sys/dev/usb/if_upl.c: 1.60
sys/net/if.c: 1.396
sys/net/if.h: 1.241
sys/net/if_arc.h: 1.23
sys/net/if_arcsubr.c: 1.78
sys/net/if_bridge.c: 1.136-1.137
sys/net/if_etherip.c: 1.39
sys/net/if_faith.c: 1.56
sys/net/if_gif.c: 1.131
sys/net/if_loop.c: 1.96
sys/net/if_mpls.c: 1.30
sys/net/if_pppoe.c: 1.129
sys/net/if_srt.c: 1.27
sys/net/if_stf.c: 1.102
sys/net/if_tap.c: 1.100
sys/net/if_vlan.c: 1.105
sys/netinet/ip_carp.c: 1.91
sys/rump/net/lib/libshmif/if_shmem.c: 1.73-1.74
sys/rump/net/lib/libvirtif/if_virt.c: 1.55-1.56
if_initalize() and if_attach() failed when resource allocation failed
(e.g. allocating softint). Without this change, it panics. It's bad because
resource shortage really occured when a lot of pseudo interface is created.
To avoid this problem, don't panic and change return value of if_initialize()
and if_attach() to int. Caller fanction will be recover from error cleanly by
checking the return value.
Return if bah_attach_subr() failed.
If if_attach() failed in the attach function, return.
- If if_initialize() failed in the attach function, free resources and return.
- Add some missing frees in bridge_clone_destroy().
- KNF
If error occured in bcmeth_ccb_attach(), free resources and return.
If error occured in pq3etsec_attach(), free resources and return.
If error occured in the attach function, free resources and return.
- If if_initialize() failed in athn_attach(), free resources and return.
- Add missing pmf_event_deregister() in athn_detach().
- Free resources correctly on some errors in atw_attach().
- Use apint*() insread of printf() in the attach function.
If if_initialize() failed in the attach function, return.
- If if_initialize() failed in the attach function, free resources and return.
- Add missing dwc_gmac_free_dma_rings() and mutex_destroy() when attach
failed.
- If if_initialize() failed in the attach function, free resources and return.
- ifp is always not NULL in iwi_detach(). Check correctly with ifp->if_softc.
- If if_initialize() failed in the attach function, free resources and return.
- Fix error path in the attach function correctly.
If if_initialize() failed in the attach function, free resources and return.
If if_attach() failed in the attach function, free resources and return.
- If if_initialize() failed in the attach function, free resources and return.
- KNF
- If if_attach() failed in the attach function, free resources and return.
- KNF
Fix compile error.
Fix compile error.
We don't need '&mii', but just 'mii' for mii_detach().
Don't free sc_rthash twice
 1.74.2.2 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.74.2.1 28-Jul-2018  pgoyette Sync with HEAD
 1.75.2.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.75.2.1 10-Jun-2019  christos Sync with HEAD
 1.76.6.1 29-Feb-2020  ad Sync with head.
 1.81.10.2 01-Aug-2021  thorpej Sync with HEAD.
 1.81.10.1 17-Jun-2021  thorpej Sync w/ HEAD.
 1.84.10.1 02-Aug-2025  perseant Sync with HEAD
 1.84.4.3 03-Oct-2024  martin Pull up following revision(s) (requested by rin in ticket #924):

sys/rump/net/lib/libshmif/if_shmem.c: revision 1.89

shmif: Fix logics for media change and status

- shmif_mediachange: Drop check for if_link_state. Otherwise,
there can be race b/w events in if_link_queue.
- shmif_mediastatus: Set ifm_status appropriately, by which
link state appears in ifconfig(8) "status:" line.

Pointed out by roy@, and taken from his codes in vether(4). Thanks!!
 1.84.4.2 05-Sep-2024  martin Pull up following revision(s) (requested by ozaki-r in ticket #817):

tests/usr.bin/Makefile: revision 1.41 (patch)
distrib/sets/lists/base/mi: revision 1.1350 (patch)
usr.bin/shmif_pcapin/shmif_pcapin.1: revision 1.1
distrib/sets/lists/man/mi: revision 1.1787 (patch)
distrib/sets/lists/debug/mi: revision 1.447 (patch)
tests/usr.bin/shmif_pcapin/d_pcap.out.bz2.uue: revision 1.1
sys/rump/net/lib/libshmif/if_shmem.c: revision 1.88
etc/mtree/NetBSD.dist.tests: revision 1.207
sys/rump/net/lib/libshmif/shmifvar.h: revision 1.12
usr.bin/shmif_pcapin/shmif_pcapin.c: revision 1.1
usr.bin/shmif_pcapin/Makefile: revision 1.1
tests/usr.bin/shmif_pcapin/t_basic.sh: revision 1.1
usr.bin/Makefile: revision 1.240
distrib/sets/lists/tests/mi: revision 1.1335 (patch)
tests/usr.bin/shmif_pcapin/Makefile: revision 1.1
tests/usr.bin/shmif_pcapin/d_pcap.in.bz2.uue: revision 1.1

shmif: export LOCK_* definitions
They will be used by upcoming shmif_pcapin.

Add shmif_pcapin(1) utility program

It can send any frames that are stored in a pcap(3) file format to
shmif(4) Ethernet interface via the bus of it. If you want to write
some tests for networking with rump kernels and the tests need to send
frames that are difficult to generate by stock programs, shmif_pcapin
can be helpful.

The author of shmif_pcapin is k-goda@IIJ and the man page is written
by ozaki-r.

tests: add a basic test for shmif_pcapin

The original author of the test is k-goda@IIJ. ozaki-r tweaked
the test to improve stability and added comments.
distrib, etc: install shmif_pcapin and its tests
 1.84.4.1 24-Aug-2024  martin Pull up following revision(s) (requested by ozaki-r in ticket #811):

tests/net/if_shmif/t_shmif.sh: revision 1.1
sbin/ifconfig/ifconfig.c: revision 1.251
sbin/ifconfig/ifconfig.8: revision 1.130
sys/rump/net/lib/libshmif/if_shmem.c: revision 1.85
sys/rump/net/lib/libshmif/if_shmem.c: revision 1.86
sys/rump/net/lib/libshmif/if_shmem.c: revision 1.87
etc/mtree/NetBSD.dist.tests: revision 1.206
distrib/sets/lists/tests/mi: revision 1.1333
tests/net/if_shmif/Makefile: revision 1.1
tests/net/Makefile: revision 1.42

shmif: change behaviors about link states

- Change the link state to UP on ifconfig linkstr
- This behavior emulates physical devices
- Change the link state to UNKNOWN on ifconfig -linkstr just in case
- Reject sending/receiving packets if the link state is DOWN
- Permit to send/receive packets on UNKNOWN, which is required
to unbreak some ATF tests written in C

shmif: support media

It enables to link-down shmif by ifconfig media none and link-up
again by media auto.

ifconfig: show link state on -v

We could guess it through "media" or "status" output, however, we
sometimes want to know it directly for debugging or testing.

It is shown only if the -v option is specified.
tests: add tests for shmif

The test file is placed under tests/net, not tests/rump/rumpnet,
to leverage utility functions provided for tests in there.
shmem(4): Fix typo in comment: AFT -> ATF.

Also fix grammar (if I understood correctly what this meant: rump
servers written in C, rather than set up via shell scripts around
rump_server invoking ifconfig).

No functional change intended.
 1.15 13-Mar-2014  pooka rename rumpcomp_user.* -> shmif_user.*
 1.14 08-Jan-2014  pooka OpenBSD has kqueue
 1.13 04-Jul-2013  pooka Use kqueue on *BSD, not just NetBSD.
 1.12 04-Jun-2013  pooka branches: 1.12.2; 1.12.4;
On Linux, pass the inotify descriptor up so that we can correctly read
it in the wait() routine.
 1.11 07-May-2013  pooka Include necessary headers on Linux
 1.10 30-Apr-2013  pooka Translate error codes between the hypervisor and rump kernel.
 1.9 30-Apr-2013  pooka fix non-NetBSD implementation
 1.8 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.7 29-Apr-2013  christos don't build in kernel build.
 1.6 29-Apr-2013  pooka add a private hypercall to map the bus into memory
 1.5 28-Apr-2013  pooka some more headers are required by the third implementation
 1.4 28-Apr-2013  pooka include event.h only where used
 1.3 28-Apr-2013  pooka be a bit less sloppy with errno
 1.2 28-Apr-2013  pooka * remove the unused "opaque" parameter
* fix some typos in the previous
 1.1 28-Apr-2013  pooka make the file monitoring hypercalls private to shmif
 1.12.4.2 18-May-2014  rmind sync with head
 1.12.4.1 28-Aug-2013  rmind sync with head
 1.12.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.12.2.2 23-Jun-2013  tls resync from head
 1.12.2.1 04-Jun-2013  tls file rumpcomp_user.c was added on branch tls-maxphys on 2013-06-23 06:20:29 +0000
 1.5 13-Mar-2014  pooka rename rumpcomp_user.* -> shmif_user.*
 1.4 30-Apr-2013  pooka branches: 1.4.4; 1.4.6;
Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.3 29-Apr-2013  pooka add a private hypercall to map the bus into memory
 1.2 28-Apr-2013  pooka * remove the unused "opaque" parameter
* fix some typos in the previous
 1.1 28-Apr-2013  pooka make the file monitoring hypercalls private to shmif
 1.4.6.1 18-May-2014  rmind sync with head
 1.4.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.4.2 23-Jun-2013  tls resync from head
 1.4.4.1 30-Apr-2013  tls file rumpcomp_user.h was added on branch tls-maxphys on 2013-06-23 06:20:29 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 28-Feb-2009  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.28; 1.1.46;
Add a virtual ethernet interface which uses shared memory as the
bus instead of relying on the host kernel's tap and bridge. This
is much lighterweight approach which does not consume non-pageable
kernel resources.
 1.1.46.1 06-Apr-2015  skrll Sync with HEAD
 1.1.28.1 03-Dec-2017  jdolecek update from HEAD
 1.1.6.2 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.1.6.1 28-Feb-2009  jym file shlib_version was added on branch jym-xensuspend on 2009-05-13 17:23:02 +0000
 1.1.4.2 04-May-2009  yamt sync with head.
 1.1.4.1 28-Feb-2009  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.1.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.1.2.1 28-Feb-2009  skrll file shlib_version was added on branch nick-hppapmap on 2009-03-03 18:34:31 +0000
 1.12 17-Sep-2014  ozaki-r Make shmif buildable when DRPINTF enabled
 1.11 20-Dec-2013  pooka use _KERNEL_RCSID only in _KERNEL, _RCSID elsewhere
 1.10 20-Dec-2013  pooka header massage, mostly improves portability
 1.9 21-Mar-2011  pooka branches: 1.9.4; 1.9.14; 1.9.18;
Update copyright statements.

no functional change.
 1.8 12-Jan-2011  pooka branches: 1.8.2; 1.8.6;
make this happy to compile standalone
 1.7 17-Aug-2010  pooka branches: 1.7.2;
Fix hopefully last off-by-one: if we fill the bus, we must also
advance the "first" pointer. This problem triggered only if the
bus was filled in the first round, since the first pointer is at
the end-of-bus only for the bootstrap round.
 1.6 17-Aug-2010  pooka * fix off-by-wrap case where current datagram aligns exactly with
the end of the bus
* clarify the "can we still use the device's next pointer" calculation
and move it to its own routine
* sprinkle dprintf
 1.5 16-Aug-2010  pooka branches: 1.5.2;
simplify, improve, etc.
 1.4 15-Aug-2010  pooka Move the lockops together with the interface -- they are needed
only at runtime.
 1.3 15-Aug-2010  pooka introduce a sleep to trying to grab the bus
 1.2 13-Aug-2010  pooka Include a timestamp in the frame header. When converting to pcap,
it can give some idea of when packets were sent.

nb. it's the sending host's timestamp, not an observer timestamp
like in the typical pcap case.
 1.1 12-Aug-2010  pooka Include a pointer to the beginning of the buffer and add support
to the packet dumper. This helps in situations where the juicy
details are in a bus multiple generations old.
 1.5.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.5.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.5.2.1 16-Aug-2010  uebayasi file shmif_busops.c was added on branch uebayasi-xip on 2010-08-17 06:48:05 +0000
 1.7.2.2 09-Oct-2010  yamt sync with head
 1.7.2.1 17-Aug-2010  yamt file shmif_busops.c was added on branch yamt-nfs-mp on 2010-10-09 03:32:45 +0000
 1.8.6.3 21-Apr-2011  rmind sync with head
 1.8.6.2 05-Mar-2011  rmind sync with head
 1.8.6.1 12-Jan-2011  rmind file shmif_busops.c was added on branch rmind-uvmplock on 2011-03-05 20:56:21 +0000
 1.8.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.9.18.1 18-May-2014  rmind sync with head
 1.9.14.2 03-Dec-2017  jdolecek update from HEAD
 1.9.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.12;
rename component.c -> shmif_component.c
 1.1.12.1 19-Mar-2016  skrll Sync with HEAD
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file shmif_component.c was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file shmif_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file shmif_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.5 26-Mar-2019  bad Protect __KERNEL_RCSID. It isn't available when compile rumpkernels under e.g. Linux.
 1.4 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.3 12-Dec-2018  alnsn Add missing RCSIDs.
 1.2 04-Apr-2018  martin branches: 1.2.2;
Unconditionally include <unistd.h>, as we use ftruncate() unconditionally
too.
Reported (with patch) by Antonio Huete Jimenez in PR 53153, slightly
modified by me.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.34;
rename rumpcomp_user.* -> shmif_user.*
 1.1.34.2 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.34.1 07-Apr-2018  pgoyette Sync with HEAD. 77 conflicts resolved - all of them $NetBSD$
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file shmif_user.c was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file shmif_user.c was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file shmif_user.c was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.2.2.1 10-Jun-2019  christos Sync with HEAD
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
rename rumpcomp_user.* -> shmif_user.*
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file shmif_user.h was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file shmif_user.h was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file shmif_user.h was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.12 02-Sep-2024  ozaki-r shmif: export LOCK_* definitions

They will be used by upcoming shmif_pcapin.
 1.11 03-Apr-2020  christos branches: 1.11.22; 1.11.28;
make constant unsigned
 1.10 17-Sep-2014  ozaki-r branches: 1.10.20;
Make shmif buildable when DRPINTF enabled
 1.9 16-Aug-2014  ozaki-r Bump SHMIF_VERSION
 1.8 15-Aug-2014  ozaki-r Make shmif SIMPLEX

Add a sender field to a packet header on a shmif bus to identify
and ignore packets sent by itself.

This makes shmif work with bridges.

ok pooka@
 1.7 20-Dec-2013  pooka branches: 1.7.4;
header massage, mostly improves portability
 1.6 21-Mar-2011  pooka branches: 1.6.4; 1.6.14; 1.6.18;
Update copyright statements.

no functional change.
 1.5 15-Aug-2010  pooka branches: 1.5.2; 1.5.4; 1.5.6; 1.5.10;
Move the lockops together with the interface -- they are needed
only at runtime.
 1.4 13-Aug-2010  pooka Include a timestamp in the frame header. When converting to pcap,
it can give some idea of when packets were sent.

nb. it's the sending host's timestamp, not an observer timestamp
like in the typical pcap case.
 1.3 12-Aug-2010  pooka Include a pointer to the beginning of the buffer and add support
to the packet dumper. This helps in situations where the juicy
details are in a bus multiple generations old.
 1.2 12-Aug-2010  pooka * include a magic number in the bus format
* simplify offset calculations by making them start from beginning of data
 1.1 12-Aug-2010  pooka Make shmif memory access slightly more sane. Create a header which
is shared by the interface and the bus analyzer.
 1.5.10.3 21-Apr-2011  rmind sync with head
 1.5.10.2 05-Mar-2011  rmind sync with head
 1.5.10.1 15-Aug-2010  rmind file shmifvar.h was added on branch rmind-uvmplock on 2011-03-05 20:56:21 +0000
 1.5.6.1 06-Jun-2011  jruoho Sync with HEAD.
 1.5.4.2 09-Oct-2010  yamt sync with head
 1.5.4.1 15-Aug-2010  yamt file shmifvar.h was added on branch yamt-nfs-mp on 2010-10-09 03:32:45 +0000
 1.5.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.5.2.1 15-Aug-2010  uebayasi file shmifvar.h was added on branch uebayasi-xip on 2010-08-17 06:48:05 +0000
 1.6.18.1 18-May-2014  rmind sync with head
 1.6.14.2 03-Dec-2017  jdolecek update from HEAD
 1.6.14.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.4.1 17-Aug-2014  riz Pull up following revision(s) (requested by ozaki-r in ticket #28):
sys/rump/net/lib/libshmif/shmifvar.h: revision 1.8
sys/rump/net/lib/libshmif/if_shmem.c: revision 1.63
sys/rump/net/lib/libshmif/shmifvar.h: revision 1.9
Make shmif SIMPLEX
Add a sender field to a packet header on a shmif bus to identify
and ignore packets sent by itself.
This makes shmif work with bridges.
ok pooka@
Bump SHMIF_VERSION
 1.10.20.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.11.28.1 02-Aug-2025  perseant Sync with HEAD
 1.11.22.1 05-Sep-2024  martin Pull up following revision(s) (requested by ozaki-r in ticket #817):

tests/usr.bin/Makefile: revision 1.41 (patch)
distrib/sets/lists/base/mi: revision 1.1350 (patch)
usr.bin/shmif_pcapin/shmif_pcapin.1: revision 1.1
distrib/sets/lists/man/mi: revision 1.1787 (patch)
distrib/sets/lists/debug/mi: revision 1.447 (patch)
tests/usr.bin/shmif_pcapin/d_pcap.out.bz2.uue: revision 1.1
sys/rump/net/lib/libshmif/if_shmem.c: revision 1.88
etc/mtree/NetBSD.dist.tests: revision 1.207
sys/rump/net/lib/libshmif/shmifvar.h: revision 1.12
usr.bin/shmif_pcapin/shmif_pcapin.c: revision 1.1
usr.bin/shmif_pcapin/Makefile: revision 1.1
tests/usr.bin/shmif_pcapin/t_basic.sh: revision 1.1
usr.bin/Makefile: revision 1.240
distrib/sets/lists/tests/mi: revision 1.1335 (patch)
tests/usr.bin/shmif_pcapin/Makefile: revision 1.1
tests/usr.bin/shmif_pcapin/d_pcap.in.bz2.uue: revision 1.1

shmif: export LOCK_* definitions
They will be used by upcoming shmif_pcapin.

Add shmif_pcapin(1) utility program

It can send any frames that are stored in a pcap(3) file format to
shmif(4) Ethernet interface via the bus of it. If you want to write
some tests for networking with rump kernels and the tests need to send
frames that are difficult to generate by stock programs, shmif_pcapin
can be helpful.

The author of shmif_pcapin is k-goda@IIJ and the man page is written
by ozaki-r.

tests: add a basic test for shmif_pcapin

The original author of the test is k-goda@IIJ. ozaki-r tweaked
the test to improve stability and added comments.
distrib, etc: install shmif_pcapin and its tests
 1.10 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.9 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.8 13-Mar-2014  pooka branches: 1.8.6;
rename component.c -> sockin_component.c
 1.7 13-Mar-2014  pooka rename rumpcomp_user.* -> sockin_user.*
 1.6 18-Mar-2013  pooka branches: 1.6.6;
Move the rumpuser_net set of hypercalls to be a private to the sockin
component. This cleans up the generic hypercall interfaces from ones
specific to only one component. They should always have been private,
but the infrastructure to "make it so" didn't exist earlier.

no functional change
 1.5 12-Dec-2009  pooka branches: 1.5.12; 1.5.22;
Use linker script to make __start/stop_link_set_modules be present
in libs built with binutils >=2.19. This is a less error-prone
method than the previous where components had to be tagged in the
Makefile as modules (and if they weren't, things broke. and vice
versa).
 1.4 13-Sep-2009  pooka binutils 2.19 has changed the old behaviour of defining __start_SECTNAME
for orphaned sections to using PROVIDE. What this means is that
unless a rump component internally references that symbol, it will
not be included in the component shared library, and hence cannot
be referenced when the component is loaded. Add a workaround which
works both with 2.16 and 2.19: force a reference to the __start
symbol internally and hence retain it in the resulting library.
 1.3 28-May-2009  pooka Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.2 26-Jan-2009  pooka branches: 1.2.2; 1.2.4;
Convert compile-time SOCKIN_NOTHREADS into runtime rump_threads check.
 1.1 02-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8;
Add a very simplistic PF_INET/SOCK_DGRAM domain/proto implementation,
which delegates the work to host kernel sockets. This does not
run the entire kernel TCP/IP stack in userspace and therefore does
not require the ability to send or receive raw packets. This
implies that root priviledges are not required. As already said
above, only supports UDPv4 for now. Extending should be easy.
 1.1.8.1 03-Mar-2009  skrll Sync with HEAD.
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 02-Oct-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.1.4.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.4.1 02-Oct-2008  skrll file Makefile was added on branch wrstuden-revivesa on 2008-10-10 22:37:09 +0000
 1.1.2.2 05-Oct-2008  mjf Sync with HEAD.
 1.1.2.1 02-Oct-2008  mjf file Makefile was added on branch mjf-devfs2 on 2008-10-05 20:11:34 +0000
 1.2.4.5 11-Mar-2010  yamt sync with head
 1.2.4.4 16-Sep-2009  yamt sync with head
 1.2.4.3 20-Jun-2009  yamt sync with head
 1.2.4.2 04-May-2009  yamt sync with head.
 1.2.4.1 26-Jan-2009  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.2.2.1 23-Jul-2009  jym Sync with HEAD.
 1.5.22.3 03-Dec-2017  jdolecek update from HEAD
 1.5.22.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.22.1 23-Jun-2013  tls resync from head
 1.5.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.6.1 18-May-2014  rmind sync with head
 1.8.6.2 19-Mar-2016  skrll Sync with HEAD
 1.8.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4 13-Mar-2014  pooka rename component.c -> sockin_component.c
 1.3 01-Jun-2013  stacktic branches: 1.3.2;
Add IPv6 support
 1.2 01-Mar-2010  pooka branches: 1.2.10; 1.2.20;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 28-May-2009  pooka branches: 1.1.2; 1.1.4;
Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.1.4.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 28-May-2009  yamt file component.c was added on branch yamt-nfs-mp on 2009-06-20 07:20:37 +0000
 1.2.20.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.20.1 23-Jun-2013  tls resync from head
 1.2.10.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.2.1 18-May-2014  rmind sync with head
 1.9 13-Mar-2014  pooka rename rumpcomp_user.* -> sockin_user.*
 1.8 04-Jul-2013  pooka Avoid not-used warning on NetBSD
 1.7 01-Jun-2013  pooka branches: 1.7.2; 1.7.4;
Some minor tweaks to make this compile on Solaris.
 1.6 01-Jun-2013  stacktic Translate function parameters between the hypervisor and rump kernel
 1.5 30-Apr-2013  pooka Translate error codes between the hypervisor and rump kernel.
 1.4 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.3 27-Apr-2013  pooka rumpuser_poll() is used only by sockin, so make the hypercall
private to that component.
 1.2 19-Mar-2013  christos can we please stop breaking the build? These get compiled by the kernel
environment when there are no userland header files!
 1.1 18-Mar-2013  pooka Move the rumpuser_net set of hypercalls to be a private to the sockin
component. This cleans up the generic hypercall interfaces from ones
specific to only one component. They should always have been private,
but the infrastructure to "make it so" didn't exist earlier.

no functional change
 1.7.4.2 18-May-2014  rmind sync with head
 1.7.4.1 28-Aug-2013  rmind sync with head
 1.7.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.2.2 23-Jun-2013  tls resync from head
 1.7.2.1 01-Jun-2013  tls file rumpcomp_user.c was added on branch tls-maxphys on 2013-06-23 06:20:29 +0000
 1.4 13-Mar-2014  pooka rename rumpcomp_user.* -> sockin_user.*
 1.3 30-Apr-2013  pooka branches: 1.3.4; 1.3.6;
Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.2 27-Apr-2013  pooka rumpuser_poll() is used only by sockin, so make the hypercall
private to that component.
 1.1 18-Mar-2013  pooka Move the rumpuser_net set of hypercalls to be a private to the sockin
component. This cleans up the generic hypercall interfaces from ones
specific to only one component. They should always have been private,
but the infrastructure to "make it so" didn't exist earlier.

no functional change
 1.3.6.1 18-May-2014  rmind sync with head
 1.3.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.4.2 23-Jun-2013  tls resync from head
 1.3.4.1 30-Apr-2013  tls file rumpcomp_user.h was added on branch tls-maxphys on 2013-06-23 06:20:29 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 02-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.46; 1.1.66;
Add a very simplistic PF_INET/SOCK_DGRAM domain/proto implementation,
which delegates the work to host kernel sockets. This does not
run the entire kernel TCP/IP stack in userspace and therefore does
not require the ability to send or receive raw packets. This
implies that root priviledges are not required. As already said
above, only supports UDPv4 for now. Extending should be easy.
 1.1.66.1 06-Apr-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 02-Oct-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.1.6.2 19-Oct-2008  haad Sync with HEAD.
 1.1.6.1 02-Oct-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.1.4.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.4.1 02-Oct-2008  skrll file shlib_version was added on branch wrstuden-revivesa on 2008-10-10 22:37:09 +0000
 1.1.2.2 05-Oct-2008  mjf Sync with HEAD.
 1.1.2.1 02-Oct-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2008-10-05 20:11:34 +0000
 1.67 03-Sep-2022  thorpej Garbage-collect everything related to struct domain::dom_ifqueues
(except dom_ifqueues itself, until the next kernel version bump).
It's no longer used now that nothing uses the legacy netisr mechanism.
 1.66 26-Jun-2018  msaitoh Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward
compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same
as FreeBSD.

This change also fixes a bug that the direction is misunderstand on some
environment by passing the direction to bpf_mtap*() instead of checking
m->m_pkthdr.rcvif.
 1.65 21-Sep-2017  ozaki-r branches: 1.65.2;
Invalidate rtcache based on a global generation counter

The change introduces a global generation counter that is incremented when any
routes have been added or deleted. When a rtcache caches a rtentry into itself,
it also stores a snapshot of the generation counter. If the snapshot equals to
the global counter, the cache is still valid, otherwise invalidated.

One drawback of the change is that all rtcaches of all protocol families are
invalidated when any routes of any protocol families are added or deleted.
If that matters, we should have separate generation counters based on
protocol families.

This change removes LIST_ENTRY from struct route, which fixes a part of
PR kern/52515.
 1.64 15-Nov-2016  ozaki-r branches: 1.64.8;
Fix build of usr.sbin/puffs/rump_nfs

XXX a better fix should be to separate nfs codes and let rump_nfs link only
XXX one that doesn't depend on rt_delete_matched_entries (and rtrequest).
 1.63 26-Jan-2016  pooka branches: 1.63.2;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.62 02-May-2015  rtr make connect syscall use sockaddr_big and modify pr_{send,connect}
nam parameter type from buf * to sockaddr *.

final commit for parameter type changes to protocol user requests

* bump kernel version to 7.99.15 for parameter type changes to pr_{send,connect}
 1.61 26-Apr-2015  rtr remove pr_generic from struct pr_usrreqs and all implementations of
pr_generic in protocols.

bump to 7.99.13

approved by rmind@
 1.60 24-Apr-2015  rtr make accept, getsockname and getpeername syscalls use sockaddr_big and modify
pr_{accept,sockname,peername} nam parameter type from mbuf * to sockaddr *.

* retained use of mbuftypes[MT_SONAME] for now.
* bump to netbsd version 7.99.12 for parameter type change.

patch posted to tech-net@ 2015/04/19
 1.59 03-Apr-2015  rtr * change pr_bind to accept struct sockaddr * instead of struct mbuf *
* update protocol bind implementations to use/expect sockaddr *
instead of mbuf *
* introduce sockaddr_big struct for storage of addr data passed via
sys_bind; sockaddr_big is of sufficient size and alignment to
accommodate all addr data sizes received.
* modify sys_bind to allocate sockaddr_big instead of using an mbuf.
* bump kernel version to 7.99.9 for change to pr_bind() parameter type.

Patch posted to tech-net@
http://mail-index.netbsd.org/tech-net/2015/03/15/msg005004.html

The choice to use a new structure sockaddr_big has been retained since
changing sockaddr_storage size would lead to unnecessary ABI change. The
use of the new structure does not preclude future work that increases
the size of sockaddr_storage and at that time sockaddr_big may be
trivially replaced.

Tested by mrg@ and myself, discussed with rmind@, posted to tech-net@
 1.58 09-Aug-2014  rtr branches: 1.58.4;
split PRU_CONNECT2 & PRU_PURGEIF function out of pr_generic() usrreq
switches and put into separate functions

- always KASSERT(solocked(so)) even if not implemented
(for PRU_CONNECT2 only)

- replace calls to pr_generic() with req = PRU_CONNECT2 with calls to
pr_connect2()

- replace calls to pr_generic() with req = PRU_PURGEIF with calls to
pr_purgeif()

put common code from unp_connect2() (used by unp_connect() into
unp_connect1() and call out to it when needed

patch only briefly reviewed by rmind@
 1.57 08-Aug-2014  rtr split PRU_RCVD function out of pr_generic() usrreq switches and put into
separate functions

- always KASSERT(solocked(so)) even if not implemented

- replace calls to pr_generic() with req = PRU_RCVD with calls to
pr_rcvd()
 1.56 05-Aug-2014  rtr split PRU_SEND function out of pr_generic() usrreq switches and put into
separate functions

xxx_send(struct socket *, struct mbuf *, struct mbuf *,
struct mbuf *, struct lwp *)

- always KASSERT(solocked(so)) even if not implemented

- replace calls to pr_generic() with req = PRU_SEND with calls to
pr_send()

rename existing functions that operate on PCB for consistency (and to
free up their names for xxx_send() PRUs

- l2cap_send() -> l2cap_send_pcb()
- sco_send() -> sco_send_pcb()
- rfcomm_send() -> rfcomm_send_pcb()

patch reviewed by rmind
 1.55 05-Aug-2014  rtr revert the removal of struct lwp * parameter from bind, listen and connect
user requests.

this should resolve the issue relating to nfs client hangs presented
recently by wiz on current-users@
 1.54 31-Jul-2014  rtr split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of
pr_generic() usrreq switches and put into separate functions

xxx_disconnect(struct socket *)
xxx_shutdown(struct socket *)
xxx_abort(struct socket *)

- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req =
PRU_{DISCONNECT,SHUTDOWN,ABORT}
with calls to pr_{disconnect,shutdown,abort}() respectively

rename existing internal functions used to implement above functionality
to permit use of the names for xxx_{disconnect,shutdown,abort}().

- {l2cap,sco,rfcomm}_disconnect() ->
{l2cap,sco,rfcomm}_disconnect_pcb()
- {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1()
- unp_shutdown() -> unp_shutdown1()

patch reviewed by rmind
 1.53 30-Jul-2014  rtr split PRU_CONNECT function out of pr_generic() usrreq switches and put
into seaparate functions

xxx_listen(struct socket *, struct mbuf *)

- always KASSERT(solocked(so)) and KASSERT(nam != NULL)
- replace calls to pr_generic() with req = PRU_CONNECT with
pr_connect()
- rename existin {l2cap,sco,rfcomm}_connect() to
{l2cap,sco,rfcomm}_connect_pcb() respectively to permit
naming consistency with other protocols functions.
- drop struct lwp * parameter from unp_connect() and at_pcbconnect()
and use curlwp instead where appropriate.

patch reviewed by rmind
 1.52 28-Jul-2014  rtr add missing KASSERT()s at the top of sockin_usrreq(), req shall not be
either of these operations.

> KASSERT(req != PRU_BIND);
> KASSERT(req != PRU_LISTEN);
 1.51 24-Jul-2014  rtr split PRU_BIND and PRU_LISTEN function out of pr_generic() usrreq
switches and put into separate functions
xxx_bind(struct socket *, struct mbuf *)
xxx_listen(struct socket *)

- always KASSERT(solocked(so)) even if not implemented

- replace calls to pr_generic() with req = PRU_BIND with call to
pr_bind()

- replace calls to pr_generic() with req = PRU_LISTEN with call to
pr_listen()

- drop struct lwp * parameter from at_pcbsetaddr(), in_pcbbind() and
unp_bind() and always use curlwp.

rename existing functions that operate on PCB for consistency (and to
free up their names for xxx_{bind,listen}() PRUs

- l2cap_{bind,listen}() -> l2cap_{bind,listen}_pcb()
- sco_{bind,listen}() -> sco_{bind,listen}_pcb()
- rfcomm_{bind,listen}() -> rfcomm_{bind,listen}_pcb()

patch reviewed by rmind

welcome to netbsd 6.99.48
 1.50 23-Jul-2014  rtr split PRU_SENDOOB and PRU_RCVOOB function out of pr_generic() usrreq
switches and put into separate functions
xxx_sendoob(struct socket *, struct mbuf *, struct mbuf *)
xxx_recvoob(struct socket *, struct mbuf *, int)

- always KASSERT(solocked(so)) even if request is not implemented

- replace calls to pr_generic() with req = PRU_{SEND,RCV}OOB with
calls to pr_{send,recv}oob() respectively.

there is still some tweaking of m_freem(m) and m_freem(control) to come
for consistency. not performed with this commit for clarity.

reviewed by rmind
 1.49 09-Jul-2014  rtr fix name clash i introduced when adding sockin_accept() pru by renaming
the rump sockin_accept(struct socket *) to sockin_waccept(struct socket *)

not a very creative name the 'w' indicates worker and was chosen to
prefix the word accept to make it not pattern match with _accept. if
someone prefers a different name then please feel free to change it.
 1.48 09-Jul-2014  rtr * split PRU_ACCEPT function out of pr_generic() usrreq switches and put
into a separate function xxx_accept(struct socket *, struct mbuf *)

note: future cleanup will take place to remove struct mbuf parameter
type and replace it with a more appropriate type.

patch reviewed by rmind
 1.47 09-Jul-2014  rtr * split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic()
usrreq switches and put into separate functions
xxx_{peer,sock}addr(struct socket *, struct mbuf *).

- KASSERT(solocked(so)) always in new functions even if request
is not implemented

- KASSERT(pcb != NULL) and KASSERT(nam) if the request is
implemented and not for tcp.

* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into
easier to cut & paste functions tcp_debug_capture() and
tcp_debug_trace()

- functions provided by rmind
- remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a
future commit.

* rename netbt functions to permit consistency of pru function names
(as has been done with other requests already split out).

- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb()
- rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb()
- sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()

* split/refactor do_sys_getsockname(lwp, fd, which, nam) into
two functions do_sys_get{peer,sock}name(fd, nam).

- move PRU_PEERADDR handling into do_sys_getpeername() from
do_sys_getsockname()
- have svr4_stream directly call do_sys_get{sock,peer}name()
respectively instead of providing `which' & fix a DPRINTF string
that incorrectly wrote "getpeername" when it meant "getsockname"
- fix sys_getpeername() and sys_getsockname() to call
do_sys_get{sock,peer}name() without `which' and `lwp' & adjust
comments
- bump kernel version for removal of lwp & which parameters from
do_sys_getsockname()

note: future cleanup to remove struct mbuf * abuse in
xxx_{peer,sock}name()
still to come, not done in this commit since it is easier to do post
split.

patch reviewed by rmind

welcome to 6.99.47
 1.46 07-Jul-2014  rtr * sprinkle KASSERT(solocked(so)); in all pr_stat() functions.
* fix remaining inconsistent struct socket parameter names.
 1.45 07-Jul-2014  rtr backout change that made pr_stat return EOPNOTSUPP for protocols that
were not filling in struct stat.

decision made after further discussion with rmind and investigation of
how other operating systems behave. soo_stat() is doing just enough to
be able to call what gets returned valid and thus justifys a return of
success.

additional review will be done to determine of the pr_stat functions
that were already returning EOPNOTSUPP can be considered successful with
what soo_stat() is doing.
 1.44 07-Jul-2014  rtr * have pr_stat return EOPNOTSUPP consistently for all protocols that do
not fill in struct stat instead of returning success.

* in pr_stat remove all checks for non-NULL so->so_pcb except where the
pcb is actually used (i.e. cases where we don't return EOPNOTSUPP).

proposed on tech-net@
 1.43 06-Jul-2014  rtr * split PRU_SENSE functionality out of sockin_usrreq() and place into
separate sockin_stat(struct socket *, struct stat *) function.
* change behavior of function to just return success (like pretty much
every other implementation) instead of panic()ing due to lack of
implementation.
 1.42 01-Jul-2014  rtr fix parameter types in pr_ioctl, called xx_control() functions and remove
abuse of pointer to struct mbuf type.

param2 changed to u_long type and uses parameter name 'cmd' (ioctl command)
param3 changed to void * type and uses parameter name 'data'
param4 changed to struct ifnet * and uses parameter name 'ifp'
param5 has been removed (formerly struct lwp *) and uses of 'l' have been
replaced with curlwp from curproc(9).

callers have had (now unnecessary) casts to struct mbuf * removed, called
code has had (now unnecessary) casts to u_long, void * and struct ifnet *
respectively removed.

reviewed by rmind@
 1.41 22-Jun-2014  rtr * split PRU_CONTROL functionality out of xxx_userreq() switches and place
into separate xxx_ioctl() functions.
* place KASSERT(req != PRU_CONTROL) inside xxx_userreq() as it is now
inappropriate for req = PRU_CONTROL in xxx_userreq().
* replace calls to pr_generic() with req = PRU_CONTROL with pr_ioctl().
* remove & fixup references to PRU_CONTROL xxx_userreq() function comments.
* fix various comments references for xxx_userreq() that mentioned
PRU_CONTROL as xxx_userreq() no longer handles the request.

a further change will follow to fix parameter and naming inconsistencies
retained from original code.

Reviewed by rmind@
 1.40 19-May-2014  rmind - Split off PRU_ATTACH and PRU_DETACH logic into separate functions.
- Replace malloc with kmem and eliminate M_PCB while here.
- Sprinkle more asserts.
 1.39 18-May-2014  rmind Fix RUMP build.
 1.38 09-May-2014  pooka comment meets reality
 1.37 26-Apr-2014  pooka Move a few stubs to where they really belong; allows us to create
them as strong instead of weak symbols.
 1.36 13-Mar-2014  pooka branches: 1.36.2;
rename rumpcomp_user.* -> sockin_user.*
 1.35 29-Aug-2013  rmind Remove SS_ISCONFIRMING, it is unused and TP4 will not come back.
 1.34 23-Jun-2013  stacktic branches: 1.34.2;
Make sure sockin module is initialized only once
 1.33 01-Jun-2013  pooka check for EOF from backing sucket
 1.32 01-Jun-2013  pooka Assert that we get PRU_ATTACH requests only for the families we
have registered.
 1.31 01-Jun-2013  stacktic Add IPv6 support
 1.30 30-Apr-2013  pooka few more conversions
 1.29 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.28 27-Apr-2013  pooka rumpuser_poll() is used only by sockin, so make the hypercall
private to that component.
 1.27 18-Mar-2013  pooka Move the rumpuser_net set of hypercalls to be a private to the sockin
component. This cleans up the generic hypercall interfaces from ones
specific to only one component. They should always have been private,
but the infrastructure to "make it so" didn't exist earlier.

no functional change
 1.26 31-Mar-2011  dyoung branches: 1.26.4; 1.26.14;
Hide the radix-trie implementation of the forwarding table so that we
will have an easier time replacing it with something different, even if
it is a second radix-trie implementation.

sys/net/route.c and sys/net/rtsock.c no longer operate directly on
radix_nodes or radix_node_heads.

Hopefully this will reduce the temptation to implement multipath or
source-based routing using grotty hacks to the grotty old radix-trie
code, too. :-)
 1.25 05-Dec-2010  pooka branches: 1.25.2;
claim ENOTTY for PRU_CONTROL for now
 1.24 05-Dec-2010  pooka Revert previous: it introduces a dependency between sockin and the
netinet rump components and will have to be done another way.
 1.23 05-Dec-2010  pooka use in_control() for PRU_CONTROL
 1.22 05-Apr-2010  joerg Push the bpf_ops usage back into bpf.h. Push the common ifp->if_bpf
check into the inline functions as well the fourth argument for
bpf_attach.
 1.21 26-Jan-2010  pooka branches: 1.21.2; 1.21.4;
support bpf
 1.20 20-Oct-2009  tron Only allocate a "struct iovec" array from the healp if a reasonably sized
stack array isn't large enough.
 1.19 18-Oct-2009  tron Avoid panic if a file system tries to write a chain of more than 32 mbuf-s
to a socket. This happens e.g. when copying large files to SMBFS.

Code reviewed by Antti Kantee.
 1.18 17-Oct-2009  pooka fix off-by-one in sanity check and bump lazy bum magic value
 1.17 16-Oct-2009  pooka for udp sockets crank snd/rcvbufsize to 64k
 1.16 02-Sep-2009  pooka * implement pr_ctloutput
* check for errno before more costly checks
 1.15 18-Mar-2009  cegger branches: 1.15.2;
Ansify function definitions w/o arguments. Generated with sed.
 1.14 30-Jan-2009  pooka branches: 1.14.2;
.. but we still need to check if nam is passed to PRU_SEND for
non-connected sockets.
 1.13 30-Jan-2009  pooka Call soisconnected() in PRU_CONNECT for udp sockets too.
 1.12 27-Jan-2009  pooka * read TCP sockets in cluster-sized chunks instead of IP_MAXPACKET.
(it might be a better to chain a few clusters into the iov
instead of just one since we are making the syscall anyway)
* don't overwrite the useful error value
 1.11 27-Jan-2009  pooka Hold softnet_lock only when we need it.
 1.10 26-Jan-2009  pooka * support PRU_SOCK/PEERADDR
* soisdisconnected() TCP sockets if read returns a non-transient error or 0
 1.9 26-Jan-2009  pooka Convert compile-time SOCKIN_NOTHREADS into runtime rump_threads check.
 1.8 18-Dec-2008  pooka __KERNEL_RCSID
 1.7 26-Nov-2008  pooka Add dummy pr_ctloutput. I'm sure I had one at some point, since
it's required for rump_nfs to work, but I guess I lost it somewhere.
(yes, it should actually be implemented also)
 1.6 25-Nov-2008  pooka Make sockin radix-capable.
 1.5 25-Nov-2008  pooka Support PRU_BIND / PRU_LISTEN / PRU_ACCEPT in sockin.
 1.4 26-Oct-2008  minskim branches: 1.4.2;
Remove trailing whitespace.
 1.3 16-Oct-2008  pooka branches: 1.3.2;
appease 64bit gcc
 1.2 15-Oct-2008  pooka Mostly support TCP, mostly meaning "client-side TCP", since listen,
accept etc. is not supported yet. Disconnect is not really supported
either, but doesn't matter in most cases.
 1.1 02-Oct-2008  pooka branches: 1.1.2; 1.1.4;
Add a very simplistic PF_INET/SOCK_DGRAM domain/proto implementation,
which delegates the work to host kernel sockets. This does not
run the entire kernel TCP/IP stack in userspace and therefore does
not require the ability to send or receive raw packets. This
implies that root priviledges are not required. As already said
above, only supports UDPv4 for now. Extending should be easy.
 1.1.4.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.4.1 02-Oct-2008  skrll file sockin.c was added on branch wrstuden-revivesa on 2008-10-10 22:37:09 +0000
 1.1.2.3 17-Jan-2009  mjf Sync with HEAD.
 1.1.2.2 05-Oct-2008  mjf Sync with HEAD.
 1.1.2.1 02-Oct-2008  mjf file sockin.c was added on branch mjf-devfs2 on 2008-10-05 20:11:34 +0000
 1.3.2.3 13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.3.2.2 19-Oct-2008  haad Sync with HEAD.
 1.3.2.1 16-Oct-2008  haad file sockin.c was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.4.2.3 28-Apr-2009  skrll Sync with HEAD.
 1.4.2.2 03-Mar-2009  skrll Sync with HEAD.
 1.4.2.1 19-Jan-2009  skrll Sync with HEAD.
 1.14.2.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.15.2.5 11-Aug-2010  yamt sync with head.
 1.15.2.4 11-Mar-2010  yamt sync with head
 1.15.2.3 16-Sep-2009  yamt sync with head
 1.15.2.2 04-May-2009  yamt sync with head.
 1.15.2.1 18-Mar-2009  yamt file sockin.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.21.4.3 21-Apr-2011  rmind sync with head
 1.21.4.2 05-Mar-2011  rmind sync with head
 1.21.4.1 30-May-2010  rmind sync with head
 1.21.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.25.2.1 06-Jun-2011  jruoho Sync with HEAD.
 1.26.14.3 03-Dec-2017  jdolecek update from HEAD
 1.26.14.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.26.14.1 23-Jun-2013  tls resync from head
 1.26.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.34.2.1 18-May-2014  rmind sync with head
 1.36.2.1 10-Aug-2014  tls Rebase.
 1.58.4.4 05-Dec-2016  skrll Sync with HEAD
 1.58.4.3 19-Mar-2016  skrll Sync with HEAD
 1.58.4.2 06-Jun-2015  skrll Sync with HEAD
 1.58.4.1 06-Apr-2015  skrll Sync with HEAD
 1.63.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.64.8.1 24-Oct-2017  snj Pull up following revision(s) (requested by ozaki-r in ticket #305):
distrib/sets/lists/tests/mi: revision 1.762
sys/net/route.c: revision 1.198-1.201
sys/net/route.h: revision 1.114
sys/netatalk/at_proto.c: revision 1.22
sys/netinet/in_proto.c: revision 1.124
sys/netinet6/in6_proto.c: revision 1.118
sys/netmpls/mpls_proto.c: revision 1.31
sys/netnatm/natm_proto.c: revision 1.18
sys/rump/net/lib/libsockin/sockin.c: revision 1.65
sys/sys/domain.h: revision 1.33
tests/net/route/Makefile: revision 1.6
tests/net/route/t_rtcache.sh: revision 1.1
Add tests of rtcache invalidation
Remove unnecessary NULL check of rt_ifp
It's always non-NULL.
Invalidate rtcache based on a global generation counter
The change introduces a global generation counter that is incremented when any
routes have been added or deleted. When a rtcache caches a rtentry into itself,
it also stores a snapshot of the generation counter. If the snapshot equals to
the global counter, the cache is still valid, otherwise invalidated.
One drawback of the change is that all rtcaches of all protocol families are
invalidated when any routes of any protocol families are added or deleted.
If that matters, we should have separate generation counters based on
protocol families.
This change removes LIST_ENTRY from struct route, which fixes a part of
PR kern/52515.
Remove the global lock for rtcache
Thanks to removal of LIST_ENTRY of struct route, rtcaches are accessed only by
their users. And in existing usages a rtcache is guranteed to be not accessed
simultaneously. So the rtcache framework doesn't need any exclusion controls
in itself.
Synchronize on rtcache_generation with rtlock
It's racy if NET_MPSAFE is enabled.
Pointed out by joerg@
 1.65.2.1 28-Jul-2018  pgoyette Sync with HEAD
 1.3 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 22-Aug-2014  pooka branches: 1.2.2;
Nuke the DOMAINADD() macro and just call domain_attach(), now that things
work correctly that way.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
rename component.c -> sockin_component.c
 1.1.10.3 03-Dec-2017  jdolecek update from HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file sockin_component.c was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file sockin_component.c was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file sockin_component.c was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.2.2.1 19-Mar-2016  skrll Sync with HEAD
 1.4 26-Mar-2019  bad Protect __KERNEL_RCSID. It isn't available when compile rumpkernels under e.g. Linux.
 1.3 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.2 12-Dec-2018  alnsn Add missing RCSIDs.
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10; 1.1.34; 1.1.36;
rename rumpcomp_user.* -> sockin_user.*
 1.1.36.1 10-Jun-2019  christos Sync with HEAD
 1.1.34.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file sockin_user.c was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file sockin_user.c was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file sockin_user.c was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.1 13-Mar-2014  pooka branches: 1.1.4; 1.1.6; 1.1.10;
rename rumpcomp_user.* -> sockin_user.*
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Mar-2014  tls file sockin_user.h was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Mar-2014  yamt file sockin_user.h was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.1.4.2 18-May-2014  rmind sync with head
 1.1.4.1 13-Mar-2014  rmind file sockin_user.h was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.6 29-Sep-2020  roy libtap: Improve comment
 1.5 26-Jan-2016  pooka branches: 1.5.16;
Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.4 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.3 24-Aug-2015  pooka purge rump/net of component-specific opt directories
 1.2 20-Aug-2015  christos add ioconf files for pseudo device attach prototypes
 1.1 29-May-2015  pooka branches: 1.1.2;
Add a rump kernel component for the tap device.

from Wei Liu <wei.liu2@citrix.com> via private email
 1.1.2.5 19-Mar-2016  skrll Sync with HEAD
 1.1.2.4 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.1.2.3 22-Sep-2015  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 29-May-2015  skrll file Makefile was added on branch nick-nhusb on 2015-06-06 14:40:30 +0000
 1.5.16.2 03-Dec-2017  jdolecek update from HEAD
 1.5.16.1 26-Jan-2016  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1 20-Aug-2015  christos branches: 1.1.2; 1.1.18;
add ioconf files for pseudo device attach prototypes
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 20-Aug-2015  jdolecek file TAP.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.2.2 22-Sep-2015  skrll Sync with HEAD
 1.1.2.1 20-Aug-2015  skrll file TAP.ioconf was added on branch nick-nhusb on 2015-09-22 12:06:16 +0000
 1.4 08-Aug-2016  pgoyette branches: 1.4.14;
Part 2 of fixing if_tap module.
 1.3 26-Jan-2016  pooka Put the kernelside rump kernel headers into <rump-sys> instead of
sprinkling them around the faction directories. Avoids having
to add a CPPFLAGS (or several) to pretty much every component
Makefile.

Leave compat headers around in the old locations.

The commit changes some autogenerated files, but I'll fix the
generators shortly and regen.
 1.2 20-Aug-2015  christos add ioconf files for pseudo device attach prototypes
 1.1 29-May-2015  pooka branches: 1.1.2;
Add a rump kernel component for the tap device.

from Wei Liu <wei.liu2@citrix.com> via private email
 1.1.2.5 05-Oct-2016  skrll Sync with HEAD
 1.1.2.4 19-Mar-2016  skrll Sync with HEAD
 1.1.2.3 22-Sep-2015  skrll Sync with HEAD
 1.1.2.2 06-Jun-2015  skrll Sync with HEAD
 1.1.2.1 29-May-2015  skrll file tap_component.c was added on branch nick-nhusb on 2015-06-06 14:40:30 +0000
 1.4.14.2 03-Dec-2017  jdolecek update from HEAD
 1.4.14.1 08-Aug-2016  jdolecek file tap_component.c was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1 05-Sep-2016  ozaki-r branches: 1.1.2; 1.1.4; 1.1.18;
Support tun devices on rump kernels
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 05-Sep-2016  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.4.2 05-Oct-2016  skrll Sync with HEAD
 1.1.4.1 05-Sep-2016  skrll file Makefile was added on branch nick-nhusb on 2016-10-05 20:56:11 +0000
 1.1.2.2 14-Sep-2016  pgoyette Sync with HEAD
 1.1.2.1 05-Sep-2016  pgoyette file Makefile was added on branch pgoyette-localcount on 2016-09-14 03:04:19 +0000
 1.1 05-Sep-2016  ozaki-r branches: 1.1.2; 1.1.4; 1.1.18;
Support tun devices on rump kernels
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 05-Sep-2016  jdolecek file TUN.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.4.2 05-Oct-2016  skrll Sync with HEAD
 1.1.4.1 05-Sep-2016  skrll file TUN.ioconf was added on branch nick-nhusb on 2016-10-05 20:56:11 +0000
 1.1.2.2 14-Sep-2016  pgoyette Sync with HEAD
 1.1.2.1 05-Sep-2016  pgoyette file TUN.ioconf was added on branch pgoyette-localcount on 2016-09-14 03:04:19 +0000
 1.1 05-Sep-2016  ozaki-r branches: 1.1.2; 1.1.4; 1.1.18;
Support tun devices on rump kernels
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 05-Sep-2016  jdolecek file tun_component.c was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.4.2 05-Oct-2016  skrll Sync with HEAD
 1.1.4.1 05-Sep-2016  skrll file tun_component.c was added on branch nick-nhusb on 2016-10-05 20:56:11 +0000
 1.1.2.2 14-Sep-2016  pgoyette Sync with HEAD
 1.1.2.1 05-Sep-2016  pgoyette file tun_component.c was added on branch pgoyette-localcount on 2016-09-14 03:04:19 +0000
 1.1 29-Sep-2020  roy rumpify vether(4)
 1.1 29-Sep-2020  roy rumpify vether(4)
 1.1 29-Sep-2020  roy rumpify vether(4)
 1.10 19-Oct-2015  pooka Add a COMMENT describing what each component roughly does.

"make describe" prints the comment.

Requested/inspired by Vincent Schwarzer on rumpkernel-users
 1.9 13-Mar-2014  pooka branches: 1.9.6;
Rename rumpcomp_user.c -> virtif_user.c
Convert to new-style RUMPCOMP_USER_SRCS in Makefile.
 1.8 12-Mar-2014  pooka Separate common bits for all interfaces implementing virtif hypercalls
from Makefile to Makefile.virtif. The latter is meant to be .included.
 1.7 04-Jul-2013  pooka Determine the interface name and the names of exported symbols based
on VIRTIF_BASE. This allows using various different packet-shoveling
backends in the same rump kernel.
 1.6 15-Mar-2013  pooka branches: 1.6.6;
Rerevert to preprevious now that this builds with build.sh
 1.5 14-Mar-2013  pooka Guess the RUMPCOMP_USER stuff wasn't ready to be in the NetBSD tree yet,
so revert previous commits to fix build. I'll look at rereverting when
toolchain/47644 is fixed and clean buildtests are again possible.
 1.4 13-Mar-2013  pooka Push the bits accessing the networking backend into hypercalls.
This allows a few highly desirable things to happen:

1) Linux support, which is included in this commit (thanks to wanq for
sending me the magic bits for accessing /dev/net/tun)
2) Reusing the kernel-side of the interface for devices such as
hardware packet processors which interact directly with user vm spaces
(not included in the commit).
 1.3 28-May-2009  pooka branches: 1.3.12; 1.3.22;
Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.2 16-Oct-2008  pooka branches: 1.2.2; 1.2.10; 1.2.12; 1.2.16;
kill default DBG=-g
 1.1 06-Oct-2008  pooka branches: 1.1.2;
Implement a virtual userspace networking interface. This is required
for any sensible operation when running the entire TCP/IP stack in
userspace (as opposed to libsockin which uses host kernel networking
to provide PF_INET).

While this basically works (although it is quite barebones), it
depends on some bit of cleanup in librump and is not built by
default yet.
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file Makefile was added on branch wrstuden-revivesa on 2008-10-10 22:37:09 +0000
 1.2.16.3 20-Jun-2009  yamt sync with head
 1.2.16.2 04-May-2009  yamt sync with head.
 1.2.16.1 16-Oct-2008  yamt file Makefile was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.2.12.1 23-Jul-2009  jym Sync with HEAD.
 1.2.10.2 17-Jan-2009  mjf Sync with HEAD.
 1.2.10.1 16-Oct-2008  mjf file Makefile was added on branch mjf-devfs2 on 2009-01-17 13:29:39 +0000
 1.2.2.2 19-Oct-2008  haad Sync with HEAD.
 1.2.2.1 16-Oct-2008  haad file Makefile was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.3.22.3 03-Dec-2017  jdolecek update from HEAD
 1.3.22.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.22.1 23-Jun-2013  tls resync from head
 1.3.12.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.6.2 18-May-2014  rmind sync with head
 1.6.6.1 28-Aug-2013  rmind sync with head
 1.9.6.1 27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.4 13-Mar-2014  pooka branches: 1.4.4; 1.4.6; 1.4.10;
No reason to attach if_virt as a RUMP_COMPONENT(), simply use MODULE().
 1.3 13-Mar-2014  pooka remove unnecessary header inclusions
 1.2 12-Mar-2014  pooka component.c -> virtif_component.c, just to decrease risk of conflicts.
No runtime change.
 1.1 12-Mar-2014  pooka Separate common bits for all interfaces implementing virtif hypercalls
from Makefile to Makefile.virtif. The latter is meant to be .included.
 1.4.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.10.1 13-Mar-2014  tls file Makefile.virtif was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.4.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.6.1 13-Mar-2014  yamt file Makefile.virtif was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.4.4.2 18-May-2014  rmind sync with head
 1.4.4.1 13-Mar-2014  rmind file Makefile.virtif was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.5 12-Mar-2014  pooka component.c -> virtif_component.c, just to decrease risk of conflicts.
No runtime change.
 1.4 04-Jul-2013  pooka Determine the interface name and the names of exported symbols based
on VIRTIF_BASE. This allows using various different packet-shoveling
backends in the same rump kernel.
 1.3 19-Oct-2010  pooka branches: 1.3.8; 1.3.18; 1.3.22;
Make virtif a cloner so that it can be brough to life also with
"ifconfig create". As previously, virt<n> interfaces with the
host's /dev/tap<n> (I guess it could be made explicit with
"ifconfig media", but leave it this way for now).
 1.2 01-Mar-2010  pooka branches: 1.2.2;
Introduce RUMP_COMPONENT. It behaves mostly like a simplified
module which is linked into the kernel and cannot be unloaded.
The main purpose is to get the proper constructors run and create
any /dev nodes necessary for said component. Once more of the
kernel (e.g. networking stack and device drivers) are converted to
MODULE and devfs pops up from somewhere, rump components can be
retired.
 1.1 28-May-2009  pooka branches: 1.1.2; 1.1.4;
Use a bunch of weak symbols to determine which network components
are present. This works in userspace as opposed relying in link
sets, which fail miserably. Later, when the networking stack
becomes modularized, we can move to a dynamic scheme like with file
systems.

Also, this change allows us to do proper autoconfig, namely attach
the loopback interface iff it is present.
 1.1.4.2 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.1.4.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.1.2.3 11-Mar-2010  yamt sync with head
 1.1.2.2 20-Jun-2009  yamt sync with head
 1.1.2.1 28-May-2009  yamt file component.c was added on branch yamt-nfs-mp on 2009-06-20 07:20:37 +0000
 1.2.2.1 05-Mar-2011  rmind sync with head
 1.3.22.2 18-May-2014  rmind sync with head
 1.3.22.1 28-Aug-2013  rmind sync with head
 1.3.18.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.59 16-Jun-2021  riastradh if_attach and if_initialize cannot fail, don't test return value

These were originally made failable back in 2017 when if_initialize
allocated a softint in every interface for link state changes, so
that it could fail gracefully instead of panicking:

https://mail-index.NetBSD.org/source-changes/2017/10/23/msg089053.html

However, this spawned many seldom- or never-tested error branches,
which are risky to have around. And that softint in every interface
has since been replaced by a single global workqueue, because link
state changes require thread context but not low latency or high
throughput:

https://mail-index.NetBSD.org/source-changes/2020/02/06/msg113759.html

So there is no longer any reason for if_initialize to fail. (The
subroutine if_stats_init can't fail because percpu_alloc can't fail
either.)

There is a snag: the softint_establish in if_percpuq_create could
fail, potentially leading to bad consequences later on trying to use
the softint. This change doesn't introduce any new bugs because of
the snag -- if_percpuq_attach was already broken. However, the snag
can be better addressed without spawning error branches, either by
using a single softint or making softints less scarce.

(Separate commit will change the signatures of if_attach and
if_initialize to return void, scheduled to ride whatever is the next
convenient kernel bump.)

Patch and testing on amd64 and evbmips64-eb by maya@; commit message
soliloquy, and compile-testing on evbppc/i386/earmv7hf, by me.
 1.58 01-Feb-2020  thorpej branches: 1.58.10;
Adopt <net/if_stats.h>.
 1.57 26-Jun-2018  msaitoh branches: 1.57.2; 1.57.8;
Implement the BPF direction filter (BIOC[GS]DIRECTION). It provides backward
compatibility with BIOC[GS]SEESENT ioctl. The userland interface is the same
as FreeBSD.

This change also fixes a bug that the direction is misunderstand on some
environment by passing the direction to bpf_mtap*() instead of checking
m->m_pkthdr.rcvif.
 1.56 23-Oct-2017  msaitoh branches: 1.56.2;
Fix compile error.
 1.55 23-Oct-2017  msaitoh If error occured in the attach function, free resources and return.
 1.54 15-Dec-2016  ozaki-r branches: 1.54.8;
Move bpf_mtap and if_ipackets++ on Rx of each driver to percpuq if_input

The benefits of the change are:
- We can reduce codes
- We can provide the same behavior between drivers
- Where/When if_ipackets is counted up
- Note that some drivers still update packet statistics in their own
way (periodical update)
- Moved bpf_mtap run in softint
- This makes it easy to MP-ify bpf

Proposed on tech-kern and tech-net
 1.53 16-Jun-2016  ozaki-r branches: 1.53.2;
Use curlwp_bind and curlwp_bindx instead of open-coding LP_BOUND
 1.52 10-Jun-2016  ozaki-r Introduce m_set_rcvif and m_reset_rcvif

The API is used to set (or reset) a received interface of a mbuf.
They are counterpart of m_get_rcvif, which will come in another
commit, hide internal of rcvif operation, and reduce the diff of
the upcoming change.

No functional change.
 1.51 19-Apr-2016  ozaki-r Prevent LWP migrations between CPUs during upper layer processing

This is a contract of psref(9) that is used by upper layer componenets,
e.g., bridge(4).
 1.50 09-Feb-2016  ozaki-r Introduce softint-based if_input

This change intends to run the whole network stack in softint context
(or normal LWP), not hardware interrupt context. Note that the work is
still incomplete by this change; to that end, we also have to softint-ify
if_link_state_change (and bpf) which can still run in hardware interrupt.

This change softint-ifies at ifp->if_input that is called from
each device driver (and ieee80211_input) to ensure Layer 2 runs
in softint (e.g., ether_input and bridge_input). To this end,
we provide a framework (called percpuq) that utlizes softint(9)
and percpu ifqueues. With this patch, rxintr of most drivers just
queues received packets and schedules a softint, and the softint
dequeues packets and does rest packet processing.

To minimize changes to each driver, percpuq is allocated in struct
ifnet for now and that is initialized by default (in if_attach).
We probably have to move percpuq to softc of each driver, but it's
future work. At this point, only wm(4) has percpuq in its softc
as a reference implementation.

Additional information including performance numbers can be found
in the thread at tech-kern@ and tech-net@:
http://mail-index.netbsd.org/tech-kern/2016/01/14/msg019997.html

Acknowledgment: riastradh@ greatly helped this work.
Thank you very much!
 1.49 06-Nov-2014  pooka branches: 1.49.2;
Ensure that no two VIRTIF's have the same modname, therefore
allowing them to coexist in the same rump kernel.

from Alexander Guy, via github
 1.48 09-Aug-2014  ozaki-r Count packets in if_virt
 1.47 02-Apr-2014  pooka use if_initname() instead of homegrown sprintf
 1.46 20-Mar-2014  christos kill sprintf
 1.45 18-Mar-2014  pooka Trim alignment out of packet length before passing it up.
 1.44 13-Mar-2014  pooka No reason to attach if_virt as a RUMP_COMPONENT(), simply use MODULE().
 1.43 13-Mar-2014  pooka remove unnecessary header inclusions
 1.42 13-Mar-2014  pooka allow VIF_DYING() implementation to protest
 1.41 13-Mar-2014  pooka Rename rumpcomp_user.c -> virtif_user.c
Convert to new-style RUMPCOMP_USER_SRCS in Makefile.
 1.40 12-Mar-2014  pooka When sending, only load mbufs which have a length. This is especially
useful for fragmented datagrams where the tail of the first packet is
full of nothing.
 1.39 03-Mar-2014  pooka Pull in the changes from the dpdk, netmap and snabb switch repos.
There are two major changes:

1) All thread context policy is pushed down to the hypercalls.
This is meant to help performance-mongering implementations be
able to control packet scheduling better (e.g. pin down packet
reception to certain physical cores).
2) Generalize linkstr, meaning that the interface can now take an
arbitrary string which is passed to the create() hypercall. This can
be used to map backend device characteristics to the rump kernel
interface instance.
 1.38 21-Feb-2014  skrll Fix typo in fix for PR/48606
 1.37 21-Feb-2014  christos PR/48606: Lloyd Parkes: Drivers not using ifp->if_input but using ether_input
directly.
 1.36 04-Jul-2013  pooka Determine the interface name and the names of exported symbols based
on VIRTIF_BASE. This allows using various different packet-shoveling
backends in the same rump kernel.
 1.35 03-Jul-2013  pooka fix parameter name
 1.34 03-Jul-2013  pooka Adjust for rump_virtif_create() removal. Incidentally, this reduces
the number of exported symbols by one (which is useful for phase 2).
 1.33 03-Jul-2013  pooka g/c dummyif, not useful these days
 1.32 03-Jul-2013  pooka Allow alternate interface base names to be specified at compile time.
 1.31 30-Apr-2013  pooka branches: 1.31.4;
Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.30 15-Mar-2013  pooka Rerevert to preprevious now that this builds with build.sh
 1.29 14-Mar-2013  pooka Guess the RUMPCOMP_USER stuff wasn't ready to be in the NetBSD tree yet,
so revert previous commits to fix build. I'll look at rereverting when
toolchain/47644 is fixed and clean buildtests are again possible.
 1.28 13-Mar-2013  pooka Push the bits accessing the networking backend into hypercalls.
This allows a few highly desirable things to happen:

1) Linux support, which is included in this commit (thanks to wanq for
sending me the magic bits for accessing /dev/net/tun)
2) Reusing the kernel-side of the interface for devices such as
hardware packet processors which interact directly with user vm spaces
(not included in the commit).
 1.27 14-Sep-2012  pooka Do not assume that O_FOO flags have matching values in the rump kernel
and hypervisor.
 1.26 19-Nov-2011  tls branches: 1.26.8;
First step of random number subsystem rework described in
<20111022023242.BA26F14A158@mail.netbsd.org>. This change includes
the following:

An initial cleanup and minor reorganization of the entropy pool
code in sys/dev/rnd.c and sys/dev/rndpool.c. Several bugs are
fixed. Some effort is made to accumulate entropy more quickly at
boot time.

A generic interface, "rndsink", is added, for stream generators to
request that they be re-keyed with good quality entropy from the pool
as soon as it is available.

The arc4random()/arc4randbytes() implementation in libkern is
adjusted to use the rndsink interface for rekeying, which helps
address the problem of low-quality keys at boot time.

An implementation of the FIPS 140-2 statistical tests for random
number generator quality is provided (libkern/rngtest.c). This
is based on Greg Rose's implementation from Qualcomm.

A new random stream generator, nist_ctr_drbg, is provided. It is
based on an implementation of the NIST SP800-90 CTR_DRBG by
Henric Jungheim. This generator users AES in a modified counter
mode to generate a backtracking-resistant random stream.

An abstraction layer, "cprng", is provided for in-kernel consumers
of randomness. The arc4random/arc4randbytes API is deprecated for
in-kernel use. It is replaced by "cprng_strong". The current
cprng_fast implementation wraps the existing arc4random
implementation. The current cprng_strong implementation wraps the
new CTR_DRBG implementation. Both interfaces are rekeyed from
the entropy pool automatically at intervals justifiable from best
current cryptographic practice.

In some quick tests, cprng_fast() is about the same speed as
the old arc4randbytes(), and cprng_strong() is about 20% faster
than rnd_extract_data(). Performance is expected to improve.

The AES code in src/crypto/rijndael is no longer an optional
kernel component, as it is required by cprng_strong, which is
not an optional kernel component.

The entropy pool output is subjected to the rngtest tests at
startup time; if it fails, the system will reboot. There is
approximately a 3/10000 chance of a false positive from these
tests. Entropy pool _input_ from hardware random numbers is
subjected to the rngtest tests at attach time, as well as the
FIPS continuous-output test, to detect bad or stuck hardware
RNGs; if any are detected, they are detached, but the system
continues to run.

A problem with rndctl(8) is fixed -- datastructures with
pointers in arrays are no longer passed to userspace (this
was not a security problem, but rather a major issue for
compat32). A new kernel will require a new rndctl.

The sysctl kern.arandom() and kern.urandom() nodes are hooked
up to the new generators, but the /dev/*random pseudodevices
are not, yet.

Manual pages for the new kernel interfaces are forthcoming.
 1.25 31-Oct-2011  yamt branches: 1.25.2;
fix a type in a printf message
 1.24 07-Aug-2011  rmind Rename slightly misleading KTHREAD_JOINABLE to KTHREAD_MUSTJOIN.
 1.23 22-Jun-2011  mrg fix an operator precedence error picked up by GCC 4.5.3. real bug.
 1.22 01-Dec-2010  pooka Don't bother asserting: if we create the thread without KTHREAD_MPSAFE,
it's not going to be MPSAFE.
 1.21 15-Nov-2010  pooka Make interface support ifconfig {down,destroy} and generally make
it a little less eager to panic.
 1.20 19-Oct-2010  pooka Make virtif a cloner so that it can be brough to life also with
"ifconfig create". As previously, virt<n> interfaces with the
host's /dev/tap<n> (I guess it could be made explicit with
"ifconfig media", but leave it this way for now).
 1.19 10-Aug-2010  pooka * improve diagnostic print
* deal with a tap quirk when it returns 0 bytes
 1.18 05-Apr-2010  joerg Fix typo
 1.17 05-Apr-2010  joerg Push the bpf_ops usage back into bpf.h. Push the common ifp->if_bpf
check into the inline functions as well the fourth argument for
bpf_attach.
 1.16 19-Jan-2010  pooka branches: 1.16.2; 1.16.4;
Redefine bpf linkage through an always present op vector, i.e.
#if NBPFILTER is no longer required in the client. This change
doesn't yet add support for loading bpf as a module, since drivers
can register before bpf is attached. However, callers of bpf can
now be modularized.

Dynamically loadable bpf could probably be done fairly easily with
coordination from the stub driver and the real driver by registering
attachments in the stub before the real driver is loaded and doing
a handoff. ... and I'm not going to ponder the depths of unload
here.

Tested with i386/MONOLITHIC, modified MONOLITHIC without bpf and rump.
 1.15 16-Jan-2010  pooka support bpf
 1.14 14-Oct-2009  pooka "rumppriv" goes back to "rump" per internal interface naming change.
 1.13 14-Oct-2009  pooka Adjust rump sources for external/internal interfaces.
No functional change.
 1.12 12-Oct-2009  pooka Bump iovec lazy bum magic value to 32: nfsd likes to write mbufs
with 17 per chain (previous i'm-too-lazy-for-my-forloop value was
of course 16).
 1.11 16-Sep-2009  pooka work around tap bug: if /dev/tap<n> was previously non-blocking, newly
opened fd's will also be non-blocking.
(yeayea, i'll fix the kernel some day, but I don't want to reboot
my host OS now)
 1.10 27-May-2009  pooka Add a dummyif, which doesn't actually traffic any cargo, but since
it has no backend it can always be attached and is therefore
convenient for testing ifconfig.
 1.9 26-May-2009  pooka Filter out ENETRESET from ether_ioctl() since we aren't interested
in multicast hugging.
 1.8 27-Mar-2009  pooka branches: 1.8.2;
* make interface creation open /dev/tapn for interface n
* create "unique" enaddr
* do send in async context
 1.7 28-Feb-2009  pooka Fix a silly mistake: indubitably the struct ifnet pointer given to
ether_ifattach() should point to a struct ethercom.
 1.6 26-Feb-2009  pooka decouple from host struct iovec
 1.5 18-Dec-2008  pooka branches: 1.5.2; 1.5.4;
__KERNEL_RCSID
 1.4 16-Oct-2008  pooka branches: 1.4.2; 1.4.4;
Add a prototype to allow this to build (will be moved to a better
place later).
 1.3 14-Oct-2008  pooka Make the "something random" ethernet address ETHER_IS_LOCAL
(address assignment probably needs some more work if we want to
support multiple interfaces).

hat tip to Quentin Garnier
 1.2 13-Oct-2008  pooka Dear diary: an ethernet address with 0x01 set in the first octet
is an ethernet multicast address. TCP does not like ethernet
multicast addresses.
 1.1 06-Oct-2008  pooka branches: 1.1.2;
Implement a virtual userspace networking interface. This is required
for any sensible operation when running the entire TCP/IP stack in
userspace (as opposed to libsockin which uses host kernel networking
to provide PF_INET).

While this basically works (although it is quite barebones), it
depends on some bit of cleanup in librump and is not built by
default yet.
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file if_virt.c was added on branch wrstuden-revivesa on 2008-10-10 22:37:09 +0000
 1.4.4.3 28-Apr-2009  skrll Sync with HEAD.
 1.4.4.2 03-Mar-2009  skrll Sync with HEAD.
 1.4.4.1 19-Jan-2009  skrll Sync with HEAD.
 1.4.2.2 19-Oct-2008  haad Sync with HEAD.
 1.4.2.1 16-Oct-2008  haad file if_virt.c was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.5.4.2 23-Jul-2009  jym Sync with HEAD.
 1.5.4.1 13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.5.2.2 17-Jan-2009  mjf Sync with HEAD.
 1.5.2.1 18-Dec-2008  mjf file if_virt.c was added on branch mjf-devfs2 on 2009-01-17 13:29:39 +0000
 1.8.2.5 11-Aug-2010  yamt sync with head.
 1.8.2.4 11-Mar-2010  yamt sync with head
 1.8.2.3 20-Jun-2009  yamt sync with head
 1.8.2.2 04-May-2009  yamt sync with head.
 1.8.2.1 27-Mar-2009  yamt file if_virt.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.16.4.2 05-Mar-2011  rmind sync with head
 1.16.4.1 30-May-2010  rmind sync with head
 1.16.2.3 22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.16.2.2 17-Aug-2010  uebayasi Sync with HEAD.
 1.16.2.1 30-Apr-2010  uebayasi Sync with HEAD.
 1.25.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.25.2.2 30-Oct-2012  yamt sync with head
 1.25.2.1 17-Apr-2012  yamt sync with head
 1.26.8.4 03-Dec-2017  jdolecek update from HEAD
 1.26.8.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.26.8.2 23-Jun-2013  tls resync from head
 1.26.8.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.31.4.2 18-May-2014  rmind sync with head
 1.31.4.1 28-Aug-2013  rmind sync with head
 1.49.2.4 05-Feb-2017  skrll Sync with HEAD
 1.49.2.3 09-Jul-2016  skrll Sync with HEAD
 1.49.2.2 22-Apr-2016  skrll Sync with HEAD
 1.49.2.1 19-Mar-2016  skrll Sync with HEAD
 1.53.2.1 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.54.8.1 10-Dec-2017  snj Pull up following revision(s) (requested by msaitoh in ticket #427):
sys/arch/amiga/dev/if_bah_zbus.c: 1.17
sys/arch/arm/broadcom/bcm53xx_eth.c: 1.30
sys/arch/powerpc/booke/dev/pq3etsec.c: 1.32
sys/arch/usermode/dev/if_veth.c: 1.9
sys/dev/ic/an.c: 1.66
sys/dev/ic/athn.c: 1.17
sys/dev/ic/atw.c: 1.162
sys/dev/ic/bwi.c: 1.33
sys/dev/ic/dwc_gmac.c: 1.41-1.42
sys/dev/ic/malo.c: 1.10
sys/dev/ic/rt2560.c: 1.31
sys/dev/ic/rt2661.c: 1.36
sys/dev/ic/rt2860.c: 1.29
sys/dev/ic/rtw.c: 1.127
sys/dev/ic/rtwvar.h: 1.46
sys/dev/ic/smc90cx6.c: 1.71
sys/dev/ic/smc90cx6var.h: 1.12
sys/dev/ic/wi.c: 1.244
sys/dev/pci/if_ipw.c: 1.66
sys/dev/pci/if_iwi.c: 1.104
sys/dev/pci/if_iwm.c: 1.76
sys/dev/pci/if_iwn.c: 1.86
sys/dev/pci/if_rtwn.c: 1.13
sys/dev/pci/if_wm.c: 1.541
sys/dev/pci/if_wpi.c: 1.79
sys/dev/pci/ixgbe/ixgbe.c: 1.106
sys/dev/pci/ixgbe/ixv.c: 1.73 via patch
sys/dev/pcmcia/if_malo_pcmcia.c: 1.15
sys/dev/scsipi/if_se.c: 1.95
sys/dev/usb/if_upl.c: 1.60
sys/net/if.c: 1.396
sys/net/if.h: 1.241
sys/net/if_arc.h: 1.23
sys/net/if_arcsubr.c: 1.78
sys/net/if_bridge.c: 1.136-1.137
sys/net/if_etherip.c: 1.39
sys/net/if_faith.c: 1.56
sys/net/if_gif.c: 1.131
sys/net/if_loop.c: 1.96
sys/net/if_mpls.c: 1.30
sys/net/if_pppoe.c: 1.129
sys/net/if_srt.c: 1.27
sys/net/if_stf.c: 1.102
sys/net/if_tap.c: 1.100
sys/net/if_vlan.c: 1.105
sys/netinet/ip_carp.c: 1.91
sys/rump/net/lib/libshmif/if_shmem.c: 1.73-1.74
sys/rump/net/lib/libvirtif/if_virt.c: 1.55-1.56
if_initalize() and if_attach() failed when resource allocation failed
(e.g. allocating softint). Without this change, it panics. It's bad because
resource shortage really occured when a lot of pseudo interface is created.
To avoid this problem, don't panic and change return value of if_initialize()
and if_attach() to int. Caller fanction will be recover from error cleanly by
checking the return value.
Return if bah_attach_subr() failed.
If if_attach() failed in the attach function, return.
- If if_initialize() failed in the attach function, free resources and return.
- Add some missing frees in bridge_clone_destroy().
- KNF
If error occured in bcmeth_ccb_attach(), free resources and return.
If error occured in pq3etsec_attach(), free resources and return.
If error occured in the attach function, free resources and return.
- If if_initialize() failed in athn_attach(), free resources and return.
- Add missing pmf_event_deregister() in athn_detach().
- Free resources correctly on some errors in atw_attach().
- Use apint*() insread of printf() in the attach function.
If if_initialize() failed in the attach function, return.
- If if_initialize() failed in the attach function, free resources and return.
- Add missing dwc_gmac_free_dma_rings() and mutex_destroy() when attach
failed.
- If if_initialize() failed in the attach function, free resources and return.
- ifp is always not NULL in iwi_detach(). Check correctly with ifp->if_softc.
- If if_initialize() failed in the attach function, free resources and return.
- Fix error path in the attach function correctly.
If if_initialize() failed in the attach function, free resources and return.
If if_attach() failed in the attach function, free resources and return.
- If if_initialize() failed in the attach function, free resources and return.
- KNF
- If if_attach() failed in the attach function, free resources and return.
- KNF
Fix compile error.
Fix compile error.
We don't need '&mii', but just 'mii' for mii_detach().
Don't free sc_rthash twice
 1.56.2.1 28-Jul-2018  pgoyette Sync with HEAD
 1.57.8.1 29-Feb-2020  ad Sync with head.
 1.57.2.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.58.10.1 17-Jun-2021  thorpej Sync w/ HEAD.
 1.3 03-Mar-2014  pooka branches: 1.3.4; 1.3.8;
Pull in the changes from the dpdk, netmap and snabb switch repos.
There are two major changes:

1) All thread context policy is pushed down to the hypercalls.
This is meant to help performance-mongering implementations be
able to control packet scheduling better (e.g. pin down packet
reception to certain physical cores).
2) Generalize linkstr, meaning that the interface can now take an
arbitrary string which is passed to the create() hypercall. This can
be used to map backend device characteristics to the rump kernel
interface instance.
 1.2 04-Jul-2013  pooka branches: 1.2.4;
Add a note explaining why there's a homegrown __STRING, __CONCAT, etc.
 1.1 04-Jul-2013  pooka Determine the interface name and the names of exported symbols based
on VIRTIF_BASE. This allows using various different packet-shoveling
backends in the same rump kernel.
 1.2.4.3 18-May-2014  rmind sync with head
 1.2.4.2 28-Aug-2013  rmind sync with head
 1.2.4.1 04-Jul-2013  rmind file if_virt.h was added on branch rmind-smpnet on 2013-08-28 23:59:37 +0000
 1.3.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 03-Mar-2014  tls file if_virt.h was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 03-Mar-2014  yamt file if_virt.h was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.13 13-Mar-2014  pooka Rename rumpcomp_user.c -> virtif_user.c
Convert to new-style RUMPCOMP_USER_SRCS in Makefile.
 1.12 03-Mar-2014  pooka Pull in the changes from the dpdk, netmap and snabb switch repos.
There are two major changes:

1) All thread context policy is pushed down to the hypercalls.
This is meant to help performance-mongering implementations be
able to control packet scheduling better (e.g. pin down packet
reception to certain physical cores).
2) Generalize linkstr, meaning that the interface can now take an
arbitrary string which is passed to the create() hypercall. This can
be used to map backend device characteristics to the rump kernel
interface instance.
 1.11 27-Oct-2013  pooka Give the hypercall interface a version number. This is for
implementations outside of the tree.
 1.10 16-Jul-2013  pooka A simple (void) is apparently too easy and traditional to make
Wunused-result STFU, so let's invent something a bit more verbose to
try to achieve the desired result of "ccg xnaht I really don't care if
you think I should check the return value".
 1.9 16-Jul-2013  pooka Explicitly ignore return value of writev() for sending a packet.

Otherwise you get the following with some compilers:
warning: ignoring return value of 'writev', declared with attribute warn_unused_result [-Wunused-result]
 1.8 04-Jul-2013  pooka Determine the interface name and the names of exported symbols based
on VIRTIF_BASE. This allows using various different packet-shoveling
backends in the same rump kernel.
 1.7 04-Jul-2013  pooka fix warnings
 1.6 20-May-2013  pooka branches: 1.6.2; 1.6.4;
Return 0 for success instead of returning an uninitialized automatic variable.

from Gal Sagie, PR 47837
 1.5 30-Apr-2013  pooka Translate error codes between the hypervisor and rump kernel.
 1.4 30-Apr-2013  pooka Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.3 16-Mar-2013  christos fix the build!
 1.2 13-Mar-2013  pooka Fix a few minor issues found by proofreading the diff one last time.
 1.1 13-Mar-2013  pooka Push the bits accessing the networking backend into hypercalls.
This allows a few highly desirable things to happen:

1) Linux support, which is included in this commit (thanks to wanq for
sending me the magic bits for accessing /dev/net/tun)
2) Reusing the kernel-side of the interface for devices such as
hardware packet processors which interact directly with user vm spaces
(not included in the commit).
 1.6.4.2 18-May-2014  rmind sync with head
 1.6.4.1 28-Aug-2013  rmind sync with head
 1.6.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.6.2.2 23-Jun-2013  tls resync from head
 1.6.2.1 20-May-2013  tls file rumpcomp_user.c was added on branch tls-maxphys on 2013-06-23 06:20:29 +0000
 1.7 13-Mar-2014  pooka Rename rumpcomp_user.c -> virtif_user.c
Convert to new-style RUMPCOMP_USER_SRCS in Makefile.
 1.6 03-Mar-2014  pooka Pull in the changes from the dpdk, netmap and snabb switch repos.
There are two major changes:

1) All thread context policy is pushed down to the hypercalls.
This is meant to help performance-mongering implementations be
able to control packet scheduling better (e.g. pin down packet
reception to certain physical cores).
2) Generalize linkstr, meaning that the interface can now take an
arbitrary string which is passed to the create() hypercall. This can
be used to map backend device characteristics to the rump kernel
interface instance.
 1.5 27-Oct-2013  pooka Give the hypercall interface a version number. This is for
implementations outside of the tree.
 1.4 04-Jul-2013  pooka Determine the interface name and the names of exported symbols based
on VIRTIF_BASE. This allows using various different packet-shoveling
backends in the same rump kernel.
 1.3 30-Apr-2013  pooka branches: 1.3.4; 1.3.6;
Make hypercall calling conventions consistent: iff a hypercall can fail,
it returns an int containing the error value.
 1.2 13-Mar-2013  pooka Fix a few minor issues found by proofreading the diff one last time.
 1.1 13-Mar-2013  pooka Push the bits accessing the networking backend into hypercalls.
This allows a few highly desirable things to happen:

1) Linux support, which is included in this commit (thanks to wanq for
sending me the magic bits for accessing /dev/net/tun)
2) Reusing the kernel-side of the interface for devices such as
hardware packet processors which interact directly with user vm spaces
(not included in the commit).
 1.3.6.2 18-May-2014  rmind sync with head
 1.3.6.1 28-Aug-2013  rmind sync with head
 1.3.4.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.4.2 23-Jun-2013  tls resync from head
 1.3.4.1 30-Apr-2013  tls file rumpcomp_user.h was added on branch tls-maxphys on 2013-06-23 06:20:29 +0000
 1.2 02-Dec-2014  pooka Remove shlib_version files and just use Makefile SHLIB_MAJOR/MINOR,
with the default provided by Makefile.rump (they're all 0.0 anyway)
 1.1 06-Oct-2008  pooka branches: 1.1.2; 1.1.4; 1.1.12; 1.1.18; 1.1.46; 1.1.66;
Implement a virtual userspace networking interface. This is required
for any sensible operation when running the entire TCP/IP stack in
userspace (as opposed to libsockin which uses host kernel networking
to provide PF_INET).

While this basically works (although it is quite barebones), it
depends on some bit of cleanup in librump and is not built by
default yet.
 1.1.66.1 06-Apr-2015  skrll Sync with HEAD
 1.1.46.1 03-Dec-2017  jdolecek update from HEAD
 1.1.18.2 04-May-2009  yamt sync with head.
 1.1.18.1 06-Oct-2008  yamt file shlib_version was added on branch yamt-nfs-mp on 2009-05-04 08:14:33 +0000
 1.1.12.2 17-Jan-2009  mjf Sync with HEAD.
 1.1.12.1 06-Oct-2008  mjf file shlib_version was added on branch mjf-devfs2 on 2009-01-17 13:29:39 +0000
 1.1.4.2 19-Oct-2008  haad Sync with HEAD.
 1.1.4.1 06-Oct-2008  haad file shlib_version was added on branch haad-dm on 2008-10-19 22:18:08 +0000
 1.1.2.2 10-Oct-2008  skrll Sync with HEAD.
 1.1.2.1 06-Oct-2008  skrll file shlib_version was added on branch wrstuden-revivesa on 2008-10-10 22:37:09 +0000
 1.2 13-Mar-2014  pooka No reason to attach if_virt as a RUMP_COMPONENT(), simply use MODULE().
 1.1 12-Mar-2014  pooka component.c -> virtif_component.c, just to decrease risk of conflicts.
No runtime change.
 1.6 26-Mar-2019  bad Protect __KERNEL_RCSID. It isn't available when compile rumpkernels under e.g. Linux.
 1.5 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.4 12-Dec-2018  alnsn Add missing RCSIDs.
 1.3 14-Mar-2014  pooka branches: 1.3.4; 1.3.6; 1.3.10; 1.3.34; 1.3.36;
Remember to bump revision for the "int my time VIF_DYING" change yesterday.
 1.2 13-Mar-2014  pooka allow VIF_DYING() implementation to protest
 1.1 13-Mar-2014  pooka Rename rumpcomp_user.c -> virtif_user.c
Convert to new-style RUMPCOMP_USER_SRCS in Makefile.
 1.3.36.1 10-Jun-2019  christos Sync with HEAD
 1.3.34.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.3.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.10.1 14-Mar-2014  tls file virtif_user.c was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.3.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.6.1 14-Mar-2014  yamt file virtif_user.c was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.3.4.2 18-May-2014  rmind sync with head
 1.3.4.1 14-Mar-2014  rmind file virtif_user.c was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.3 14-Mar-2014  pooka branches: 1.3.4; 1.3.6; 1.3.10;
Remember to bump revision for the "int my time VIF_DYING" change yesterday.
 1.2 13-Mar-2014  pooka allow VIF_DYING() implementation to protest
 1.1 13-Mar-2014  pooka Rename rumpcomp_user.c -> virtif_user.c
Convert to new-style RUMPCOMP_USER_SRCS in Makefile.
 1.3.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.10.1 14-Mar-2014  tls file virtif_user.h was added on branch tls-maxphys on 2014-08-20 00:04:43 +0000
 1.3.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.6.1 14-Mar-2014  yamt file virtif_user.h was added on branch yamt-pagecache on 2014-05-22 11:41:17 +0000
 1.3.4.2 18-May-2014  rmind sync with head
 1.3.4.1 14-Mar-2014  rmind file virtif_user.h was added on branch rmind-smpnet on 2014-05-18 17:46:20 +0000
 1.2 26-Nov-2016  njoly branches: 1.2.2; 1.2.4; 1.2.18;
Fix NetBSD keyword expansion.
 1.1 26-Nov-2016  ozaki-r Rumpify vlan(4)
 1.2.18.2 03-Dec-2017  jdolecek update from HEAD
 1.2.18.1 26-Nov-2016  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.2.4.2 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.2.4.1 26-Nov-2016  pgoyette file Makefile was added on branch pgoyette-localcount on 2017-01-07 08:56:53 +0000
 1.2.2.2 05-Dec-2016  skrll Sync with HEAD
 1.2.2.1 26-Nov-2016  skrll file Makefile was added on branch nick-nhusb on 2016-12-05 10:55:29 +0000
 1.2 11-Apr-2019  kamil Fix CVS Id usage
 1.1 26-Nov-2016  ozaki-r branches: 1.1.2; 1.1.4; 1.1.18; 1.1.22;
Rumpify vlan(4)
 1.1.22.1 10-Jun-2019  christos Sync with HEAD
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 26-Nov-2016  jdolecek file VLAN.ioconf was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.4.2 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.1.4.1 26-Nov-2016  pgoyette file VLAN.ioconf was added on branch pgoyette-localcount on 2017-01-07 08:56:53 +0000
 1.1.2.2 05-Dec-2016  skrll Sync with HEAD
 1.1.2.1 26-Nov-2016  skrll file VLAN.ioconf was added on branch nick-nhusb on 2016-12-05 10:55:29 +0000
 1.1 26-Nov-2016  ozaki-r branches: 1.1.2; 1.1.4; 1.1.18;
Rumpify vlan(4)
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 26-Nov-2016  jdolecek file vlan_component.c was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1.4.2 07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.1.4.1 26-Nov-2016  pgoyette file vlan_component.c was added on branch pgoyette-localcount on 2017-01-07 08:56:53 +0000
 1.1.2.2 05-Dec-2016  skrll Sync with HEAD
 1.1.2.1 26-Nov-2016  skrll file vlan_component.c was added on branch nick-nhusb on 2016-12-05 10:55:29 +0000
 1.1 26-Aug-2020  riastradh Clarify wg(4)'s relation to WireGuard, pending further discussion.

Still planning to replace wgconfig(8) and wg-keygen(8) by one wg(8)
tool compatible with wireguard-tools; update wg(4) for the minor
changes from the 2018-06-30 spec to the 2020-06-01 spec; &c. This just
clarifies the current state of affairs as it exists in the development
tree for now.

Mark the man page EXPERIMENTAL for extra clarity.
 1.1 26-Aug-2020  riastradh Clarify wg(4)'s relation to WireGuard, pending further discussion.

Still planning to replace wgconfig(8) and wg-keygen(8) by one wg(8)
tool compatible with wireguard-tools; update wg(4) for the minor
changes from the 2018-06-30 spec to the 2020-06-01 spec; &c. This just
clarifies the current state of affairs as it exists in the development
tree for now.

Mark the man page EXPERIMENTAL for extra clarity.
 1.1 26-Aug-2020  riastradh Clarify wg(4)'s relation to WireGuard, pending further discussion.

Still planning to replace wgconfig(8) and wg-keygen(8) by one wg(8)
tool compatible with wireguard-tools; update wg(4) for the minor
changes from the 2018-06-30 spec to the 2020-06-01 spec; &c. This just
clarifies the current state of affairs as it exists in the development
tree for now.

Mark the man page EXPERIMENTAL for extra clarity.
 1.3 27-Aug-2020  riastradh Fix order of cleanup actions in rumpuser_wg_create error branch.
 1.2 27-Aug-2020  riastradh Paranoia: use strlcpy rather than strcpy here and detect truncation.

Not an issue for the one caller in tree, but let's not leave rakes to
step on.
 1.1 26-Aug-2020  riastradh Clarify wg(4)'s relation to WireGuard, pending further discussion.

Still planning to replace wgconfig(8) and wg-keygen(8) by one wg(8)
tool compatible with wireguard-tools; update wg(4) for the minor
changes from the 2018-06-30 spec to the 2020-06-01 spec; &c. This just
clarifies the current state of affairs as it exists in the development
tree for now.

Mark the man page EXPERIMENTAL for extra clarity.
 1.1 26-Aug-2020  riastradh Clarify wg(4)'s relation to WireGuard, pending further discussion.

Still planning to replace wgconfig(8) and wg-keygen(8) by one wg(8)
tool compatible with wireguard-tools; update wg(4) for the minor
changes from the 2018-06-30 spec to the 2020-06-01 spec; &c. This just
clarifies the current state of affairs as it exists in the development
tree for now.

Mark the man page EXPERIMENTAL for extra clarity.
 1.1 09-Nov-2014  pooka branches: 1.1.18;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 09-Nov-2014  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:19 +0000
 1.1 09-Nov-2014  pooka branches: 1.1.18;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 09-Nov-2014  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:20 +0000
 1.1 09-Nov-2014  pooka branches: 1.1.18;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 09-Nov-2014  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:20 +0000
 1.4 14-Jul-2023  lukem fix rump URLs in man pages

Link to https://github.com/rumpkernel/wiki/wiki instead of
a site now taken over by an SEO squatter.

Per discussion on github.com/rumpkernel issues
with pooka.

PR misc/57501
 1.3 08-Mar-2019  wiz branches: 1.3.30;
Remove Pp without effect.
 1.2 08-Mar-2019  msaitoh s/ the the / the /
 1.1 09-Nov-2014  pooka branches: 1.1.18; 1.1.22;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.1.22.1 10-Jun-2019  christos Sync with HEAD
 1.1.18.2 03-Dec-2017  jdolecek update from HEAD
 1.1.18.1 09-Nov-2014  jdolecek file rumpuser.3 was added on branch tls-maxphys on 2017-12-03 11:39:20 +0000
 1.3.30.1 20-Sep-2024  martin Pull up following revision(s) (requested by rin in ticket #889):

lib/librumpuser/configure.ac: revision 1.6
lib/librumpuser/rumpuser_port.h: revision 1.53
lib/libpthread/Makefile: revision 1.97
sys/rump/share/man/man3/rumpuser.3: revision 1.4
sys/rump/share/man/man7/rumpkernel.7: revision 1.4
sys/rump/share/man/man7/rumpkernel.7: revision 1.5

fix rump URLs in man pages

Link to https://github.com/rumpkernel/wiki/wiki instead of
a site now taken over by an SEO squatter.
Per discussion on github.com/rumpkernel issues
with pooka.
PR misc/57501

fix rump URLs
Link to https://github.com/rumpkernel/ instead of
a site now taken over by an SEO squatter.
Per discussion on github.com/rumpkernel issues with pooka.
PR misc/57501

use rumpkernel.github.io as the entry point
 1.2 02-Dec-2014  pooka branches: 1.2.16;
add a high-level rumpkernel.7 manpage
 1.1 09-Nov-2014  pooka branches: 1.1.2;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.1.2.1 06-Apr-2015  skrll Sync with HEAD
 1.2.16.2 03-Dec-2017  jdolecek update from HEAD
 1.2.16.1 02-Dec-2014  jdolecek file Makefile was added on branch tls-maxphys on 2017-12-03 11:39:20 +0000
 1.2 04-Jun-2017  abhinav branches: 1.2.4;
Fix typo: s/analoguous/analogous/
 1.1 09-Nov-2014  pooka branches: 1.1.2;
Move rump kernel man pages from various sources to sys/rump

namely:
* src/lib is used only when building for POSIX'y platforms, but
the man pages have their use for all platforms
* rumpuser.3 is a function of the rump kernel, not one of the of
the POSIX'y implementation hosted in src/lib/librumpuser

no functional change
 1.1.2.1 28-Aug-2017  skrll Sync with HEAD
 1.2.4.2 03-Dec-2017  jdolecek update from HEAD
 1.2.4.1 04-Jun-2017  jdolecek file rump_sp.7 was added on branch tls-maxphys on 2017-12-03 11:39:20 +0000
 1.5 15-Jul-2023  lukem use rumpkernel.github.io as the entry point
 1.4 14-Jul-2023  lukem fix rump URLs in man pages

Link to https://github.com/rumpkernel/wiki/wiki instead of
a site now taken over by an SEO squatter.

Per discussion on github.com/rumpkernel issues
with pooka.

PR misc/57501
 1.3 16-Dec-2014  pooka branches: 1.3.2; 1.3.18; 1.3.52;
workaround bin/49481
 1.2 02-Dec-2014  wiz Use Nx.
 1.1 02-Dec-2014  pooka add a high-level rumpkernel.7 manpage
 1.3.52.1 20-Sep-2024  martin Pull up following revision(s) (requested by rin in ticket #889):

lib/librumpuser/configure.ac: revision 1.6
lib/librumpuser/rumpuser_port.h: revision 1.53
lib/libpthread/Makefile: revision 1.97
sys/rump/share/man/man3/rumpuser.3: revision 1.4
sys/rump/share/man/man7/rumpkernel.7: revision 1.4
sys/rump/share/man/man7/rumpkernel.7: revision 1.5

fix rump URLs in man pages

Link to https://github.com/rumpkernel/wiki/wiki instead of
a site now taken over by an SEO squatter.
Per discussion on github.com/rumpkernel issues
with pooka.
PR misc/57501

fix rump URLs
Link to https://github.com/rumpkernel/ instead of
a site now taken over by an SEO squatter.
Per discussion on github.com/rumpkernel issues with pooka.
PR misc/57501

use rumpkernel.github.io as the entry point
 1.3.18.2 03-Dec-2017  jdolecek update from HEAD
 1.3.18.1 16-Dec-2014  jdolecek file rumpkernel.7 was added on branch tls-maxphys on 2017-12-03 11:39:20 +0000
 1.3.2.2 06-Apr-2015  skrll Sync with HEAD
 1.3.2.1 16-Dec-2014  skrll file rumpkernel.7 was added on branch nick-nhusb on 2015-04-06 15:18:32 +0000

RSS XML Feed