【发布时间】:2012-05-26 03:18:52
【问题描述】:
观察到有vn_xxx api对文件进行操作,例如vn_rdwr(...)。从网上搜索,似乎不建议使用 vn_rdwr(...) 。
几乎没有相同的查询:
- 此 vn_xxx api 在 Mac OS X 版本之间是否不兼容?
- 使用它不安全吗?有没有可以参考的例子来看看 vn_rdwr 是如何使用的?
- 除了将文件 I/O 委托给守护程序之外,还有其他选择吗?
如果有人能提供 cmets\suggestion 就好了?
【问题讨论】:
-
我无法从这些函数的经验中谈起,但请注意,它们中的大多数是 not 在
#ifdef KERNEL_PRIVATE块内声明的,因此它们的 API 不应向后更改- 版本之间不兼容的方式。使用测试 kext 进行快速检查应该会告诉您 kexts 是否确实可以链接到它们。由于我没有使用它们,我无法评论您是否应该。但是,我看到的所有文档都特别建议不要使用基于内核的文件 I/O。我怀疑这是出于线程安全的考虑 - 如果您必须调用它们,我建议您从专用线程中调用。
标签: macos bsd kernel-extension