Linux驱动程序的基础

目录:

一、休眠与唤醒

二、POLL机制

三、异步通知

四、阻塞与非阻塞

五、定时器

六、中断下部分tasklet

七、工作队列

八、中断的线程化处理

九、mmap基础知识

一、休眠与唤醒

概念:应用程序必须等待某个事件发生。

二、POLL机制

概念:使用休眠-唤醒的方式等待某个事件发生时,有一个缺点:等待的时间可能 很久。我们可以加上一个超时时间,这时就可以使用poll 机制。

不需要自己设置休眠,内核自动休眠。

具体操作:

三、异步通知

概念:APP不休眠,驱动程序有数据时主动通知APP,APP 收到信号后执行信息处理函数。

使用流程:

应用程序怎么去使用异步通知?如下图。

第一步,注册信号处理函数;

第二步,打开某个驱动程序;

第三步,将PID(应用程序进程号)告诉驱动程序;

第四步,设置驱动程序的flag,设置为FASYNC(启动异步通知);

第五步,应用程序做事情。

四、阻塞与非阻塞

概念:所谓阻塞,就是等待某件事情发生。比如调用read 读取按键时,如果没有按键数据则read 函数不会返回,它会让线程休眠等待。

使用poll 时,如果传入的超时时间不为0,这种访问方法也是阻塞的。使用poll 时,可以设置超时时间为0,这样即使没有数据它也会立刻返回,这就是非阻塞方式。

不使用信号:

方法一:

应用程序编程:

方法二:

应用程序编程:

方法一、二的驱动程序编程

五、定时器

概念:所谓定时器,就是闹钟,时间到后你就要做某些事。有2 个要素:时间、做事,换成程序员的话就是:超时时间、函数。

定时器时间:

六、中断下部分tasklet

七、工作队列(内核线程)

八、中断的线程化处理

九、mmap基础知识

一级列表:

二级列表:

什么是cache,什么是buffer?

但考虑到硬件响应,还要想到其他问题,如操作寄存器。

四种方法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值