Skip to content

DavidButterfield/usermode_compat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 

Repository files navigation

usermode_compat

Usermode Compatibility for Linux Kernel Code (UMC)
A shim for running some Linux kernel code in usermode
David A. Butterfield

The initial implementation of UMC emulates a sufficient subset of Linux kernel internal functions to support an SCST-based iSCSI storage server (based on ~80,000 lines of SCST kernel sources) running entirely in usermode on an unmodified kernel.

UMC emulates the necessary functionality using calls to the sys_service API implemented by the Multithreaded Event Engine (MTE) in libmte, and to functions in libpthread, libaio, libdl, and libc.

Most of the UMC code resides in usermode_lib.h (~2500 lines of code), supported by another ~300 LOC in usermode_lib.c. Another ~700 LOC implements a translation between the kernel's proc_dir_entry calls and fuse(8) calls, to support the kernel module's interface to system applications.

Although there are presently a small number of places in the code using Linux-specific system call options, these could easily be abstracted out to allow the possibility of running SCST also on non-Linux systems having gcc and the necessary libraries.

UMC depends on Multithreaded Engine (libmte) — a high-performance multi-threaded usermode event dispatching engine.

UMC Client

iSCSI-SCST Storage Server Usermode Adaptation — a port of the SCST iSCSI storage server to run entirely in usermode on an unmodified Linux kernel.   [Paper describing the project in detail]

Diagrams showing the relationship between UMC, MTE, and SCST


SCST usermode service map


SCST usermode header and library inclusions


About

Compatibility shim for running some Linux kernel code in usermode

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published