Linux内核模块编程入门
文章平均质量分 73
Linux内核模块入门的系列,参考《Linux 内核驱动模块编程指南》一书,对书中的代码进行了修改和优化,与此同时加入了一些对原理的解析。
zhangyifei216
这个作者很懒,什么都没留下…
展开
-
Linux内核模块编程-系统调用拦截
系统调用拦截本文实验基于Centos6.5 内核版本2.6.32-431.el6.x86_64,系统调用拦截的目的其实就是把系统真正要执行的系统调用替换为我们自己写的内核函数。系统调用拦截的实现那么如何去实现系统调用拦截呢,通过学习系统调用的内核实现我们发现其实系统调用的地址是放在sys_call_table中通过系统调用号定位到具体的系统调用地址,然后开始调用,那么通过编写内核模块来修改sys_c原创 2015-11-16 22:15:48 · 4636 阅读 · 0 评论 -
Linux内核模块编程-与设备文件对话
与设备文件对话在上一篇博文中,我们编写了一个字符设备驱动,简单的回顾下我们编写的流程:实现open/close/read/write四个操作设备文件的函数填充file_operations结构体注册设备和指明操作设备的file_operations与设备之间可以通过上面提到的几个函数来进行通信,但是对于某些设备来说,设备的操作且无法通过上面提到的几个函数来实现 ioctl的一些简介: i原创 2015-11-15 16:39:41 · 1146 阅读 · 0 评论 -
Linux内核模块编程-字符设备驱动
设备驱动简介设备被大概的分为两类: 字符设备和块设备。字符设备 提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。块设备 应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘、软盘、CD-ROM驱动器和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外原创 2015-11-07 17:30:34 · 4738 阅读 · 1 评论 -
Linux内核模块编程-proc文件系统进阶
proc作为输入关于proc的一些基本概念和基本使用以及一些核心数据结构可以参考我的上一篇文章 在上一篇文章中提到了利用proc作为内核空间传递数据给用户空间的一种方式,那么proc能否作为用户空间传递数据给内核空间的一种手法呢?答案当然是可以的,熟悉linux的读者应该都知道我们不光光可以读取proc文件中的内容还是可以向proc文件中写入要传递的数据的,那么如何通过proc来向内核输入信息呢,原创 2015-11-14 11:04:00 · 2800 阅读 · 3 评论 -
Linux内核模块编程-proc文件系统
什么是procproc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。 来自于百度百科使用proc在内核态和用户态传递数据创建p原创 2015-11-11 22:49:10 · 3897 阅读 · 1 评论 -
Linux内核模块编程-HelloWorld
HelloWorld内核开始断断续续学习内核,大概半年了,多少开始对内核有点感悟了,但是对于这个庞然大物我显得很渺小,在枯燥的内核源码之中似乎没有一点点成功的喜悦,因此我选择学习内核模块编程,通过编写一些内核模块来体验那一点点小小的成就感吧!什么是内核模块内核模块是具有独立功能的程序。它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行最简单的内核模块#inc原创 2015-11-07 17:00:56 · 8149 阅读 · 0 评论