* @internal * Allocates a new ethdev slot for an Ethernet device and returns the pointer * to that slot for the driver to use. * * @param dev * Pointer to virtual device * * @param private_data_size * Size of private data structure * * @return * A pointer to a rte_eth_dev or NULL if allocation failed. */
| 30 | * A pointer to a rte_eth_dev or NULL if allocation failed. |
| 31 | */ |
| 32 | static inline struct rte_eth_dev * |
| 33 | rte_eth_vdev_allocate(struct rte_vdev_device *dev, size_t private_data_size) |
| 34 | { |
| 35 | struct rte_eth_dev *eth_dev; |
| 36 | const char *name = rte_vdev_device_name(dev); |
| 37 | |
| 38 | eth_dev = rte_eth_dev_allocate(name); |
| 39 | if (!eth_dev) |
| 40 | return NULL; |
| 41 | |
| 42 | if (private_data_size) { |
| 43 | eth_dev->data->dev_private = rte_zmalloc_socket(name, |
| 44 | private_data_size, RTE_CACHE_LINE_SIZE, |
| 45 | dev->device.numa_node); |
| 46 | if (!eth_dev->data->dev_private) { |
| 47 | rte_eth_dev_release_port(eth_dev); |
| 48 | return NULL; |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | eth_dev->device = &dev->device; |
| 53 | eth_dev->intr_handle = NULL; |
| 54 | |
| 55 | eth_dev->data->numa_node = dev->device.numa_node; |
| 56 | return eth_dev; |
| 57 | } |
| 58 | |
| 59 | #ifdef __cplusplus |
| 60 | } |
no test coverage detected