NAME
rump
- Runnable Userspace Meta Program kernel
LIBRARY
rump Library (librump, -lrump)
SYNOPSIS
DESCRIPTION
rump
emulates portions of the kernel in order to be able to run kernel code
from a userspace application.
For most parts kernel code is directly used, but in some cases such as
with vm and device drivers a reimplementation suitable for userspace
is provided.
All of the routines in
rump
have been compiled in the kernel namespace with
-D_KERNEL
.
Although
rump
includes many kernel routines directly, userspace applications should
not attempt to include
NetBSD
system headers and call kernel functions directly.
Instead,
rump
routines should be called.
In case applications attempt to include
headers from the
NetBSD
tree, collisions will result on other platforms.
Three classes of routines are provided by
:
- Native
-
These routines have been handwritten for
rump
operation.
Some are useful purely for
,
while others are merely interfaces to existing kernel routines.
An example of the former is
rump_fakeblk_register(
),
while an example of the latter class is
rump_vfs_unmount(
).
The routines available in this class can be found from the header
- System Calls
-
It is possible to execute certain system calls from
.
However, contrary to real system calls, the kernel is never entered,
but the system call backend code compiled into
rump
is merely called as a direct function call.
The autogenerated list of system calls currently available in
rump
can be found from the header
- Vnode Interface
-
To sort out namespace collisions for non-NetBSD platforms, the whole
vnode interface set is provided under a special namespace.
The operation is the same as in the kernel, but the interface names
begin with the prefix RUMP_VOP.
This class of routines is available from the autogenerated header
Before use
rump
must be initialized by calling
rump_init(
).
SEE ALSO
p2k(3),
rumpuser(3),
ukfs(3)
HISTORY
rump
first appeared in
NetBSD5.0.
AUTHORS
Antti Kantee <pooka@iki.fi>
NOTE
rump
is highly experimental and may change in header location, library
name, API and/or ABI without warning.