Re: Inserting code from userspace to kernel space

From: Helge Hafting
Date: Thu May 22 2008 - 10:31:57 EST


Bosko Radivojevic wrote:
Hi!

I'm looking for a way to insert code from user space to the kernel
space, but without using kernel module. Actually, we are working on a
system that has to allow end user to change part of code (one or two
functions) that is executed from the kernel space.

For now we have two different kernel modules, one exporting a function
which another module uses. Process of compiling kernel module is quite
ineligible for standard end user (along with the requirement to
support multi platform cross compiling) compared to just cross
compiling a simple code that doesn't use any libraries than libc.

I know this sounds quite weird, but maybe there is a project that can help us ;)
Consider telling exactly what you want to do, what is this for?
Perhaps there is a better/more standard way of doing it.

Looks like your end users are capable of compiling ordinary code
but not kernel modules? If this is so, consider just automating
the kernel module part for them. I.e. provide a module that call
a function, they can then make that function and you can make a script
that link their function with your kernel module. Then they won't need
to know much about kernel modules.

But the kernel module can't use libc (and what would you want to
use libc for anyway? libc mostly helps userspace communicate
with the kernel, no _need_ for that when your code is in the
kernel already.)

Or do you merely need your kernel code to run a user supplied program
now and then? The kernel code can't call userspace code directly,
but you could make a device driver for this purpose.

The userspace code can read from the device, and block. When the kernel
need to run userspace code, it unblocks the userspace program. If you
need to transfer data to userspace, simply let the userpace program
read the data from your device. and write stuff back, if needed.




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/