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)
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.
- 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.
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.
- 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
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.