![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux驱动
老鼠爱cheese
这个作者很懒,什么都没留下…
展开
-
Linux内核中的cdev_alloc和cdev_add
内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev {struct kobject kobj; // 每个 cdev 都是一个 kobjectstruct module *owner; // 指向实现驱动的模块const struct fi转载 2014-03-22 18:05:06 · 473 阅读 · 0 评论 -
字符设备初始化函数
下载了scull的代码,看着学习。昨天看了LDD3的第三章:字符设备驱动程序。了解了有关设备编号,三个重要的结构,字符设备的注册等。今天主要看看scull代码中字符设备的初始函数。查看的代码位置D:\Code\scull\examples\scull,源码粘贴:int scull_init_module(void){ int result, i; dev_t dev = 0;原创 2014-03-22 18:01:59 · 547 阅读 · 0 评论 -
字符设备
主要内容来自《Linux设备驱动程序》第三章:字符设备驱动程序主设备和次设备号对字符设备的访问是通过文件系统内的设备名称进行的。那些名称被称为特殊文件、设备文件,或者简单称之为文件系统树的节点,通常位于/dev目录。ls -l命令输出:第一列中的“c”表示字符设备、“b”表示块设备。主设备号:标识设备对应的驱动程序。现在Linux内核允许多个驱动程序共享主设备号,但大多数设备仍原创 2014-03-22 00:04:23 · 587 阅读 · 0 评论 -
cdev动态和静态注册的理解错误
先写下LDD3P59页字符设备的注册一节的原文:我们前面提到,内核内部使用struct cdev结构来表示字符设备。。。分配和初始化上述结构的方式有两种。如果读者打算在运行时获取一个独立的cdev结构,则应该如下编写代码:struct cdev *my_cdev = cdev_alloc();my_cdev->ops = &my_fops;这时,你可以将cdev结构嵌入到自己的原创 2014-03-22 19:36:30 · 548 阅读 · 0 评论 -
container_of理解
问题:如何通过结构中的某个变量获取结构本身的指针???关于container_of见kernel.h中:/*** container_of - cast a member of a structure out to the containing structure* @ptr: the pointer to the member.* @type: the t转载 2014-03-23 14:20:35 · 339 阅读 · 0 评论 -
并发和竞态(1)
写这些东西都是作为看书的笔记,留作今后复习用的。既不是原创也不是转载,标题选择是在有些纠结。想想还是选个转载吧,转载书上的内容。LDD3第五章并符合竞态并发及其管理在现代Linux系统中存在大量的并发来源,因此会导致可能的竞态(race condition)。竞态通常由对共享资源访问而产生。所以设计自己的驱动程序时第一个要记住的规则是,只要可能,就应该避免资源的共享。而这种思想的明转载 2014-03-26 16:41:23 · 426 阅读 · 0 评论