bus/vdev: implement device iteration
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
This commit is contained in:
parent
4410c1b0c0
commit
ac91bc493c
@ -19,8 +19,9 @@ EXPORT_MAP := rte_bus_vdev_version.map
|
||||
LIBABIVER := 1
|
||||
|
||||
SRCS-y += vdev.c
|
||||
SRCS-y += vdev_params.c
|
||||
|
||||
LDLIBS += -lrte_eal
|
||||
LDLIBS += -lrte_eal -lrte_kvargs
|
||||
|
||||
#
|
||||
# Export include files
|
||||
|
@ -1,7 +1,10 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2017 Intel Corporation
|
||||
|
||||
sources = files('vdev.c')
|
||||
sources = files('vdev.c',
|
||||
'vdev_params.c')
|
||||
install_headers('rte_bus_vdev.h')
|
||||
|
||||
allow_experimental_apis = true
|
||||
|
||||
deps += ['kvargs']
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
#include "rte_bus_vdev.h"
|
||||
#include "vdev_logs.h"
|
||||
#include "vdev_private.h"
|
||||
|
||||
#define VDEV_MP_KEY "bus_vdev_mp"
|
||||
|
||||
@ -497,9 +498,9 @@ vdev_probe(void)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct rte_device *
|
||||
vdev_find_device(const struct rte_device *start, rte_dev_cmp_t cmp,
|
||||
const void *data)
|
||||
struct rte_device *
|
||||
rte_vdev_find_device(const struct rte_device *start, rte_dev_cmp_t cmp,
|
||||
const void *data)
|
||||
{
|
||||
const struct rte_vdev_device *vstart;
|
||||
struct rte_vdev_device *dev;
|
||||
@ -536,10 +537,11 @@ vdev_unplug(struct rte_device *dev)
|
||||
static struct rte_bus rte_vdev_bus = {
|
||||
.scan = vdev_scan,
|
||||
.probe = vdev_probe,
|
||||
.find_device = vdev_find_device,
|
||||
.find_device = rte_vdev_find_device,
|
||||
.plug = vdev_plug,
|
||||
.unplug = vdev_unplug,
|
||||
.parse = vdev_parse,
|
||||
.dev_iterate = rte_vdev_dev_iterate,
|
||||
};
|
||||
|
||||
RTE_REGISTER_BUS(vdev, rte_vdev_bus);
|
||||
|
51
drivers/bus/vdev/vdev_params.c
Normal file
51
drivers/bus/vdev/vdev_params.c
Normal file
@ -0,0 +1,51 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright 2018 Gaëtan Rivet
|
||||
*/
|
||||
|
||||
#include <rte_dev.h>
|
||||
#include <rte_bus.h>
|
||||
#include <rte_kvargs.h>
|
||||
#include <rte_errno.h>
|
||||
|
||||
#include "vdev_logs.h"
|
||||
#include "vdev_private.h"
|
||||
|
||||
enum vdev_params {
|
||||
RTE_VDEV_PARAMS_MAX,
|
||||
};
|
||||
|
||||
static const char * const vdev_params_keys[] = {
|
||||
[RTE_VDEV_PARAMS_MAX] = NULL,
|
||||
};
|
||||
|
||||
static int
|
||||
vdev_dev_match(const struct rte_device *dev,
|
||||
const void *_kvlist)
|
||||
{
|
||||
const struct rte_kvargs *kvlist = _kvlist;
|
||||
|
||||
(void) kvlist;
|
||||
(void) dev;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *
|
||||
rte_vdev_dev_iterate(const void *start,
|
||||
const char *str,
|
||||
const struct rte_dev_iterator *it __rte_unused)
|
||||
{
|
||||
struct rte_kvargs *kvargs = NULL;
|
||||
struct rte_device *dev;
|
||||
|
||||
if (str != NULL) {
|
||||
kvargs = rte_kvargs_parse(str, vdev_params_keys);
|
||||
if (kvargs == NULL) {
|
||||
VDEV_LOG(ERR, "cannot parse argument list\n");
|
||||
rte_errno = EINVAL;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
dev = rte_vdev_find_device(start, vdev_dev_match, kvargs);
|
||||
rte_kvargs_free(kvargs);
|
||||
return dev;
|
||||
}
|
26
drivers/bus/vdev/vdev_private.h
Normal file
26
drivers/bus/vdev/vdev_private.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright 2018 Gaëtan Rivet
|
||||
*/
|
||||
|
||||
#ifndef _VDEV_PRIVATE_H_
|
||||
#define _VDEV_PRIVATE_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct rte_device *
|
||||
rte_vdev_find_device(const struct rte_device *start,
|
||||
rte_dev_cmp_t cmp,
|
||||
const void *data);
|
||||
|
||||
void *
|
||||
rte_vdev_dev_iterate(const void *start,
|
||||
const char *str,
|
||||
const struct rte_dev_iterator *it);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _VDEV_PRIVATE_H_ */
|
Loading…
Reference in New Issue
Block a user