06 2021 档案

摘要:原先用的字符设备驱动框架都是自己定义fops结构体,自己去实现里面的各个成员函数,然后测试程序里面打开一个设备文件open("/dev/xxx")就能通过内核调用到驱动程序里的open函数。但这个做法的前提是写应用程序的人知道有个名字叫xxx的文件才能去打开他,没有把应用和驱动很好地分开。 输入子系 阅读全文
posted @ 2021-06-09 00:28 Feiiiiii 阅读(91) 评论(0) 推荐(0)
摘要:目的:让一个驱动程序在同一时刻只能被一个进程使用。 方法:可以用原子操作也可以用信号量,用信号量的话还涉及到阻塞方式和非阻塞方式。 1. 原子操作原子操作指的是在执行过程中不会被别的代码路径所中断的操作。常用原子操作函数举例:atomic_t v = ATOMIC_INIT(0); //定义原子变量 阅读全文
posted @ 2021-06-03 00:19 Feiiiiii 阅读(86) 评论(0) 推荐(0)
摘要:poll机制是应用程序主动检测相应的事件有没有发生,没发生进程就休眠,如果事件发生了,应用程序再执行相应的操作(如读写),对应用程序来说是一种主动的检测机制。 不用poll机制,只用中断方式的话,需要应用程序去调用read、write函数,从而调用驱动程序中的xxx_read\write函数,如果设 阅读全文
posted @ 2021-06-01 23:25 Feiiiiii 阅读(668) 评论(0) 推荐(0)
摘要:poll机制概述:当应用程序调用poll函数,进程会休眠一段时间,等待事件发生;休眠期间事件发生就被唤醒,poll函数立即返回,返回值为1;如果超过设定的休眠时间事件还是没发生,poll函数也会返回,返回值为0。 对于系统调用poll或者select,他们对应的内核函数都是sys_poll,分析sy 阅读全文
posted @ 2021-06-01 00:14 Feiiiiii 阅读(784) 评论(0) 推荐(0)