return -EINVAL;
}
+ dbg("mknod(%s, %#o, %u, %u)", filename, mode, major, minor);
retval = mknod(filename,mode,makedev(major,minor));
if (retval)
dbg("mknod(%s, %#o, %u, %u) failed with error '%s'",
retval = get_major_minor(class_dev, &major, &minor);
if (retval) {
- dbg ("get_major_minor failed");
+ dbg("get_major_minor failed");
goto exit;
}
- memset(&dbdev, 0, sizeof(dbdev));
- strncpy(dbdev.name, attr.name, NAME_SIZE);
- strncpy(dbdev.sysfs_path, class_dev->sysdevice->directory->path,
- PATH_SIZE);
- strncpy(dbdev.class_dev_name, class_dev->name, NAME_SIZE);
- if ((sysfs_get_name_from_path(subsystem, dbdev.class_name, NAME_SIZE))
- != 0)
- strcpy(dbdev.class_name, "unkown");
- strncpy(dbdev.bus_id, class_dev->sysdevice->bus_id, ID_SIZE);
- strcpy(dbdev.bus_name, "unknown");
- if (class_dev->driver != NULL)
- strncpy(dbdev.driver, class_dev->driver->name, NAME_SIZE);
- else
- strcpy(dbdev.driver, "unkown");
- dbdev.type = type;
- dbdev.major = major;
- dbdev.minor = minor;
- dbdev.mode = attr.mode;
- sysfs_close_class_device(class_dev);
+ retval = udevdb_add_device(device, class_dev, attr.name, type, major, minor, attr.mode);
- retval = udevdb_add_udevice(&dbdev);
if (retval != 0)
- goto exit;
+ dbg("udevdb_add_device failed, but we are going to try to create the node anyway. "
+ "But remove might not work properly for this device.");
+
+ sysfs_close_class_device(class_dev);
return create_node(attr.name, type, major, minor, attr.mode);