android 系统下/dev下的设备节点是通过守护进程ueventd负责。
路径:/system/core/init devices.cpp
static void handle_device(const char *action, const char *devpath,
const char *path, int block, int major, int minor, char **links)
{
int i;
if(!strcmp(action, "add")) { //usb出入
make_device(devpath, path, block, major, minor, (const char **)links);
if (links) {
for (i = 0; links[i]; i++)
make_link_init(devpath, links[i]); // 创建链接
}
}
if(!strcmp(action, "remove")) { //usb拔出,删除链接
if (links) {
for (i = 0; links[i]; i++)
remove_link(devpath, links[i]);
}
unlink(devpath);
}
if (links) {
for (i = 0; links[i]; i++)
free(links[i]);
free(links);
}
}
其中函数make_link_init 创建对应节点的软连接。