10/05/2018 22:26, Stephen Hemminger: > On Wed, 9 May 2018 11:43:32 +0200 > Thomas Monjalon <tho...@monjalon.net> wrote: > > > - RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > > + if (port_id >= RTE_MAX_ETHPORTS || ethdev->data->name[0] == '\0') { > > Since name being empty now has significance, why not introduce an macro or > inline function > to make the test. Also, static checkers don't like pointers which maybe > outside valid > range (sometimes). > > static inline bool rte_ethdev_is_unused(const struct rte_ethdev *ethdev) > { > return ethdev->data->name[0] == '\0'; > } > > #define RTE_ETH_UNUSED_OR_ERR_RET(ethdev, retval) do { \ > if (!rte_ethdev_is_unused(ethdev)) { \ > RTE_PMD_DEBUG_TRACE("Port already in use=%d\n", > ethdev->port_id); \ > return retval; \ > } } while(0)
Yes we can have a static function for this check. The name should be "ethdev_is_allocated".