---
name: "realksh.c"
section: "8"
platform: "linux"
package: "binfmtc"
version: "0.17-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/realksh.c"
---

# realksh.c(8)

A shell for running Kernel-mode C code

## NAME

realksh.c - A shell for running Kernel-mode C code

## SYNOPSIS

**realksh.c**

## DESCRIPTION

**realksh.c** is an interactive shell that runs C source code. A line of input is handled as a line in **module\_init()** function, and the resulting C code is compiled to build a kernel module. The module is then inserted into the kernel, and removed from the kernel. kernel message output prepended with  **KMSG:**  is copied to standard out for convenience, so that functions like  **printk** can be used for easy debugging.

If a line starting with **#** such as  **#include \<stdio.h\>** is entered, it is added to every code after that at the start of sourcecode.

The list of such lines can be seen with **##**

## EXAMPLES

The following is an example session

```
$ sudo ./realksh.c
REAL ksh: printk ("hello\n");
  Building modules, stage 2.
KMSG: <4>hello
REAL ksh: printk ("%x\n", mfmsr());
  Building modules, stage 2.
KMSG: <4>9032
REAL ksh: printk ("%x\n", mfspr(SPRN_MMCR0));
  Building modules, stage 2.
KMSG: <4>0
REAL ksh:
```

## INTERNALS

The following is how the C code looks like.

```
#include <linux/module.h>
#include <linux/init.h>
MODULE_AUTHOR("dancerj");
MODULE_DESCRIPTION("....");
MODULE_LICENSE("GPL");
static int __init realkshmod2_init(void)
{
input-line
return 0;
}
static void __exit realkshmod2_cleanup(void)
{
}
module_init(realkshmod2_init);
module_exit(realkshmod2_cleanup);
```

## AUTHOR

Junichi Uekawa (dancer@debian.org)

Upstream page is available at  **http://www.netfort.gr.jp/~dancer/software/**

## SEE ALSO

[**binfmtc-interpreter**(1)](/binfmtc-interpreter/1.md), [**realcsh.c**(1)](/realcsh.c/1.md), [**realcxxsh.cc**(1)](/realcxxsh.cc/1.md)
