There is no reason for the DPDK libraries to all have 'librte_' prefix on the directory names. This prefix makes the directory names longer and also makes it awkward to add features referring to individual libraries in the build - should the lib names be specified with or without the prefix. Therefore, we can just remove the library prefix and use the library's unique name as the directory name, i.e. 'eal' rather than 'librte_eal' Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
109 lines
2.1 KiB
C
109 lines
2.1 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2016-2017 Cavium, Inc
|
|
*/
|
|
|
|
#ifndef _RTE_EVENTDEV_PMD_VDEV_H_
|
|
#define _RTE_EVENTDEV_PMD_VDEV_H_
|
|
|
|
/** @file
|
|
* RTE Eventdev VDEV PMD APIs
|
|
*
|
|
* @note
|
|
* These API are from event VDEV PMD only and user applications should not call
|
|
* them directly.
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <string.h>
|
|
|
|
#include <rte_config.h>
|
|
#include <rte_debug.h>
|
|
#include <rte_eal.h>
|
|
#include <rte_bus_vdev.h>
|
|
|
|
#include "eventdev_pmd.h"
|
|
|
|
/**
|
|
* @internal
|
|
* Creates a new virtual event device and returns the pointer to that device.
|
|
*
|
|
* @param name
|
|
* PMD type name
|
|
* @param dev_private_size
|
|
* Size of event PMDs private data
|
|
* @param socket_id
|
|
* Socket to allocate resources on.
|
|
*
|
|
* @return
|
|
* - Eventdev pointer if device is successfully created.
|
|
* - NULL if device cannot be created.
|
|
*/
|
|
static inline struct rte_eventdev *
|
|
rte_event_pmd_vdev_init(const char *name, size_t dev_private_size,
|
|
int socket_id)
|
|
{
|
|
|
|
struct rte_eventdev *eventdev;
|
|
|
|
/* Allocate device structure */
|
|
eventdev = rte_event_pmd_allocate(name, socket_id);
|
|
if (eventdev == NULL)
|
|
return NULL;
|
|
|
|
/* Allocate private device structure */
|
|
if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
|
|
eventdev->data->dev_private =
|
|
rte_zmalloc_socket("eventdev device private",
|
|
dev_private_size,
|
|
RTE_CACHE_LINE_SIZE,
|
|
socket_id);
|
|
|
|
if (eventdev->data->dev_private == NULL)
|
|
rte_panic("Cannot allocate memzone for private device"
|
|
" data");
|
|
}
|
|
|
|
return eventdev;
|
|
}
|
|
|
|
/**
|
|
* @internal
|
|
* Destroy the given virtual event device
|
|
*
|
|
* @param name
|
|
* PMD type name
|
|
* @return
|
|
* - 0 on success, negative on error
|
|
*/
|
|
static inline int
|
|
rte_event_pmd_vdev_uninit(const char *name)
|
|
{
|
|
int ret;
|
|
struct rte_eventdev *eventdev;
|
|
|
|
if (name == NULL)
|
|
return -EINVAL;
|
|
|
|
eventdev = rte_event_pmd_get_named_dev(name);
|
|
if (eventdev == NULL)
|
|
return -ENODEV;
|
|
|
|
ret = rte_event_dev_close(eventdev->data->dev_id);
|
|
if (ret < 0)
|
|
return ret;
|
|
|
|
/* Free the event device */
|
|
rte_event_pmd_release(eventdev);
|
|
|
|
return 0;
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _RTE_EVENTDEV_PMD_VDEV_H_ */
|