linux kernel从 2.6 到 3.0 3.4 ... devfs已经被抛弃。 kernel交互的方式有 sysfs procfs 还有就是/dev下的节点, 这些节点是如何被创建出来的呢。
研究了半天,在kernel device_create代码看了遍,也只是发现创建了一堆sysfs节点和一些link。
最后才发现是用户空间创建的。 android系统在
system/core/init/ueventd.c
if (ufds[0].revents == POLLIN)
handle_device_fd(device_fd);
system/core/init/devices.c: handle_device_event->make_device
通过接收uevent来动态添加/dev下节点
对于 linux pc 是采用udev来代替早期的devfs 在一个守护进程中实现/dev下节点的动态添加。
嵌入式linux中,busybox继承了一个简化版的udev,叫mdev。