| 247 | } |
| 248 | |
| 249 | int |
| 250 | rte_devargs_parsef(struct rte_devargs *da, const char *format, ...) |
| 251 | { |
| 252 | va_list ap; |
| 253 | int len; |
| 254 | char *dev; |
| 255 | int ret; |
| 256 | |
| 257 | if (da == NULL) |
| 258 | return -EINVAL; |
| 259 | |
| 260 | va_start(ap, format); |
| 261 | len = vsnprintf(NULL, 0, format, ap); |
| 262 | va_end(ap); |
| 263 | if (len < 0) |
| 264 | return -EINVAL; |
| 265 | |
| 266 | len += 1; |
| 267 | dev = calloc(1, (size_t)len); |
| 268 | if (dev == NULL) { |
| 269 | RTE_LOG(ERR, EAL, "not enough memory to parse device\n"); |
| 270 | return -ENOMEM; |
| 271 | } |
| 272 | |
| 273 | va_start(ap, format); |
| 274 | vsnprintf(dev, (size_t)len, format, ap); |
| 275 | va_end(ap); |
| 276 | |
| 277 | ret = rte_devargs_parse(da, dev); |
| 278 | |
| 279 | free(dev); |
| 280 | return ret; |
| 281 | } |
| 282 | |
| 283 | void |
| 284 | rte_devargs_reset(struct rte_devargs *da) |