是否有相当于 FreeBSD 的 make_dev() 函数的 OS X?
Posted
技术标签:
【中文标题】是否有相当于 FreeBSD 的 make_dev() 函数的 OS X?【英文标题】:Is there an OS X equivalent of FreeBSD's make_dev() function? 【发布时间】:2010-01-30 19:23:24 【问题描述】:我正在尝试将一些代码从 FreeBSD 移植到 OS X。该代码相当低级,它使用 make_dev()
创建许多特殊设备文件,并使用 ioctl()
等函数控制功能。
理想情况下,我希望我的代码尽可能接近原始代码,以便将来可以更轻松地合并上游更改:我的问题是,有没有办法在 OS X 上创建此类设备文件?根据wikipedia,该平台支持该成语。有人可以指出我正确的方向吗?
【问题讨论】:
您是在编写内核扩展,还是在移植用户态应用程序?你使用 mknod(2) 有什么问题? 我试图移植的源代码是一个内核扩展:如果我可以在用户空间工作,虽然我更愿意。似乎通过 IOKit 我可以获取我需要的实际设备数据,所以如果我可以在用户空间中创建与 /dev 中通过内核扩展创建的设备功能相同的特殊设备文件,那就没问题了。是这样的吗? 您找到/获得了 DVB 源代码吗? @tommieb75: 不,我没有,但我找到了一些我可以理解的 FreeBSD 代码,并准备进行移植。我宁愿避免编写内核扩展,但如果我想让我的代码靠近我正在使用的源代码,我似乎必须这样做。 好的...玩得开心移植,祝你好运;)我会密切关注你未来的帖子,因为我很想知道你的进展如何。跨度> 【参考方案1】:根据the docs,mknod
确实可以在 OS X 上运行。您遇到了什么问题?
【讨论】:
抱歉,这是一个仓促的编辑:我不确定 mknod 是否与 make_dev 做同样的事情...【参考方案2】:我想我已经回答了我自己的问题:执行此操作的函数似乎是 devfs_make_node()
。我找不到手册页,但它显示在一些示例代码 here 中。
【讨论】:
以上是关于是否有相当于 FreeBSD 的 make_dev() 函数的 OS X?的主要内容,如果未能解决你的问题,请参考以下文章
FreeBSD 为啥要废弃 GCC 改用 Clang/LLVM