| 1418 | } |
| 1419 | |
| 1420 | struct rte_mempool * |
| 1421 | rte_event_vector_pool_create(const char *name, unsigned int n, |
| 1422 | unsigned int cache_size, uint16_t nb_elem, |
| 1423 | int socket_id) |
| 1424 | { |
| 1425 | const char *mp_ops_name; |
| 1426 | struct rte_mempool *mp; |
| 1427 | unsigned int elt_sz; |
| 1428 | int ret; |
| 1429 | |
| 1430 | if (!nb_elem) { |
| 1431 | RTE_EDEV_LOG_ERR("Invalid number of elements=%d requested", |
| 1432 | nb_elem); |
| 1433 | rte_errno = EINVAL; |
| 1434 | return NULL; |
| 1435 | } |
| 1436 | |
| 1437 | elt_sz = |
| 1438 | sizeof(struct rte_event_vector) + (nb_elem * sizeof(uintptr_t)); |
| 1439 | mp = rte_mempool_create_empty(name, n, elt_sz, cache_size, 0, socket_id, |
| 1440 | 0); |
| 1441 | if (mp == NULL) |
| 1442 | return NULL; |
| 1443 | |
| 1444 | mp_ops_name = rte_mbuf_best_mempool_ops(); |
| 1445 | ret = rte_mempool_set_ops_byname(mp, mp_ops_name, NULL); |
| 1446 | if (ret != 0) { |
| 1447 | RTE_EDEV_LOG_ERR("error setting mempool handler"); |
| 1448 | goto err; |
| 1449 | } |
| 1450 | |
| 1451 | ret = rte_mempool_populate_default(mp); |
| 1452 | if (ret < 0) |
| 1453 | goto err; |
| 1454 | |
| 1455 | rte_eventdev_trace_vector_pool_create(mp, mp->name, mp->socket_id, |
| 1456 | mp->size, mp->cache_size, mp->elt_size); |
| 1457 | |
| 1458 | return mp; |
| 1459 | err: |
| 1460 | rte_mempool_free(mp); |
| 1461 | rte_errno = -ret; |
| 1462 | return NULL; |
| 1463 | } |
| 1464 | |
| 1465 | int |
| 1466 | rte_event_dev_start(uint8_t dev_id) |