MCPcopy Create free account
hub / github.com/F-Stack/f-stack / rte_pci_devargs_parse

Function rte_pci_devargs_parse

dpdk/drivers/bus/pci/pci_params.c:84–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

82}
83
84int
85rte_pci_devargs_parse(struct rte_devargs *da)
86{
87 struct rte_kvargs *kvargs;
88 const char *addr_str;
89 struct rte_pci_addr addr;
90 int ret = 0;
91
92 if (da == NULL || da->bus_str == NULL)
93 return 0;
94
95 kvargs = rte_kvargs_parse(da->bus_str, NULL);
96 if (kvargs == NULL) {
97 RTE_LOG(ERR, EAL, "cannot parse argument list: %s\n",
98 da->bus_str);
99 ret = -ENODEV;
100 goto out;
101 }
102
103 addr_str = rte_kvargs_get(kvargs, pci_params_keys[RTE_PCI_PARAM_ADDR]);
104 if (addr_str == NULL) {
105 RTE_LOG(DEBUG, EAL, "No PCI address specified using '%s=<id>' in: %s\n",
106 pci_params_keys[RTE_PCI_PARAM_ADDR], da->bus_str);
107 goto out;
108 }
109
110 ret = rte_pci_addr_parse(addr_str, &addr);
111 if (ret != 0) {
112 RTE_LOG(ERR, EAL, "PCI address invalid: %s\n", da->bus_str);
113 ret = -EINVAL;
114 goto out;
115 }
116
117 rte_pci_device_name(&addr, da->name, sizeof(da->name));
118
119out:
120 rte_kvargs_free(kvargs);
121 if (ret != 0)
122 rte_errno = -ret;
123 return ret;
124}

Callers

nothing calls this directly

Calls 5

rte_kvargs_parseFunction · 0.85
rte_kvargs_getFunction · 0.85
rte_pci_addr_parseFunction · 0.85
rte_pci_device_nameFunction · 0.85
rte_kvargs_freeFunction · 0.85

Tested by

no test coverage detected