RHK*_*RHK 10 macos iokit kernel-extension launch-daemon mach
在KEXT中,我通过vnode或文件范围监听器监听文件关闭.对于某些(极少数)文件,我需要将文件路径发送到我的系统守护程序,该守护程序执行一些处理(这必须在守护程序中发生)并将结果返回给KEXT.需要阻止文件关闭调用,直到我从守护程序获得响应.根据结果我需要在close调用中进行一些操作并成功返回close调用.论坛上有很多关于KEXT通信相关主题的讨论.但它们并不具有决定性,而且看起来很老(2002年左右).此要求可以由FtlSendMessage(...)Win32 API 处理.我在Mac上寻找相同的东西
以下是我所看到的并希望总结我的理解:
mach_msg,mach_port_allocate,bootstrap_look_up)并不显得关键绩效指标.mach_msg_send_from_kernel可以使用mach API ,但仅此一点对双向通信没有帮助.我的理解是对的吗?ioctl/sysctl:我对他们了解不多.根据我的阅读,它不推荐使用,特别是对于双向通信支持的平台是(10.5以后).所以看看这个要求,有人可以建议并提供一些关于这个主题的指示吗?
提前致谢.
小智 4
我用于该进程的模式是让用户空间进程启动到 KEXT 的套接字连接;KEXT 创建一个新线程来处理该套接字上的消息并休眠该线程。当 KEXT 检测到需要响应的事件时,它会唤醒消息传递线程并使用现有套接字将数据发送到守护程序。收到响应后,控制权将传递回请求线程以决定是否否决该操作。
我不知道有任何单一资源可以完整地描述整个模式,但相关的 KPI 在Mac OS X Internals(看起来很旧,但自编写以来 KPI 没有太大变化)和OS X 中讨论iOS 内核编程(我是其中的技术评论员)。
| 归档时间: |
|
| 查看次数: |
3112 次 |
| 最近记录: |