您正在准确描述viewos
虚拟机
http://wiki.virtualsquare.org/wiki/index.php/Main_Page
http://wiki.virtualsquare.org/wiki/index.php/UMview#Modules
这个虚拟机可以劫持每个指向你的内核的系统调用到你的用户空间模块(它被认为使 linux 不那么单一)
$umview xterm
你用命令启动一个 umview 实例
所以在新生成的 xterm 中运行的每个程序都会被跟踪
现在你可以简单地做(在 umview 实例中)
$um_add_service umdev
$mount -t umdevJoystick none <your file, for example /dev/virtualJoystick>
所以你可以编写一个模块来拦截每个读/写/...到你的/dev/virtualJoystick
文件并做你想做的事
(模块语法很简单)
static int joystick_read(char type, dev_t device, struct dev_info *di){
/*my operation...probably a XTestEvent() or something like that*/
}
static int joystick_write(char type, dev_t device, struct dev_info *di){
/*my operation...probably a XTestEvent() or something like that*/
}
/*...*/
struct umdev_operations umdev_ops={
/*hijacking table*/
.read=joystick_read,
.write=joystick_write,
};
(umdev_testmodules
umview 源代码中的目录作为一个小教程非常有用!;))