LDD3笔记
文章平均质量分 57
bindingfly
损人利己之事不能做,损人不利己之事坚决不做;
利己利人之事多做,利人不利己尽量做。
展开
-
LDD3 字符设备驱动
主次设备号:一般请情况下,主设备号用来标识设备驱动对应的驱动程序;次设备号由内核使用,用于正确确定设备文件所指的设备。内核中,一般用dev_t类型来保存设备编号,将主次设备转换为dev_t类型的宏 MKDEV(int major, int minor)分配和释放设备编号:主要由两种方法 1)、明确知道设备编号,则使用register_chrdev_region();原创 2016-07-28 08:54:42 · 406 阅读 · 0 评论 -
并发与竞态
同步异步的区别:同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。 而我们平时经常讨论的同步问题多发生在多线程环境中的数据共享问题。即当多个线程需原创 2016-08-05 20:03:32 · 826 阅读 · 0 评论 -
高级字符驱动程序操作
通过读/写来实现数据传输,但除了数据传输之外,还有请求设备锁门、弹出介质、报告错误信息等。休眠:当一个进程所需要的资源得不到满足时,会标记为一种特殊状态,该状态就可以理解为休眠,休眠中的进程会被搁置在一边,等待将来的某个事件发生。对于休眠需要记住三天规则:1)、永远不要在原子上下文中进入休眠(原子上下文是指:执行多个步骤时,不能有任何的并发访问);2)、当我们被唤醒时,我们永远无法原创 2016-08-05 20:04:58 · 831 阅读 · 0 评论 -
Linux延时处理
1、Linux的延时处理设备驱动经常需要将某些特定代码延迟一段时间后执行--通常是为了让硬件能完成某些任务。 1.1长延时 超时如果驱动程序使用等待队列来等待其他一些事件,而我们同时希望在特定时间段中运行,则可以使用下列函数处理。timeout表示要等待的jiffies值,下列函数会在给的等待队列上休眠,但会在超时到期时返回。 wait_event_timeou原创 2016-08-06 17:01:30 · 938 阅读 · 0 评论 -
Linux设备驱动中的并发
1、Linux中的并发与竞争Linux设备驱动中必须解决的一个问题:多进程对共享资源的并发问题,多个进程对同一个设备的并发访问,势必会导致对该设备资源的竞争。竞态发生的几种情况:1)、对称多处理器的多个CPU;2)、单CPU内进程与抢占它的进程;2)、中断(硬中断、软中断、tasklet、底半部)与进程之间并发的概念:多个执行单元同时、并行被执行,而并发执行单元对共原创 2016-08-06 21:49:13 · 1920 阅读 · 0 评论 -
1、Linux设备的阻塞式和非阻塞式访问
1、休眠休眠的概念:休眠的进程会被搁置在一边,等待将来的某个事件发生。当进程休眠时,它期待某个条件未来为真,当一个休眠的进程被唤醒是,它必须再次检查它所等待的条件的确为真。休眠有简单休眠、高级休眠、手工休眠等。 1.1简单休眠Linux内核中最简单的休眠方式称为是wait_event的宏,它在休眠的同时也要检查进程等待的条件。以下是几种简单的休眠宏:原创 2016-08-07 15:35:23 · 1199 阅读 · 0 评论 -
构造和运行模块
构造一个模块并不难,难的是如何把自己驱动的元件理解好,并最大化其性能,说的俗一点就是怎么利用好器件的功能。内核模块程序和应用程序:大多数的小规模应用程序都是从头到尾执行单个任务,而模块却只是先注册自己,以便服务以将来,接着它的初始化函数就立即结束。模块化程序运行在内核空间,是内核功能的一个扩展,一般来说,一个驱动程序一般要能执行两个基本任务,一是:系统调用,如read/write;一是中断响应原创 2017-03-05 11:30:40 · 746 阅读 · 0 评论