07/04/2026 13:52, David Marchand: > Each bus reimplements some similar devargs lookup code. > > The differences are in how some bus (PCI, VMBUS etc...) normalizes the > device names. We can't use the .parse existing handler from outside the > bus code itself, as the size of the bus specific device location address > is unknown. > Introduce a bus specific helper to compare two device names and > hide this ugly detail.
I agree with introducing a new bus helper. [...] > + /* The name in the devargs is usually prefixed with <bus>: */ Is it usually prefixed or always prefixed? > + if (strncmp(devargs_name, bus_name, strlen(bus_name)) == 0) > + devargs_name += strlen(bus_name) + 1; If I understand well, if it is prefixed with bus name, it is assumed that a colon character will follow. [...] > +/** > + * Bus specific device name comparison function. > + * Bus can normalize the names of devices using an internal representation. > + * This helper makes it possible to check whether two names refer to the > same device. > + * > + * @param[in] name1 > + * device name > + * @param[in] name2 > + * device name > + * > + * @return > + * 0 if the two names refer to the same device. > + * !0 otherwise. > + */ > +typedef int (*rte_bus_devname_compare_t)(const char *name1, const char > *name2); The helper compares internal representation of the device, not the names. The function should be rte_bus_dev_compare_t.

