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.