什么是OSX上类似udev的东西,它是如何工作的?

时间:2014-11-13 23:23:04

标签: macos serial-port kernel device-driver udev

如果我将USB串行适配器插入我的Mac,则会在/ dev中显示一个新设备,例如/dev/tty.usbmodem1421或/dev/tty.usbserial-A7048O1O。

如果这是Linux,我会寻找一个udev规则来解释设备名称的来源以及它的创建原因。

但这是OSX。如何在Mac上分配设备名称(例如为什么设备名称中有趣的数字),以及哪一段代码可以做到?

2 个答案:

答案 0 :(得分:1)

Mac OS X中的设备名称(如果存在)由相关的特定驱动程序分配。没有涉及单一机制,特别是因为大多数类设备根本不在/dev中获取节点。

对于FTDI设备,有趣的数字"在设备名称中是FTDI芯片的序列号。这个逻辑是FTDI驱动程序的内部结构,遗憾的是,它不是开源的,因此我无法指出所涉及的代码。 :(

顺便说一句,您可以使用ft232r_prog更改FTDI设备的序列号。

答案 1 :(得分:0)

关于Linux的一些评论:

如果这是Linux,我会寻找一条udev规则,该规则说明设备名称的来源以及创建原因。

严格来讲,udev不再负责创建主要条目。早在2004年,当udev诞生时,就大力推动将所有内容移至用户空间,以便我们可以正确地编写所有脚本。 /dev曾经是udev填充的 tmpfs (在磁盘上的常规目录之前,所有设备节点都已预先填充,通常由名为MAKEDEV的脚本填充)

抛出udev的第一个迭代时,我们有一个伪文件系统(例如proc或sysfs) devfs ,但是不允许修改条目。条目的名称由内核和装入其中的驱动程序确定。那时我已经建议(搜索邮件列表)使用tmpfs和devfs的混合体,并且只做必要的修改,但要让内核负责这些条目(当时它被击落了)。瞧,几年后,我们得到了 devtmpfs