【原创】Linux 增加系统调用

首先将内核文件移至/usr/src/下并解压。

过程参考http://www.cnblogs.com/kavs/p/4607371.html

然后。。开始增加系统调用。。

sudo gedit /usr/src/linux-4.0.6/kernel/sys.c

插入头文件 #include <linux/linkage.h>

   1: /* 
   2: *leemo‘s own define task 
   3: */ 
   4: asmlinkage int sys_leemohello(char * buf){ 
   5:     printk(KERN_EMERG"===this is leemo‘s work ====="); 
   6:     printk(KERN_EMERG"==2012221107110095 leemo",buf); 
   7:     return 1; 
   8: }

sudo gedit /usr/src/linux-4.0.6/arch/x86/syscalls/syscall_32.tbl

记住增加的系统号 如上面的359

sudo gedit /usr/src/linux-4.0.6/arch/x86/include/asm/syscalls.h

编译内核。。。。过程参考http://www.cnblogs.com/kavs/p/4607371.html

编译完成后重启。

编写测试代码

1、先建个文件夹mkdir leemotest

2、创建测试代码sudo gedit testleemohello.c 键入代码:

   1: #include <stdio.h>
   2: int main()
   3: {
   4:     int rs;
   5:     char * buf="leemo";
   6:     rs=syscall(359,buf);
   7:     printf("%d %s \n",rs,buf);
   8:     if(rs==1){
   9:         printf("system call is success!\n");
  10:     }
  11:     else
  12:         printf("sorry,failed!\n");
  13:     return 0;
  14: }

编译测试代码:

gcc testleemohello.c -o testleemohello

运行测试代码:

./testleemohello

结果截图:

接着输入dmesg

调用完成。

时间: 2024-10-17 13:40:16

【原创】Linux 增加系统调用的相关文章

Linux 增加系统调用 (转)

Linux 增加系统调用大致步骤: 1.下载好内核文件,在内核源文件中添加好自己的调用函数. 2.编译内核 3.验证. 一.在内核源文件中增加自己的函数 首先将内核文件移至/usr/src/下并解压. 过程参考http://www.cnblogs.com/kavs/p/4607371.html 下面开始添加自己的函数. sudo gedit /usr/src/linux-4.0.6/kernel/sys.c 插入头文件 #include <linux/linkage.h> /* *leemo'

Linux增加系统调用

Linux讲一个东西,我就选择了系统调用..  中间主要是系统原本是64的,我之前用32的内核安装,自然是失败了...(也不知道是不是失败的主要原因) 然后3.19.0的内核我换成了3.19.2的内核,然后成功添加了系统调用. 由于多次make,还没清除内核,变成巨大的45G的文件夹了.. 链接:http://pan.baidu.com/s/1dE2BNm5

linux内核增加系统调用 - 内核版本3.16.39

详细内容见下面链接: http://files.cnblogs.com/files/jingjingblog/linux%E5%86%85%E6%A0%B8%E5%A2%9E%E5%8A%A0%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8.pdf 文档主要内容: 1.基础知识介绍 2.增加系统调用 3.以树的形式输出进程间的父子关系

linux内核增加系统调用--Beginner‘s guide

Linux内核中设置了一组用于实现系统功能的子程序,称为系统调用.系统调用和普通库函数调用非常相似明知是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态. 一般的,进程是不能访问内核的,它不能访问内核所占用内存空间也不能调用内核函数.这被称为保护模式.为了和用户空间上运行的进程进行交互,内核提供一组接口.通过该接口应用程序可以访问硬件设备和其他操作系统资源. 实际上提供这组接口主要是为了保证系统稳定可靠,避免应用程序肆意妄为. 系统调用在用户空间和硬

[原创]linux简单之美(一)

原文链接:linux简单之美(一) 话说windows也有syscall,这是必须的.但是win的syscall可以直接call吗?可以是可以但是破费周折,搞成SDT之类的复杂概念.下面看看linux是如何做的吧. 1 section .data 2 msg db "hello hopy!",0x0a 3 4 section .text 5 global _start 6 7 _start: 8 mov eax,4 9 mov ebx,1 10 mov ecx,msg 11 mov e

linux内核系统调用和标准C库函数的关系分析

今天研究了一下系统调用和标准库函数的区别和联系,从网上搜集的资料如下: 1.系统调用是为了方便应用使用操作系统的接口,而库函数是为了方便人们编写应用程序而引出的,比如你自己编写一个函数其实也可以说就是一个库函数. 2.系统调用可以理解为内核提供给我们在用户态用的接口函数,可以认为是某种内核的库函数. 3.read就是系统调用,而fread就是C标准库函数. 4.很多c函数库中的函数名与系统调用的名称一样是因为该函数本身其实就是调用的系统调用,放到c函数库就是为了用户态的使用 5.写程序直接使用的

Linux内核-系统调用

Linux内核-系统调用 1.与内核通信 #系统调用在用户空间进程和硬件设备之间增加了一个中间层 作用:1.为用户空间提供了一种硬件的抽象接口 2.系统调用保证了系统的稳定和安全 3.出于每个进程都运行在虚拟系统中的考虑 #系统调用是用户空间访问内核的唯一手段 2.API.POSIX和C库 #应用程序通过API而不是直接系统调用来编程 #一个API定义了一组应用程序使用的编程接口 3.系统调用 #内核必需提供系统调用所希望完成的功能,但它完全可以按照自己的方式去实现,只要最后结果正确 #所有的系

[原创]Linux系统启动过程分析

经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究.这当中就包括系统的启动流程.文件系统的组成结构.基于动态库和静态库的程序在执行时的异同.协议栈的架构和原理.驱动程序的机制等等. 本人在综合了现有网上大家智慧的基础上,结合对2.6.32的内核代码的研读,基于CentOS 6.0系统对Linux的启动流程做了些分析.由于才疏学浅,知识所限,有些地方分析不妥之处还请各位高手不吝赐教. OK,我们言归正传.对于一台安装了Linux系统的主机来说,当用户按下开机按钮时,一共要经

Linux增加LV(逻辑卷)容量

Linux增加LV(逻辑卷)容量 2017-09-29-17:34:13 个人原创博客,转载请注明出处. 查看逻辑卷的相关命令: lvs vgs 命令: [[email protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree vg_arch 1 4 0 wz--n- 544.01g 0 [[email protected] ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg_arch lvm2 a--u 5