| 289 | } |
| 290 | |
| 291 | int |
| 292 | rte_ml_dev_close(int16_t dev_id) |
| 293 | { |
| 294 | struct rte_ml_dev *dev; |
| 295 | |
| 296 | if (!rte_ml_dev_is_valid_dev(dev_id)) { |
| 297 | RTE_MLDEV_LOG(ERR, "Invalid dev_id = %d", dev_id); |
| 298 | return -EINVAL; |
| 299 | } |
| 300 | |
| 301 | dev = rte_ml_dev_pmd_get_dev(dev_id); |
| 302 | if (*dev->dev_ops->dev_close == NULL) |
| 303 | return -ENOTSUP; |
| 304 | |
| 305 | /* Device must be stopped before it can be closed */ |
| 306 | if (dev->data->dev_started == 1) { |
| 307 | RTE_MLDEV_LOG(ERR, "Device %d must be stopped before closing", dev_id); |
| 308 | return -EBUSY; |
| 309 | } |
| 310 | |
| 311 | return (*dev->dev_ops->dev_close)(dev); |
| 312 | } |
| 313 | |
| 314 | int |
| 315 | rte_ml_dev_start(int16_t dev_id) |