Can we hook a device as device to two different parent devices?

Warner Losh imp at bsdimp.com
Wed Jun 3 15:29:20 UTC 2020


On Wed, Jun 3, 2020, 8:29 AM Andriy Gapon <avg at freebsd.org> wrote:

> On 03/06/2020 14:20, Rajesh Kumar wrote:
> > Hi,
> >
> > Is it really possible to declare a module with two parents? Like the
> > following declarations in the same driver.
> >
> > devclass_t test_dev_devclass;
> > static DEFINE_CLASS_0(test_dev, test_dev_driver, test_dev_methods,
> > sizeof(struct test_dev_ctx));
> > DRIVER_MODULE(test_dev, *device1*, test_dev_driver, test_dev_devclass,
> > NULL, NULL);
> > DRIVER_MODULE(test_dev, *device2*, test_dev_driver, test_dev_devclass,
> > NULL, NULL);
> >
> > I see similar references in other drivers attaching to both simpleus and
> > ofwbus. So, If it's possible, how to get the reference for both the
> > parents?  device_get_parent(test_dev) will give reference of one parent
> > only right, so how to get the reference of the desired parent?
>
> A device can have only one parent.
> The declaration you quoted describes a _driver_ that can attach to devices
> hanging off two different buses.  They would still be different devices.
>

Yes. You can have a driver attach to multiple bus types, but each instance
has a unique parent one exactly on of them.

If you need to talk to other devices, you'll need to find them by name or
other means.

Warner



> --
> Andriy Gapon
> _______________________________________________
> freebsd-drivers at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-drivers
> To unsubscribe, send any mail to "freebsd-drivers-unsubscribe at freebsd.org"
>


More information about the freebsd-drivers mailing list