免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2843 | 回复: 4
打印 上一主题 下一主题

如何从内核态发送一个信号到用户态 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-01 15:35 |只看该作者 |倒序浏览
内容描述:
硬件设备产生中断,在驱动中,写了中断处理程序.
但是,现在我需要把这个中断信号传递给我的应用程序(用户态).
如何实现?
谢谢!:em12:

论坛徽章:
0
2 [报告]
发表于 2006-11-01 15:55 |只看该作者
3年1贴,岂能不回。
你说的“中断信号”是个电平信号, 而Unix信号是一种进程/进程 进程/内核间通信机制, 二者完全不同。 如果是后者, 试试kill_proc?

论坛徽章:
0
3 [报告]
发表于 2006-11-02 08:23 |只看该作者

是这样,硬件中断在内核下有一个中断处理程序,这个是硬中断,当然通过驱动编写了中断的上下部.在中断处理程序的上半部或者下半部中,如何发送一个信号量signal到用户态....
我看了一些相关的资料,一般都是在read或者write中使用kill_fasync(),在中断处理函数中如何使用?因为需要传递设备和文件表述符作为参数..

嘿嘿,三年一贴,只是水平太洼,登不得大雅之堂....

谢谢!

论坛徽章:
0
4 [报告]
发表于 2006-11-17 08:31 |只看该作者

回复 3楼 webycn 的帖子

在中断处理的下半部分中可以使用tasklet机制,在tasklet的注册函数中使用kill_proc向用户程序进程发消息。用户程序进程的id可以通过ioctl传给驱动程序。

论坛徽章:
0
5 [报告]
发表于 2006-11-17 09:59 |只看该作者
看一下LDD3的 6.4. Asynchronous Notification

int fasync_helper(int fd, struct file *filp,

       int mode, struct fasync_struct **fa);

void kill_fasync(struct fasync_struct **fa, int sig, int band);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP