A lightweight Linux-kernel mediated message system

Two goldfish talking

Who should use KBUS?

Anyone who wants a messaging system that:

  • Is simple to understand
  • Is simple to use
  • Has a small codebase, written in C
  • Provides predictable message delivery
  • Give deterministic message ordering
  • Guarantees a reply to a request
  • Reliable and well-documented

How do I use KBUS?

Once the kernel module is installed, KBUS can be used via:

  • Traditional low level file access: open, read, write, ioctl
  • C library
  • C++ library
  • Java module
  • Python API (which is also used for unit testing)

Who should not use KBUS?

KBUS uses a Linux kernel module to perform its message handling, and users currently need to build that kernel module and install it on the target system. So if you cannot do that, then for the moment, KBUS is not for you.

However, we are submitting KBUS to the Linux kernel, and aim to provide pre-built modules for Debian and Redhat in the future, so please check back here every so often.

Where is KBUS likely to be useful?

KBUS was initially developed for use in the embedded Linux environment. As such, obvious uses range from communication between components of a Set Top Box (i.e., between the user GUI, the incoming video transcoder, and the video recorder), to robotics (where communication is needed from cameras detecting obstacles to the motors driving wheels).


The main KBUS documentation can be read here, at Read the Docs. An introductory paper prepared for EuroPython2010 is here in HTML, or here as PDF. Other presentations and talks can be found in the presentations repository.

The source code for the main KBUS documentation is provided in the default repository, as described below.

Getting KBUS

The KBUS sources live at Google Code. The code is available as a set of Mercurial repositories.

Getting Started provides a quick guide on how to acquire and build KBUS.

The default repository provides all of the current KBUS source code, including the kernel module (as a sub-repository), and also the reStructuredText sources for the documentation. This is what most people need to download.

The kernel repository just contains the kernel module. Download this if you're going to be accessing KBUS directly via read, write, etc., and don't want the libraries or documentation sources.

The html repository contains the HTML version of the main documentation, and pulls in the default repository as a subrepo (since that is what the HTML is generated from).
This repository is probably going to be phased out now that the Read the Docs version of the documentation is available.

The presentations repository contains talks and papers. These have been separated out because they are quite large.


2010-08-31: KBUS HTML documentation documentation now on Read the Docs.

2010-03-18: The KBUS kernel module was submitted to the Linux Kernel mailing list. You can see the start of the thread here). The github repository used in preparing these patches is here. This is a slghtly different version of the kernel module - changes will be merged back into the Google Code repository over time.

2010-01-26: The KBUS repository has been organised into four repositories:

KBUS development largely performed at Kynesim, to whom thanks.