修改unistd_64.h

打开 /usr/src/linux-5.6.2/arch/x86/include/generated/uapi/asm/unistd_64.h

在适当位置添加 #define __NR_orange_test 339

修改syscall_64.tbl

打开 /usr/src/linux-5.6.2/arch/x86/entry/syscalls/syscall_64.tbl这个文件

在适当位置添加这一行

339 common orange_test __x64_sys_orange_test

修改sys.c

打开 /usr/src/linux-5.6.2/kernel/sys.c

在适当位置添加

SYSCALL_DEFINE1(orange_test,int,num)
{
    ptintk("your num is %d\n",num);
    printk("this is my first system_call\n");
    return 0;
}

编译源码

打开源码文件夹,中断中输入 sudo make bzImage

安装

编译完成后进行安装

输入 sudo make install

之后运行 sudo update-grub2

调用

打开codeblocks,输入

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <syscall.h>
#define __NR_orange_test 339
int main()
{
    syscall(__NR_orange_test,1);
    return 0;
}

编译并运行

再打开终端,输入 dmesg

Last modification:July 12th, 2020 at 01:04 am