我们已经看到了一个系统调用相关的文件,那么让我们添加一个自己的系统调用。 1) 在syscalls.h中定义系统调用的原型 asmlinkage long sys_mycall (unsigned long myid); 2) 在sys_call_table末尾添加新的系统调用入口 PTR sys_mycall 3) 在unistd.h中添加新系统调用的声明 #define __NR_mycall 245 __SYSCALL(__NR_mycall, sys_mycall) 3) 定义具体实现, mycall.c: SYSCALL_DEFINE1(mycall, unsigned long, myid) { printk(KERN_INFO "fuck id %d\n", myid); } 4) 将其纳入内核编译中,比如放在fs子系统下 Makefile: obj-$(CONFIG_MY_CALL) := mycall.o 5) 添加配置选项 Kconfig: config MY_CALL bool default y help just for fun!! 6)编译 make menuconfig && make 注意:一般不建议添加系统调用,这里我们假设了CN56XX的MIPS64平台,只修改了相关文件,但是Linux支持多平台,相应的每个平台的文件都要修改保证系统调用的一致性,并且一旦系统调用号和原型确定将很难修改。