添加系统调用
• 四步:
1.编写系统调用源代码.
2.连接新的系统调用:
1)修改函数入口地址表unistd.h
2)修改系统调用表entry.S
3.重建新的linux内核.
4.用新的内核启动系统.
第一步:编写系统调用源代码
• 将源代码添加到的路径:
• /usr/src/linux/kernel/sys.c 中
• 函数名必须以sys_开头:参考文件中的别的系统调用函数就可以了(比如:
• Asmlinkage int sys_mycall(intnumber)
• { return number;
• }
第二步:修改函数入口地址表unistd.h
• 路径:
• /usr/src/linux/include/asm-i386/unistd.h
• 宏定义中增加一行:
• 为本系统调用设置一个系统调用号
• 仿照文件中别的宏定义,比如:
• #define __NR_mycall 259
第三步:修改系统调用表
• 路径:
• /usr/src/linux/arch/i386/kernel/entry.S
• 在与系统调用号相同的位置增加一行,
• 仿照文件中别的定义,比如:
• .long SYMBOL_NAME(sys_mycall)
第四步:重建新的linux内核
• 路径:
• /usr/src/linux-2.4
• #make xconfig 进行内核配置
• #make dep 检测关联性
• #make clean
• #make bzImage生成内核映像文件
第五步:用新的内核启动系统
• 配置启动文件
• 修改启动文件
• 路径:
• /boot/grub/grub.conf
• 重启:
写一个应用程序进行系统调用。
系统调用添加完成