我已经向Linux内核3.16添加了一个hello world系统调用,然后我编译并运行它。我通过syscall
函数调用了系统调用,但它没有打印任何内容,syscall
函数的输出不是-1。
这是我的系统调用代码:
#include <linux/kernel.h>
asmlinkage long sys_hello(void){
printk("hello world\n");
return 0;
}
这是我的程序代码来调用我的系统调用:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#include <string.h>
#include <errno.h>
int main(void){
printf("function\n");
if(syscall(317)==-1){
printf("no\n");
}
else{
printf("yes\n");
}
return 0;
}
c程序的输出是:
function
yes
如何才能正确地将系统调用添加到内核?