wait_event_interruptible_timeout】的更多相关文章

最近一套方案涉及到内核线程之间的同步,用到了函数wait_event_interruptible_timeout函数,大致是这样: A:是一个后台的线程,平常没事就睡觉,有时被唤醒,或者每5分钟醒一次看看: B:普通线程,负责唤醒后台的线程让它干活! 此处唤醒的操作使用到的函数是wake_up,然后进程A使用wait_event_interruptible_timeout让自己睡觉.下面详细分析其中的机制: wait_event_interruptible_timeout: sleep util…
原文:https://blog.csdn.net/wuyongpeng0912/article/details/45723657 网上有关于此函数的分析,但大都是同一篇文章转载来转载去,没有进一步的分析.做个小结: 了解函数功能,除了直接看代码逻辑,最有效的当是注释内容了. 如下: 函数原型:wait_event_interruptible_timeout(wq, condition, timeout) * 函数作用:~睡眠~,直到condition为真,或timeout超时:* @wq: 要等…
1. 原型 #define wait_event_interruptible_timeout(wq_head, condition, timeout) \ ({ \ long __ret = timeout; \ might_sleep(); \ if (!___wait_cond_timeout(condition)) \ __ret = __wait_event_interruptible_timeout(wq_head, \ condition, timeout); \ __ret; \…
转自:http://blog.csdn.net/chrovery/article/details/51088425 转自 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=27717694&id=3971861 一.前言 对于现在编译的一些module要insmod在系统上时,可能会报各种各样的错误.这些错误仔细研读内核源码,都能找出原因.2.6 内核以前的insmod部分主要依赖于modutils源码包,在用户层基本将工作完成…

I2C

1.I2C协议个. 2.1 I2CADR 地址寄存器CPU也可以是I2C的Slave,CPU的I2C地址有 I2CADR指定 2.2 I2CFDR 频率设置寄存器The serial bit clock frequency of SCL is equal to the CCB clock divided by the divider.用来设置I2C总线频率2.3 I2CCR 控制寄存器MEN: Module Enable.    置1时,I2C模块使能MIEN:Module Interrupt…
在Linux中, 一个等待队列由一个"等待队列头"来管理,等待队列是双向链表结构. 应用场合:将等待同一资源的进程挂在同一个等待队列中. 数据结构 在include/linux/wait.h struct __wait_queue_head { spinlock_t lock; struct list_head task_list; }; typedef struct __wait_queue_head  wait_queue_head_t;//定义wait_queue_head_t结…
catalog . 概述 . 使用模块 . 插入和删除模块 . 自动化与热插拔 . 版本控制 1. 概述 模块(module)是一种向Linux内核添加设备驱动程序.文件系统及其他组件的有效方法,而无需连编新内核或重启系统,模块消除了宏内核的许多限制,模块有许多优点 . 通过使用模块,内核发布者能够预先编译大量驱动程序,但并不会造成内核镜像发生膨胀,在自动检测硬件(例如USB)或用户提示之后,安装例程选择适当的模块并将其添加到内核中 . 内核开发者可以将试验性的代码打包到模块中,模块可以卸载.修…
等待队列 先补充个基础知识――等待队列 认识 定义 wait_queue_head_t wait_queue; 初始化 init_waitqueue_head(&wait_queue); 等待 wait_event(queue, condition)   等待某个条件而进入睡眠 wait_event_interruptible(queue, condition)  等待某个条件而进入睡眠并允许信号中断睡眠 wait_event_timeout(queue, condition,timeout)…
由图可知,模拟ADC分为两部分功能,一部分是触屏功能,另一部分就是普通ADC功能.分别可以产生INT_TC和INT_ADC 两个中断.该ADC模块总共有8个通道可以进行模拟信号的输入,分别是AIN0.AIN1.AIN2.AIN3.YM.YP.XM.XP通过一个8路模拟开关MUX进行选通.设定控制寄存器(ADCCON)中预分频器的值来确定AD转换器频率,之后ADC将模拟信号转换为数字信号保存到ADC数据寄存器ADCDAT0, ADCDAT0中的数据(一般第十位有效)可以通过中断或查询的方式来获取.…
硬件信息:FL2440板子,s3c2440CPU带四个LED,分别在链接GPB5,GPB6,GPB8,GPB10 内核版本:linux-3.8.0 led驱动代码如下: 值得注意地方地方: 1,定时器的使用:在include/linux/timer.h下定义struct timer_list struct timer_list { /* * All fields that change during normal runtime grouped to the * same cacheline *…