| 1538 | } |
| 1539 | |
| 1540 | int |
| 1541 | rte_event_dev_close(uint8_t dev_id) |
| 1542 | { |
| 1543 | struct rte_eventdev *dev; |
| 1544 | |
| 1545 | RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); |
| 1546 | dev = &rte_eventdevs[dev_id]; |
| 1547 | if (*dev->dev_ops->dev_close == NULL) |
| 1548 | return -ENOTSUP; |
| 1549 | |
| 1550 | /* Device must be stopped before it can be closed */ |
| 1551 | if (dev->data->dev_started == 1) { |
| 1552 | RTE_EDEV_LOG_ERR("Device %u must be stopped before closing", |
| 1553 | dev_id); |
| 1554 | return -EBUSY; |
| 1555 | } |
| 1556 | |
| 1557 | event_dev_fp_ops_reset(rte_event_fp_ops + dev_id); |
| 1558 | rte_eventdev_trace_close(dev_id); |
| 1559 | return (*dev->dev_ops->dev_close)(dev); |
| 1560 | } |
| 1561 | |
| 1562 | static inline int |
| 1563 | eventdev_data_alloc(uint8_t dev_id, struct rte_eventdev_data **data, |