本文基于Linux 2.4.26内核,GCC 3.2.2添加系统调用mycall(int num)
增加系统调用只修改/usr/src/linux-2.4.29/include/asm-i386/unistd.h和arch/i386/kernel/entry.S,系统调用函数一般在kernel/sys.c中,这里把增加的系统调用代码也加入这个文件中。
1.修改kernel/sys.c文件,加入自己的系统调用代码,同参考文献(见文后地址)中,
asmlinkage int sys_mycalll(int num)
{
printk("This is added by yan/n");
return num;
}
往内核输出一句话,然后返回参数值。asmlinkage表示通过堆栈递参数。
2.然后把sys_mycall(int )的入口地址添加到sys_call_table表中。该表依次存储所有系统调用的入口地址。
修改前为:
.long SYMBOL_NAME(sys_ni_syscall)/* sys_set_tid_address这是第258个系统调用* /
.rept NR_syscalls-(.-sys_call_table)/4
.long SYMBOL_NAME(sys_ni_syscall)
修改后:
.long SYMBOL_NAME(sys_ni_syscall)/* sys_set_tid_address */
.long SYMBOL_NAME(sys_mycall)/*这是增加的第259个系统调用*/
.rept NR_syscalls-(.-sys_call_table)/4-1 /*这里重复次数减少1*/
.long SYMBOL_NAME(sys_ni_syscall)
3.把增加的sys_call_table表项所对应的向量,在include/asm-i386/unistd.h中进行必要申明,以供用户进程和其他系统进程查询或调用:
#define __NR_exit_group252
#define __NR_mycall259/*这是增加的第259个系统调用*/
然后编译内核make bzImage,并用生成的新内核启动系统。
覆盖原有的内核 cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.26
cp System.map /boot/System.map-2.4.26
4.测试程序(test.c)如下:
然后执行命令
dmesg | tail
看到输出的内容
This is added by yan
分享到:
相关推荐
详细讲解如何在linux中添加系统调用,已经实践过,挺好用的
在Linux环境下添加新的系统调用
linux下添加系统调用的实验报告 具有详细的步骤 跟着步骤走基本就可以了
本代码已经通过实际...在Linux内核中增加一个系统调用,并编写对应的linux应用程序。利用该系统调用能够遍历系统当前所有进程的任务描述符,并按进程父子关系将这些描述符所对应的进程id(PID)组织成树形结构显示。
以linux2.4内核为基础添加用户自己的系统调用。该文档详细介绍了添加系统调用的过程。
linux 通过模块实现自己的系统调用,文件中有两个文件夹,分别分用户测试程序,和要加载的模块
Linux2.4添加系统调用 内有详细步骤 经过尝试是正确的
题目内容:添加一个系统调用,实现对指定进程的nice值得修改或读取功能,并返回进程最新的nice值及优先级prio。 考察的知识点:在系统中根据需要添加新的系统调用。 问题的关键点:添加的系统调用实现对指定进程的...
linux内核添加系统调用的方法, 含详细过程 操作系统课程设计
介绍了通过添加新文件、或修改源文件的方法添加一个新的系统调用。 本文有添加及编译的详细步骤截图与分析,可作为操作系统课程设计。
自己动手添加linux系统调用 需要自己下载 linux-3.2.tar.bz2文件,然后按文档运行。
在Linux中添加新的系统调用,涉及到Linux内核,以及添加系统调用后的重新编译内核,最后对新的系统调用的测试,本人课程设计亲自实现了!
Linux® 系统调用 —— 我们每天都在使用它们。不过您清楚系统调用是如何在用户...本文将探究 Linux 系统调用接口(SCI),学习如何添加新的系统调用(以及实现这种功能的其他方法),并介绍与 SCI 有关的一些工具。
为了在内核态下运行,本实验针对Linux的内核进行修改,增加自定义系统调用函数实现用户态程序对任意进程的nice值进行修改或者读取来进行测试。详细介绍参考:...
Linux系统调用的编程技术,添加一个自定义系统调用
讲述如何为linux内核添加新的系统调用 内核版本是linux3.4.4 平台是以arm11为核心的S3C6410
在Linux系统中如何添加系统调用.pdf
实验2 Linux内核编译及系统调用添加.doc
系统调用在内核中都是必不可少的一部分,ARM 结构对系统调用的支持相比其他 架构有很多改进,其化繁为简,为开发者提供了一个便捷的方法添加一个新的系统 调用。这里涉及 ARM 架构的系统调用表 syscall.tbl, 以及 ...