Messages in this thread | | | Date | Tue, 25 Sep 2012 23:13:43 +0800 | From | Lan Tianyu <> | Subject | Question about dev_uevent_filter |
| |
hi Greg: I find only devices which has bus_type or class can add uevent callback and output the uevent information. This is because the dev_uevent_filter just return true for these devices. But some device may not have class and bus_type. e.g usb endpoint, if we assigned them to usb_bus_type, device core will try to create sysfs directory link under /sys/bus/usb. But endpoint sysfs directory's name are same for each usb devices.e.g ep_00, every usb device will create the endpoint. So in this situation, we can't assign usb endpoint to usb_bus_type. So even if uevent callback was added and with some information, it still couldn't output anything. Can we add dev->type check in the dev_uevent_filter() and return 1 if type exits?
/drivers/base/core.c static int dev_uevent_filter(struct kset *kset, struct kobject *kobj) { struct kobj_type *ktype = get_ktype(kobj);
if (ktype == &device_ktype) { struct device *dev = kobj_to_dev(kobj); if (dev->bus) return 1; if (dev->class) return 1; } return 0; }
Thanks -- Best regards Tianyu Lan
| |