向 linux 内核 3.8.8 添加系统调用

Posted

技术标签:

【中文标题】向 linux 内核 3.8.8 添加系统调用【英文标题】:Adding system call to linux kernel 3.8.8 【发布时间】:2013-04-25 02:07:44 【问题描述】:

我正在尝试在 linux 内核版本 3.8.8 中编写自己的系统调用。我在互联网上搜索,有步骤如何做到这一点。特别是这个链接http://franksthinktank.com/howto/addsyscall/ 很好。然而。即使我遵循了所有步骤,它也不起作用。我收到一条错误消息,说没有规则来制作内核/内置所需的目标。

然后我尝试将系统调用移动到内核目录中的一个 .c 文件中,它也不起作用。我正在尝试按照上面链接中的示例作为练习。实际上我想要做的是获取系统的时间,所以我需要访问系统的 xtime 变量。所以,我必须在 timekeeping.c 文件中实现我的系统调用。

我想知道我在内核版本 3.8.8 中究竟更改了哪些文件以实现系统调用?

谢谢。

【问题讨论】:

您找到解决问题的方法了吗?如果有,能否分享给其他人(包括我)学习? 【参考方案1】:

我的内核版本:3.8.1

发行版:Ubuntu 12.04

    做一些准备(下载源,和一些必要的包) 修改“linux-3.8.1/kernel”中的“sys.c”实现系统调用功能 修改“linux-3.8.1/arch/x86/syscalls/”中的“syscall_32.tbl”添加索书号 使 mrproper 制作菜单配置 make -j4 > /dev/null 制作modules_install 进行安装 更新-grub 重启

您可以保持“unistd.h”不变

【讨论】:

以上是关于向 linux 内核 3.8.8 添加系统调用的主要内容,如果未能解决你的问题,请参考以下文章

通过内核编译法向Linux内核添加系统调用

Linux 系统调用

Linux系统调用跟我学(1)

Linux内核中添加系统调用接口简单示例

Linux内核——通过模块动态添加系统调用

为Linux-3.10.1内核添加系统调用