yil*_*lah 7 system-calls linux-kernel
我正在尝试将自定义系统调用添加到linux内核中.这是一个简单的代码:
#include <linux/mysyscall.h>
#include <linux/kernel.h>
#include <asm/uaccess.h>
#include <asm/system.h>
asmlinkage int sys_mysyscall(int *data){
int a = 3;
cli();
copy_to_user(data, &a, 1);
sti();
printk(KERN_EMERG "Called with %d\n", a);
return a;
}
Run Code Online (Sandbox Code Playgroud)
我可以编译一个添加了mysyscall的内核,当我尝试使用以下用户程序访问它时:
#include <linux/mysyscall.h>
int main(void){
int *data;
int r;
int a = 0;
data = &a;
r = mysyscall(data);
printf("r is %d and data is %d", r, *data);
}
Run Code Online (Sandbox Code Playgroud)
*数据不等于3,等于0.
我应该如何使用copy_to_user来修复它?