驱动程序与用户程序之间的通信(原创)
2009-03-30 11:22
375 查看
驱动程序也是一个进程,只不过运行在内核态。在用户程序里,我们对驱动程序的调用通常通过一些接口函数,如open, close, read, write, ioctl等。在驱动程序里可能还会有驱动处理函数。当驱动响应硬件的中断时,会调用这个函数。虽然在中断响应函数中只能做有限的事情,但是我们期望这个中断能告诉用户程序,去让用户程序做一些改变。
驱动如何通知用户程序,一个是在内核态,一个是在用户态。
我们可以使用linux 中的信号。让驱动中的中断响应函数发送信号给用户程序,用户程序捕捉这个信号,并注册一个函数指针来响应这个信号。这样当硬件中断到来的时候,用户程序就会做出响应。我们还需要做的一件事情是让驱动程序得到用户程序的进程PID, 这是因为在发送一个信号的时候,通常需要接收这个信号的进程的PID。可以在open这个驱动的时候将进程getpid() 取得的进程号,write到驱动中,供驱动调用。注意的是,驱动中发射信号的函数kill_proc();
驱动如何通知用户程序,一个是在内核态,一个是在用户态。
我们可以使用linux 中的信号。让驱动中的中断响应函数发送信号给用户程序,用户程序捕捉这个信号,并注册一个函数指针来响应这个信号。这样当硬件中断到来的时候,用户程序就会做出响应。我们还需要做的一件事情是让驱动程序得到用户程序的进程PID, 这是因为在发送一个信号的时候,通常需要接收这个信号的进程的PID。可以在open这个驱动的时候将进程getpid() 取得的进程号,write到驱动中,供驱动调用。注意的是,驱动中发射信号的函数kill_proc();
相关文章推荐
- JAVA--第2周实验--用户从键盘输入一个1~9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数
- Qt GUI程序中主线程与非主线程之间的通信
- Linux 用户间通信的实用小程序
- “拿来主义”——怎样嗅探一个串口通信程序与硬件之间的通信(三)
- 站长分享网站内容原创和搜索引擎、用户之间有何关联
- SendMessage()两程序通信与MFC手动添加用户需要的新消息及其反汇编注解
- 两个程序之间的通信(邮槽)
- iOs LightBlue与cc2540 BLE开发板之间的通信实验 [原创, 多图]
- 线程之间的通信socketpair【学习笔记】【原创】
- 同一台系统下的用户进程之间的通信理解
- 【转帖】驱动程序与应用程序之间的通信
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 回收进程用户/内核资源
- 【Java学习笔记】60:客户端PC-后端程序服务器-数据库服务器之间的通信demo
- Android基础教程之----SMS简单发送短信程序(两个模拟器之间的通信)!
- 两个程序之间AIDL通信 解决空指针异常
- 编写一个Java应用程序。用户从键盘输入一个1—9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都
- 使用HID 设备的一个好处就是,操作系统自带了HID 类的驱 动程序,而用户无需去开发很麻烦的驱动程序
- [原创]WEBQQ,与QQ通信程序演示(开源)
- 通过内核对象在服务程序和桌面程序之间通信的小问题 good
- “拿来主义”——怎样嗅探一个串口通信程序与硬件之间的通信(二)