arm
YEARXIAOYU5
这个作者很懒,什么都没留下…
展开
-
linux驱动程序笔记
一、 DECLARE_WAIT_QUEUE_HEAD()(name) -- 生成一个等待队列头wait_queue_head_t,名字为name-----------------------------------------------------------------#define DECLARE_WAIT_QUEUE_HEAD (name)原创 2013-09-11 19:20:17 · 684 阅读 · 0 评论 -
Linux驱动程序笔记2
在驱动程序中,当多个线程同时访问相同的资源时(驱动程序中的全局变量是一种典型的共享资源),可能会引发"竞态",因此我们必须对共享资源进行并发控制。Linux内核中解决并发控制的最常用方法是自旋锁与信号量(绝大多数时候作为互斥锁使用)。 自旋锁与信号量"类似而不类",类似说的是它们功能上的相似性,"不类"指代它们在本质和实现机理上完全不一样,不属于一类。 自旋锁不会引起调用者睡眠转载 2013-09-22 20:49:17 · 623 阅读 · 0 评论 -
Linux 驱动程序笔记3--- 阻塞型字符设备驱动 --- O_NONBLOCK --- 非阻塞标志
阻塞: 在设计简单字符驱动程序时,要注意一个重要问题. 当一个设备无法立刻满足用户的读写请求时应当如何处理? 例如:调用 read 时没有数据可读,但以后可能会有; 或者一个进程试图向设备写入数据,但是设备暂时没有准备好接收数据. 应用程序通常不关心这种问题,应转载 2013-09-25 13:52:43 · 925 阅读 · 0 评论 -
Linux 驱动程序笔记4——内核定时器struct timer_list
内核中最终的计时资源是定时器。定时器用于定时器超时处理程序在未来某个特定时间点执行,或者周期性的轮询硬件的状态。Linux提供了内核定时器完成这类工作。 定时器的只需要执行一些初始化的操作,如:设置一个超时时间,指定超时要调用的函数,然后激活定时器就可以了。它的处理和工作队列还是有点类似的。和任务队列一样,内核定时器并不是周期运行,它在超时后自动销毁。因此,如果要实现周期轮询,就需要在定原创 2013-11-04 19:23:12 · 1104 阅读 · 0 评论 -
Linux驱动程序笔记5——usb概述2
struct usb_device {intdevnum; //设备号,也称设备地址chardevpath[16];u32route;enum usb_device_statestate; enum usb_device_speedspeed; struct usb_tt*tt;intttport;un转载 2013-11-10 23:06:56 · 650 阅读 · 0 评论 -
Linux驱动程序笔记5——usb驱动概述1
Usb的设备是非常复杂的,它由许多不同的逻辑单元组成,这些逻辑单元之间的关系可以简单地描述如下:l 设备(usb_device)通常具有一个或者更多的配置(usb_host_config)l 配置通常具有一个或者更多的接口(usb_interface)l 接口通常具有一个或者更多的设置l 设置没有或者具有一个以上的端点(usb_host_endpoint)各种机构体详细描述见i转载 2013-11-10 23:03:39 · 762 阅读 · 0 评论