首页 > 代码库 > linux驱动编写之阻塞与非阻塞

linux驱动编写之阻塞与非阻塞

一、概念

      应用程序使用API接口,如open、read等来最终操作驱动,有两种结果--成功和失败。成功,很好处理,直接返回想要的结果;但是,失败,是继续等待,还是返回失败类型呢?  如果继续等待,将进程休眠,那么这类驱动设计就是阻塞式的;如果不等待,返回失败的类型(原因),那么这类驱动的设计就是非阻塞式的。

      在应用程序打开驱动文件的时候,可以通过参数向驱动传递使用驱动的方式(阻塞或者非阻塞),通过flags这个参数来传递。当flags中包含“O_NONBLOCK”,就是非阻塞,否则就是阻塞式的。

fd = open("/dev/xxx", O_RDWR | O_NONBLOCK);

二、具体实现

      以按键驱动为例进行说明,主要是利用互斥锁功能来实现。

1、

 

linux驱动编写之阻塞与非阻塞