免费注册 查看新帖 |

Chinaunix

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

linux 内核函数调用用户自定义的函数是否可行? [复制链接]

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-15 20:54 |只看该作者 |倒序浏览
想在内核中调用用户自定义的函数是否可行?即通过函数调用实现内核态到用户态的切换,然后再切换回内核态。如果不行的话,怎么才能实现用户态到内核态再到用户态的一个执行流程,这个流程应该是个顺序关系,即同步的。
比如说内核中有个函数a, 用户自定义了个函数b ,达到的效果是:
a函数执行到某一点或执行完后紧接着调用b,然后b执行完后,又能从a中的调用点开始执行。

论坛徽章:
0
2 [报告]
发表于 2010-12-15 23:51 |只看该作者
内核不能直接调用用户空间的函数。两者的堆栈不同。
但内核可以某个函数里拉起用户空间的程序。

有很多办法可以实现内核与用户空间进程的同步。但觉得你的描述怪怪的。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
3 [报告]
发表于 2010-12-16 08:54 |只看该作者
本帖最后由 liujunwei1234 于 2010-12-16 08:55 编辑

回复 2# linyunxian


    谢谢你的回答,我的意思是内核和用户空间的同步,即执行流程转到用户空间后,内核要等待用户空间的操作完成。就像你说的,内核某个函数执行用户空间的某个函数后,要等待这个程序执行完。
能给大体说一下有什么同步方式吗?关键是我自己现在也很混乱。

论坛徽章:
0
4 [报告]
发表于 2010-12-16 09:16 |只看该作者
一般内核空间等待某个用户进程任务完成,这个用户进程都会重新陷入内核(要不为什么要等待一个没有系统调用的进程完成?)。

另外,同步是指进程间的同步。你找一下内核进程间的同步方法就好了。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
5 [报告]
发表于 2010-12-16 10:12 |只看该作者
看一看内核态 执行驱动加载 还有 hotplug 时是怎么处理的,应该就是和你的需求差不多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP