| 499 | } |
| 500 | |
| 501 | struct rte_rawdev * |
| 502 | rte_rawdev_pmd_allocate(const char *name, size_t dev_priv_size, int socket_id) |
| 503 | { |
| 504 | struct rte_rawdev *rawdev; |
| 505 | uint16_t dev_id; |
| 506 | |
| 507 | if (rte_rawdev_pmd_get_named_dev(name) != NULL) { |
| 508 | RTE_RDEV_ERR("Raw device with name %s already allocated!", name); |
| 509 | return NULL; |
| 510 | } |
| 511 | |
| 512 | dev_id = rte_rawdev_find_free_device_index(); |
| 513 | if (dev_id == RTE_RAWDEV_MAX_DEVS) { |
| 514 | RTE_RDEV_ERR("Reached maximum number of raw devices"); |
| 515 | return NULL; |
| 516 | } |
| 517 | |
| 518 | rawdev = &rte_rawdevs[dev_id]; |
| 519 | |
| 520 | if (dev_priv_size > 0) { |
| 521 | rawdev->dev_private = rte_zmalloc_socket("rawdev private", |
| 522 | dev_priv_size, |
| 523 | RTE_CACHE_LINE_SIZE, |
| 524 | socket_id); |
| 525 | if (!rawdev->dev_private) { |
| 526 | RTE_RDEV_ERR("Unable to allocate memory for rawdev"); |
| 527 | return NULL; |
| 528 | } |
| 529 | } |
| 530 | |
| 531 | rawdev->dev_id = dev_id; |
| 532 | rawdev->socket_id = socket_id; |
| 533 | rawdev->started = 0; |
| 534 | strlcpy(rawdev->name, name, RTE_RAWDEV_NAME_MAX_LEN); |
| 535 | |
| 536 | rawdev->attached = RTE_RAWDEV_ATTACHED; |
| 537 | rawdev_globals.nb_devs++; |
| 538 | |
| 539 | return rawdev; |
| 540 | } |
| 541 | |
| 542 | int |
| 543 | rte_rawdev_pmd_release(struct rte_rawdev *rawdev) |
no test coverage detected