Welcome 微信登录

首页 / 操作系统 / Linux / Linux内核中添加新的系统调用

我这里用到的Linux内核版本是linux2.6.33.3其实添加系统调用是一件很简单的事情,因为你只是定义一些处理函数,添加符号表,其他的调度都是由内核来帮忙做的。1.下载内核 http://www.kernel.org/pub/Linux/kernel2.配置
tar -xzvf Linux-2.6.33.3.tar.gz -C /usr/src
cd /usr/src
ln -s Linux-2.6.33.3 Linux
cd Linuxmake mrproper # Make sure you have no stale .o filesmake menuconfig #生成一个.config文件
具体,根据自己的系统配置进行设置。3.开始艰难的编译过程make
make module_install
make installupdate-grub2 or update-grub4.我喜欢先编译一便内核,确保原始的代码能够顺利编译运行成功,然后再进行修改。不然,在一个不能跑的内核上添加系统调用,很费脑筋。5.主要需要修改的文件及其位置
/usr/src/linux/arch/x86/kernel/syscall_table_32.S
/usr/src/linux/arch/x86/include/asm/unistd_32.h
/usr/src/linux/arch/x86/kernel/sys_i386_32.c6.实例
1)把sys_mySyscall添加到系统调用表
vim /usr/src/linux/arch/x86/kernel/syscall_table_32.S
................
................
.long sys_recvmmsg
.long sys_mySyscall2)添加系统调用号到unistd.h
vim /usr/src/linux/arch/x86/include/asm/unistd_32.h
...............
...............
#define __NR_recvmmsg       337
#define __NR_mySyscall   338记住,不要忘记将下面的
#ifdef __KERNEL__
#define NR_syscalls 338
的值加一。3)添加系统调用函数体
vim /usr/src/linux/arch/x86/kernel/sys_i386_32.cextern struct timespec xtime;asmlinkage long sys_mySyscall( struct timeval * tv, struct timespec * ts)
{
struct timeval ktv;
do_gettimeofday(&ktv);
copy_to_user(tv, &ktv, sizeof(ktv));copy_to_user(ts, &xtime, sizeof(xtime));return jiffies;
}4)重新编译内核,启动新内核
方法同上
5)在用户空间编写测试程序
#include <stdio.h>
#include <errno.h>
#include <syscall.h>
#include <sys/time.h>
#include <linux/unistd.h>
#define __NR_mySyscall 338int main()
{
struct timeval v_time;
struct timespec s_time;
long jiffies;jiffies = syscall(__NR_mySyscall, &v_time, &s_time);printf("timeval tv_sec = %ld, tv_usec = %ld ", v_time.tv_sec, v_time.tv_usec);printf("timespec tv_sec = %ld, tv_nsec = %ld ", s_time.tv_sec, s_time.tv_nsec);printf("jiffies = %ld ", jiffies);
return 0;
}Linux per_cpu机制的详解编译谷歌Chrome浏览器相关资讯      Linux内核 
  • IT人员必须了解的六项Linux内核变  (今 12:05)
  • Linux 内核更新:3.10.98、3.14.62  (02月26日)
  • Linux:让手机运行主线内核  (11/26/2015 22:16:17)
  • Linux内核自防护项目  (05月24日)
  • Linux 内核架构的理解  (12/09/2015 09:01:01)
  • Linux内核被指缺乏安全性  (11/07/2015 08:28:47)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图