> Well, the device's kobject's name is set in
> drivers/base/core.c:device_add() by this line of code:
>
> kobject_set_name(&dev->kobj,dev->bus_id);
>
> device_add(), in turn, is called by usb_set_configuration (or maybe in
> your version of the code it's device_register(), which calls
> device_add()).
>
> That just pushes the problem back to where intf->dev->bus_id is set. It's
> also set in usb_set_configuration(), although there's no reason it
> couldn't be done earlier in config.c.
Thanks a lot. This is extremely problematic then: in usb_set_configuration,
an interface's device structure will not be completely initialized until we do
device_add (&intf->dev);
However device_add does probe(), which can claim other interfaces. These
interfaces may have uninitialized device structures because device_add has
not been called for them yet. I want usb_driver_claim_interface to call
device_bind_driver. But the above means that device_bind_driver may be
called with an uninitialized device structure (in practice, it is the NULL name
field that causes problems). It is a catch 22: if you initialize the interface with
device_add then you need to have already initialized all other interfaces with
device_add and that's not possible (unless there is only one interface).
What to do?
Duncan.
-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel