On Wed, Apr 27, 2005 at 05:21:10PM -0400, Alan Stern wrote: > David's right. Why did kobject_hotplug() move out of kobject_add() and > into its callers sometime after 2.6.11? In particular the invocation in > device_add() is in the wrong place; it needs to come before > bus_add_device() starts probing for drivers. Otherwise, as David points > out, when the drivers start registering child devices from their probe > methods, the hotplug events for those child devices will appear before the > event for the parent. > > Alan Stern
But bus_add_device() calls device_add_attrs() to create attrs, if you call it after the hotplug, the user space hotplug event shows up before the sysfs attrs are created (if the driver is using the bus->dev_attrs field). I'd like to see device_add() split into two pieces, one component that initializes the struct device, and another to call the hotplug and the bus probe. And as Kay S. suggested, a new device_register() that is the functional equivalent of today's device_add(). For scsi, we can't easily use the dev_attrs, so this would allow attributes to be in place prior to the hotplug event (of the block device): device_add(), create a bunch of classes and attrs, then device_ready() [or wtf you want to name it]. PS: I haven't had time to generate patches :-( -- Patrick Mansfield ------------------------------------------------------- SF.Net email is sponsored by: Tell us your software development plans! Take this survey and enter to win a one-year sub to SourceForge.net Plus IDC's 2005 look-ahead and a copy of this survey Click here to start! http://www.idcswdc.com/cgi-bin/survey?id=105hix _______________________________________________ [email protected] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
