
linux字符设备驱动
wangdaobadao
这个作者很懒,什么都没留下…
展开
-
Linux设备驱动--简单字符设备驱动程序
Linux设备驱动程序——简单字符设备驱动程序 一、重要知识点 1. 主次设备号 dev_t dev_t是内核中用来表示设备编号的数据类型; int MAJOR(dev_t dev) int MINOR(dev_t dev) 这两个宏抽取主次设备号。 dev_t MKDEV(unsigned int major, unsignedi转载 2013-04-25 12:47:32 · 627 阅读 · 0 评论 -
register_chrdev_region()注册的问题
2013年5月1日0:27:48 register_chrdev_region() 主设备号、次设备号 2008年03月23日 星期日 21:40分配并注册主次设备号 设备号是在驱动module中分配并注册的,也就是说,驱动module拥有这个设备号(我的理解),而/dev目录下的设备文件是根据这个设备号创建的,因此,当访问/dev目录下的设备文件时,驱动module就知道原创 2013-05-01 00:23:41 · 795 阅读 · 0 评论 -
register_chrdev_region()参数意义以及动态分配设备号
1. 字符设备结构体 内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下: static struct char_device_struct { struct char_device_struct *next; // 指向散列冲突链表中的下一个元原创 2013-05-01 00:31:17 · 2619 阅读 · 0 评论 -
等待队列头init_waitqueue_head
等待队列头 |wait_queue_head_t | init_waitqueue_head() | DECLARE_WAIT_QUEUE_HEAD 多个线程在等待同一件事件的发生时会进入睡眠状态,等待事件发生时,它们又会被唤醒从而结束休眠。在被唤醒的过程中,首先需要能够找到这些进程,而这些等待的进程由一个称为等待队列的数据结构维护着。 等待队列就是一个进程链表,其中包含了所有等待某个原创 2013-05-03 11:07:45 · 4102 阅读 · 0 评论 -
信号量/互斥的理解
信号量实现的机制 信号量是一种睡眠锁。它是实现同步操作,防止竟态的方式之一。任何进程在对共享数据进行读写操作之前必须获得用来保护共享数据的信号量,否则不能供访问权限,信号量会把这个访问进程放进一个等待队列中(这个等待队列是在信号量初始化过程中被初始化的),然后让其进入睡眠状态。这是处理器重新调度,去执行其他进程的操作。保护共享数据的信号量被释放,被这个信号量放进等待队列的进程会被激活,获得该信号转载 2013-05-03 11:22:25 · 748 阅读 · 0 评论 -
container_of
linux中container_of【zz】 2013年6月3日15:11:12 自己的理解:参数1 file_ops 参数2 属于哪个结构体 参数3 参数2中的结构体当中哪个成员 返回值:返回某个结构体变量的在内存中的首地址原创 2013-06-03 15:19:30 · 485 阅读 · 0 评论 -
Linux--中断
专业的linux驱动开发离不开中断处理,在处理中断,首先要注册中断,在linux下通过request_irq来注册中断的,不同内核版本,注册中断所需要的参数也不同,本文以linux-2.6.34为例,对比老版本进行说明。 request_irq()函数在include/linux/interrupt.h中定义,原型为: static inline int __must_chec原创 2013-06-27 23:32:18 · 766 阅读 · 0 评论