【发布时间】:2016-06-26 12:10:16
【问题描述】:
很抱歉,如果以前有人问过这个问题,因为它看起来很基本,但我在这个网站上的任何地方都找不到。 我正在使用 linux (debian) 进行 OS 编程,我正在尝试将一个指针从我的用户空间指向我的内核空间函数。
即在我做的用户空间中
...
long res;
int x = -1;
int *p1 = &x; // also tried doing a malloc, didn't change anything
res = kernel_function(p1);
...
在内核空间文件 kernel_function.c 中我这样做了
asmlinkage long kernel_function( int __user *p){
printk("%p \n", (void*) p);
return 0;
}
我也做了通常的其他步骤,比如将函数的原型添加到 syscalls.h,将文件名添加到 syscall_32.tbl 等等。但是当我运行我的用户空间函数时,唯一会打印到内核日志的是(NULL)。所以函数确实被调用了,但是指针丢失了,知道为什么会这样吗?
【问题讨论】:
标签: c linux linux-kernel