Linux 内核文件系统与设备操作流程分析(12) // // 如果此字符设备结构无效,则从设备对象管理中查找 // kobj = kobj_lookup(cdev_map, inode->i_rdev, &idx); if (!kobj) return -ENXIO; new = container_of(kobj, struct cdev, kobj); spin_lock(&cdev_lock); // // 再次尝试获得正确的字符设备结构 // p = inode->i_cdev; if (!p) { inode->i_cdev = p = new; inode->i_cindex = idx; list_add(&inode->i_devices, &p->list); new = NULL; // // 使用 cdev_get() 函数判断相应设备结构的内核设备对象是否 // 有效 //