2.6内核

1>改动linux-source-2.6.31/kernel/sys.c文件,在文件末尾加入系统响应函数。函数实现例如以下:
asmlinkage int sys_mycall(int number)

 
{

   
printk("这是我加入的第一个系统调用");

   
return number;

 }

2>在linux-source-2.6.31/arch/x86/kernel/syscall_table_32.S 中加入:.long sys_mycall
如:
.long sys_mycall
/* 341 */

3> 在linux-2.6.31/arch/x86/include/asm/unistd_32.h中加入
如:
#define __NR_mycall 序号(比如341),加入系统调用的入口參数(注意:当中会顺序定义入口參数的序号。加入的序号是在原有最大值的基础上+1)

4>又一次配置编译内核就可以

最新3.X内核

1>在linux-3.8.4/kernel/sys.c 文件末尾加入新的系统调用函数
如:
asmlinkage int sys_mycall(int number)
 
{

    
printk("这是我加入的第一个系统调用");

    
return number;

 }
2>在arch/x86/syscall_32.tbl下找到unused 223号调用然后替换
如:
223
i386 mycall
sys_mycall

3>又一次编译就可以

还存在还有一种方法,由于64位操作系统是兼容32位的,以下使用64位的情况

1>同上面的第一步

2>在arch/x86/syscalls/syscall_64.tbl下找到313号系统调用。然后在其以下加上314号自己的中断
如:
314
common mycall
sys_mycall
3>又一次编译就可以

转自www.360doc.com/content/13/0502/16/12139495_282464589.html

向linux内核加入系统调用新老内核比較的更多相关文章

  1. (转)linux下的系统调用函数到内核函数的追踪

    转载网址:http://blog.csdn.net/maochengtao/article/details/23598433 使用的 glibc : glibc-2.17使用的 linux kerne ...

  2. linux下的系统调用函数到内核函数的追踪

    http://blog.csdn.net/maochengtao/article/details/23598433

  3. linux如何编译安装新内核支持NTFS文件系统?(以redhat7.2x64为例)

    内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核 ...

  4. linux内核分析作业6:分析Linux内核创建一个新进程的过程

    task_struct结构: struct task_struct {   volatile long state;进程状态  void *stack; 堆栈  pid_t pid; 进程标识符  u ...

  5. 第六周——分析Linux内核创建一个新进程的过程

    "万子恵 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 &q ...

  6. 分析Linux内核创建一个新进程的过程

    一.原理分析 1.进程的描述 进程控制块PCB——task_struct,为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. struct task_struct ...

  7. Linux内核创建一个新进程的过程

    “平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 进程在 ...

  8. 实验六:分析Linux内核创建一个新进程的过程

    原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 题目自拟,内容围绕对Linu ...

  9. Linux之增加系统调用[内核编译]

    声明:如需引用或者摘抄本博文源码或者其文章的,请在显著处注明,来源于本博文/作者,以示尊重劳动成果,助力开源精神.也欢迎大家一起探讨,交流,以共同进步- 0.0 由于操作系统实验的缘故,有一个实验需要 ...

随机推荐

  1. HDU 1387 Team Queue

    Team Queue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. hdu 2059(dp)

    题意:容易理解... 思路:dp[i]表示乌龟到达第i个充电站时最少花费时间到第 i 个充电站后,从起点开始遍历到第 i-1 个充电站,得到最少花费时间 状态转移方程:dp[i]=min(dp[j]+ ...

  3. Shell获取Aix/linux/unix机器上db2和os的信息并上传到指定服务器

    (之前写过一篇类似的文章,当时传输文件用的是ftp,因为项目觉得ftp不够安全所以这次换成了scp,同时对脚本的一些地方也做了一些调整) 其实做这个东西还是因为项目的需求,需要获取某些机器(目前主要是 ...

  4. duilib底层机制剖析:窗体类与窗体句柄的关联

    转载请说明原出处,谢谢~~ 看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术.这些技术都是为了解决c++封装的窗体类与窗体句柄的关联问题. 这里是三篇关于thunk技术 ...

  5. Tkinter教程之Label篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811293 #Tkinter教程之Label篇'''1.Label的第一个例子text属性使用 ...

  6. leetcode—sqrt

    1.题目描述   Implement int sqrt(int x).   Compute and return the square root of x. 2.解法分析 很明显,用二分搜索可解,但是 ...

  7. hdfs[命令] dfs

    Usage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCr ...

  8. Unity3D文件读写

    这里主要是简单的文件读写,不推荐使用,最好用的还是PlayerPrefs. using UnityEngine; using System.Collections; using System.IO; ...

  9. append some buttons to the standard datagrid pager bar

    <script type="text/javascript">  $(function(){   var pager = $('#dg').datagrid('getP ...

  10. NLog 錯誤小記

    IISExpress使用NLog遇到寫入權限錯誤,特記錄下來: NLog配置文件中指定FileName時需要指定為當前目錄,如不指定會產生 拒絕訪問 錯誤, 估計為不指定當前目錄時會將文件寫入iise ...