上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 74 下一页
摘要: 简述 linux下异步方式有两种:异步通知和异步IO(AIO),aio请参考:linux异步IO--aio 异步通知的含义是:一旦设备就绪,则主动通知应用程序,这样应用程序就不需要查询设备状态,准确称谓是“信号驱动的异步I/O”。 Linux的I/O机制经历了一下几个阶段的演进: 1. 同步阻塞I/ 阅读全文
posted @ 2018-03-18 18:21 yuxi_o 阅读(1447) 评论(0) 推荐(1) 编辑
摘要: 阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足。而非阻塞的进程在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直到可以操作为止。 int fd; int data = 0; 阅读全文
posted @ 2018-03-18 17:37 yuxi_o 阅读(788) 评论(0) 推荐(0) 编辑
摘要: 解决竞态(race conditions)最根本的途径是对共享资源的互斥访问,访问共享资源的代码区被称为临界区(critical sections),对临界区的代码需要以某种互斥机制加以保护。常见的互斥机制有:中断屏蔽、原子操作、自旋锁、信号量、互斥体。1. 中断屏蔽由于linux内核的进程调度和异 阅读全文
posted @ 2018-03-18 17:18 yuxi_o 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 查阅内核代码时经常看到和应用到延时,本文用于归纳延时相关内容。 一. 短延时 短延时的本质是忙等。 毫秒时延已经很大了,在内核中,最好不要直接使用mdelay(),无谓消耗cpu资源,对于毫秒级以上时延,内核提供如下函数: msleep(),ssleep()不能被打断,msleep_interrup 阅读全文
posted @ 2018-03-18 16:52 yuxi_o 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 本文档只介绍中断编程所需的函数及应用,中断完整处理流程应参考文档《linux中断处理流程》。 本文档基于3.14内核。 0. 基础 中断取代了轮询的通知方式,DMA取代了轮询的读写数据方式。中断分类软件指令造成的中断(又叫异常,同步中断)。 svc, und, abt硬件通过中断请求信号造成的中断( 阅读全文
posted @ 2018-03-18 15:31 yuxi_o 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 一、sysfs接口 在3.14及之后的linux中对gpio提供了sysfs接口,说明文档:Documents/gpio/sysfs.txt。 Platforms which use the "gpiolib" implementors framework may choose to configu 阅读全文
posted @ 2018-03-15 22:05 yuxi_o 阅读(1547) 评论(0) 推荐(1) 编辑
摘要: 内核在时钟中断发生后执行检测各个定时器是否到期,到期后的定时器处理函数将作为软中断在底半部执行。实质上,时钟中断处理程序会唤起TIMER_SOFTIRQ软中断,运行当前处理器上到期的所有定时器。linux提供的内核定时器数据结构为timer_list。 一. 定义 timer_list定义在linu 阅读全文
posted @ 2018-03-13 20:22 yuxi_o 阅读(763) 评论(0) 推荐(0) 编辑
摘要: 工作队列是另一种将工作推后执行的形式,它可以把工作交给一个内核线程去执行,这个下半部是在进程上下文中执行的,因此,它可以重新调度还有睡眠。 区分使用软中断/tasklet还是工作队列比较简单,如果推后的工作不需要睡眠,那么就选择软中断或tasklet,但如果需要一个可以重新调度,可以睡眠,可以获取内 阅读全文
posted @ 2018-03-10 11:28 yuxi_o 阅读(1200) 评论(0) 推荐(0) 编辑
摘要: 一个使用tasklet的中断程序首先会通过执行中断处理程序来快速完成上半部分的工作,接着通过调度tasklet使得下半部分的工作得以完成,但是下半部分何时执行属于内核的工作。 由于tasklet依靠软中断实现,所以tasklet不能休眠。这就意味着不能在tasklet中使用信号量或其他任何可能引起阻 阅读全文
posted @ 2018-03-10 11:26 yuxi_o 阅读(635) 评论(0) 推荐(0) 编辑
摘要: 摘自:http://blog.csdn.net/weiniliuchao/article/details/50295527 增加内核配置选项 openwrt的.config文件中,关于内核的选项都是形如CONFIG_KERNEL_*(由关键字kernel)。在添加内核选项的时候,要在配置项前添加CO 阅读全文
posted @ 2018-03-10 10:30 yuxi_o 阅读(3341) 评论(0) 推荐(0) 编辑
上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 74 下一页