免费注册 查看新帖 |

Chinaunix

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

在内核空间实现用户空间进程的等待 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-23 09:51 |只看该作者 |倒序浏览
有很多网络应用程序中,需要用户空间和内核空间进行通讯.

这里讲一个简单的使用户空间进程在内核空间实现等待的方法:

可以在用户空间通过getpid方法来得到当前进程的pid,然后通过ioctl等方法把这个pid值传递到内核空间.如果用户空间有一个while(1)循环,那么将会很浪费系统资源.需要在适当的时候使其挂起.这个时候,用户空间传递进来的pid值就显得非常有用了.在sched.h中定义了一个find_task_by_pid宏,通过这个宏,我们可以获得响应的task_struct结构体;有了这个任务的结构体,实现其挂起的操作就很简单了--只要用wait_queue就可以实现了.如果wait_queue的实现还不会的话,就去google搜索一下就可以了,不过可能搜索到的都是较低版本内核的wait_queue的实现.其实高版本的也没有什么区别,只是做了稍微的修改而已.

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/35053/showart_365802.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP