A shell for running kernel-mode c code
realksh.c
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 ##
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:
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);
Junichi Uekawa ([email protected])
Upstream page is available at http://www.netfort.gr.jp/~dancer/software/