Am 06.07.2012 um 17:33 schrieb Arnaud Lacombe:

> I assume you are talking about devclass_get_device()/device_find_child().
> 
> That's neither correct nor robust in a couple of way:
> 1) you have no guarantee a device unit will always give you the same resource.
> 2) there is no reference counting on the returned device.
> 3) there is no track record of the reference being given.
> 
> About (1), lower unit devices can fails to attach[0], thus newly
> attached bus will now have a negative offset.
> 
> About (2) and (3), referenced device (think KLD) might go away and the
> child will not be told. In this situation, I want the child to be
> detached prior to its parent.
> 
> As such, looking up other node by name would fit in what I call
> "bypassing newbus purpose". I might just as well export a damn
> function pointer and make my life easier.

I believe there is one more thing that needs to be addressed, which I ran into 
while trying to do the arge/mdio attachment:

4) the device attach method may require access to the other device to complete 
the attachment, but that other might not be attached yet.

Circular dependencies nonwithstanding, it would be highly desirable for a 
device driver developer to be able to simply declare all prerequisites for 
attachment, and have newbus call attach only after everything is there. Right 
now, the drivers attach method is called by the parent bus as soon as 
enumeration is completed.

A notification mechanism (similar to the devfs notification but with an exposed 
KPI) might be an alternative, as mentioned in this thread.


Stefan

-- 
Stefan Bethke <s...@lassitu.de>   Fon +49 151 14070811



_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to