![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux设备驱动
算法+数据结构
这个作者很懒,什么都没留下…
展开
-
模块的作用及模块Makefile的解析
在学习编写Linux内核模块的时候我们首先要清楚的知道内核模块的作用,为什么要使用内核模块?这是因为Linux内核的整体结构非常的庞大,包含的组件也非常的多,把所有的内核模块都编译到Linux内核,会导致的问题是内核很大,同时在现有的内核新增或删除部分功能时,不得不重新编译内核,可谓相当的费时。而模块的使用就是为了解决这一问题,即动态的在内核中添加或者删除相应功能。下面以一个经典的代码来看是相关的原创 2013-10-31 11:45:17 · 852 阅读 · 0 评论 -
ioctl命令及参数传递
一、ioctl的简介:虽然在文件操作结构体"struct file_operations"中有很多对应的设备操作函数,但是有些命令是实在找不到对应的操作函数。如CD-ROM的驱动,想要一个弹出光驱的操作,这种操作并不是所有的字符设备都需要的,所以文件操作结构体也不会有对应的函数操作。出于这样的原因,ioctl就有它的用处了————一些没办法归类的函数就统一放在ioctl这个函数操作转载 2013-11-05 11:42:17 · 19034 阅读 · 3 评论 -
linux自己手动添加系统调用
查看自己的内核版本,我的是linux-2.6.28还有linux-2.6.22等版本,根据自己的版本进入1)添加源代码cd到如下中:第一个任务是编写加到内核中的源程序,也就是将要加到一个内核文件中去的一个函数,该函数的名称应该是新的系统调用名称前面加上sys_标志,系统调用源代码sys_mycall 2) 连接新的系统调用--设置系统号 添加新的系统调用之后原创 2013-11-06 12:46:10 · 1001 阅读 · 0 评论 -
linux驱动之内核编译
先拿出一份之前牛人的总结:参考资料说明本人使用的内核版本:(red hat) linux 2.6.28那个自我测试的小实验是不是太繁琐呢?因此做了尝试,而且尝试也成功了。就和大家分享一下新的简单的方法。提示:此行为会接触到内核编译,有出现内核被污染、被损坏的可能性,因此谨慎操作。首先是准备好插入的程序。这个编译入的小程序不需要复杂,用上面参考内容中的例子也是可以的。下面是我用转载 2013-11-13 19:36:52 · 583 阅读 · 0 评论 -
linux设备驱动之阻塞与非阻塞I/O
先做一下与内核阻塞有关的知识储备:1)进程休眠: 进程休眠,简单的说就是正在运行的进程让出CPU。休眠的进程会被内核搁置在在一边,只有当内核再次把休眠的进程唤醒,进程才会会重新在CPU运行。这是内核中的进程调度。一个CPU在同一时间只能有一个进程在运行,微观串行宏观并行,在宏观上,我们觉得是所有进程同时进行的。实际上并不是这样,内核给每个进程分配了4G的虚拟内存,并且让每个进程傻乎乎原创 2013-11-13 20:12:43 · 604 阅读 · 0 评论 -
VMware 中linux(redhat)增加硬盘空间
转载地址:https://blog.csdn.net/zutsoft/article/details/50262459作者:lianghc1. 增加磁盘,使用mount挂在,使用mount挂在的缺点是必须挂载在一个新目录下,否则挂载目录的原来的文件失效。并且需要设置永久挂在,否则每次重启都得重新挂挂载。参考网址:http://www.2cto.com/os/201405/301879.h...转载 2018-05-15 16:27:49 · 5713 阅读 · 1 评论