如何才能将系统调用添加到内核中?

时间:2016-03-04 17:17:27

标签: c linux

我已经向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

如何才能正确地将系统调用添加到内核?

1 个答案:

答案 0 :(得分:2)

printk不一定会打印到您当前的tty;要查看您的消息,请在shell中使用dmesg命令。如果dmesg

上没有显示,请参阅this one