内核设备驱动API之device_rename
2018-03-23 16:32
615 查看
int device_rename(struct device *dev, const char *new_name)用于给已经存在设备重新命令。 其源码分析如下: int device_rename(struct device *dev, const char *new_name) { struct kobject *kobj = &dev->kobj; char *old_device_name = NULL; int error; #获得需要改名的设备 dev = get_device(dev); if (!dev) return -EINVAL; #打印改名后新的名字 dev_dbg(dev, "renaming to %s\n", new_name); #获得这个逻辑设备老的name old_device_name = kstrdup(dev_name(dev), GFP_KERNEL); #如果这个设备本来就没有name,改名就没有必要了,直接退出 if (!old_device_name) { error = -ENOMEM; goto out; } #修改这个device在sysfs下的name if (dev->class) { error = sysfs_rename_link_ns(&dev->class->p->subsys.kobj, kobj, old_device_name, new_name, kobject_namespace(kobj)); if (error) goto out; } #修改sysfs的name后,然后才修改这个设备kobject的name error = kobject_rename(kobj, new_name); if (error) goto out; out: #和get_device相对应 put_device(dev); #释放之前为设备老的name申请的memory kfree(old_device_name); return error; }
相关文章推荐
- 内核设备驱动API之device_add
- 内核设备驱动API之get_device和put_device
- 程序实现启用/禁用设备(驱动)enable/disable device with windows api
- Linux内核部件分析--设备驱动模型之device
- 程序实现启用/禁用设备(驱动)enable/disable device with windows api
- 内核设备驱动API之register_chrdev
- Linux内核部件分析--设备驱动模型之device-driver
- 程序实现启用/禁用设备(驱动)enable/disable device with windows api
- linux内核部件分析(九)——设备驱动模型之device-driver
- 内核设备驱动API之cdev_add
- 内核设备驱动API之__register_chrdev_region
- Linux内核部件分析--设备驱动模型之device
- Linux 内核设备驱动之GPIO驱动之GPIO API
- linux内核部件分析之----设备驱动模型之device
- Linux内核部件分析 设备驱动模型之device-driver
- IoEnumerateDeviceObjectList 枚举驱动的所有设备 文件过滤驱动 windows内核开发
- IoEnumerateDeviceObjectList 枚举驱动的所有设备 文件过滤驱动 windows内核开发
- Linux内核部件分析 设备驱动模型之device
- linux内核部件分析(六)——设备驱动模型之device
- 内核设备驱动API之__class_create