X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Flibrte_eal%2Fcommon%2Finclude%2Frte_vdev.h;h=29f5a52309ac274dc3ac5e15a2d5b5c03726d8bd;hb=8d39d3e237c29a9eef6b6c3b57982ca7e7077642;hp=8f98372e830123f9a0d9a8f6a8166a68ce17f0a1;hpb=6e051f50c9f506e9adcfd7b4cf90cff17137d848;p=dpdk.git diff --git a/lib/librte_eal/common/include/rte_vdev.h b/lib/librte_eal/common/include/rte_vdev.h index 8f98372e83..29f5a52309 100644 --- a/lib/librte_eal/common/include/rte_vdev.h +++ b/lib/librte_eal/common/include/rte_vdev.h @@ -39,24 +39,48 @@ extern "C" { #include #include +#include struct rte_vdev_device { TAILQ_ENTRY(rte_vdev_device) next; /**< Next attached vdev */ struct rte_device device; /**< Inherit core device */ }; +/** + * @internal + * Helper macro for drivers that need to convert to struct rte_vdev_device. + */ +#define RTE_DEV_TO_VDEV(ptr) \ + container_of(ptr, struct rte_vdev_device, device) + +static inline const char * +rte_vdev_device_name(const struct rte_vdev_device *dev) +{ + if (dev && dev->device.name) + return dev->device.name; + return NULL; +} + +static inline const char * +rte_vdev_device_args(const struct rte_vdev_device *dev) +{ + if (dev && dev->device.devargs) + return dev->device.devargs->args; + return ""; +} + /** Double linked list of virtual device drivers. */ TAILQ_HEAD(vdev_driver_list, rte_vdev_driver); /** * Probe function called for each virtual device driver once. */ -typedef int (rte_vdev_probe_t)(const char *name, const char *args); +typedef int (rte_vdev_probe_t)(struct rte_vdev_device *dev); /** * Remove function called for each virtual device driver once. */ -typedef int (rte_vdev_remove_t)(const char *name); +typedef int (rte_vdev_remove_t)(struct rte_vdev_device *dev); /** * A virtual device driver abstraction. @@ -75,7 +99,7 @@ struct rte_vdev_driver { * A pointer to a rte_vdev_driver structure describing the driver * to be registered. */ -void rte_eal_vdrv_register(struct rte_vdev_driver *driver); +void rte_vdev_register(struct rte_vdev_driver *driver); /** * Unregister a virtual device driver. @@ -84,7 +108,7 @@ void rte_eal_vdrv_register(struct rte_vdev_driver *driver); * A pointer to a rte_vdev_driver structure describing the driver * to be unregistered. */ -void rte_eal_vdrv_unregister(struct rte_vdev_driver *driver); +void rte_vdev_unregister(struct rte_vdev_driver *driver); #define RTE_PMD_REGISTER_VDEV(nm, vdrv)\ RTE_INIT(vdrvinitfn_ ##vdrv);\ @@ -93,7 +117,7 @@ static void vdrvinitfn_ ##vdrv(void)\ {\ (vdrv).driver.name = RTE_STR(nm);\ (vdrv).driver.alias = vdrvinit_ ## nm ## _alias;\ - rte_eal_vdrv_register(&vdrv);\ + rte_vdev_register(&vdrv);\ } \ RTE_PMD_EXPORT_NAME(nm, __COUNTER__)