git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eal: add function to query device status
[dpdk.git]
/
lib
/
librte_eal
/
common
/
eal_common_dev.c
diff --git
a/lib/librte_eal/common/eal_common_dev.c
b/lib/librte_eal/common/eal_common_dev.c
index
631e174
..
f6e490a
100644
(file)
--- a/
lib/librte_eal/common/eal_common_dev.c
+++ b/
lib/librte_eal/common/eal_common_dev.c
@@
-76,6
+76,13
@@
static int cmp_dev_name(const struct rte_device *dev, const void *_name)
return strcmp(dev->name, name);
}
return strcmp(dev->name, name);
}
+int __rte_experimental
+rte_dev_is_probed(const struct rte_device *dev)
+{
+ /* The field driver should be set only when the probe is successful. */
+ return dev->driver != NULL;
+}
+
int rte_eal_dev_attach(const char *name, const char *devargs)
{
struct rte_bus *bus;
int rte_eal_dev_attach(const char *name, const char *devargs)
{
struct rte_bus *bus;
@@
-212,7
+219,7
@@
local_dev_probe(const char *devargs, struct rte_device **new_dev)
goto err_devarg;
}
goto err_devarg;
}
- if (
dev->driver != NULL
) {
+ if (
rte_dev_is_probed(dev)
) {
RTE_LOG(ERR, EAL, "Device is already plugged\n");
return -EEXIST;
}
RTE_LOG(ERR, EAL, "Device is already plugged\n");
return -EEXIST;
}
@@
-355,11
+362,6
@@
local_dev_remove(struct rte_device *dev)
{
int ret;
{
int ret;
- if (dev->driver == NULL) {
- RTE_LOG(ERR, EAL, "Device is already unplugged\n");
- return -ENOENT;
- }
-
if (dev->bus->unplug == NULL) {
RTE_LOG(ERR, EAL, "Function unplug not supported by bus (%s)\n",
dev->bus->name);
if (dev->bus->unplug == NULL) {
RTE_LOG(ERR, EAL, "Function unplug not supported by bus (%s)\n",
dev->bus->name);
@@
-385,6
+387,11
@@
rte_dev_remove(struct rte_device *dev)
char *devargs;
int ret;
char *devargs;
int ret;
+ if (!rte_dev_is_probed(dev)) {
+ RTE_LOG(ERR, EAL, "Device is not probed\n");
+ return -ENOENT;
+ }
+
ret = build_devargs(dev->devargs->bus->name, dev->name, "", &devargs);
if (ret != 0)
return ret;
ret = build_devargs(dev->devargs->bus->name, dev->name, "", &devargs);
if (ret != 0)
return ret;