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

Function eal_parse_socket_arg

dpdk/lib/eal/linux/eal.c:468–509  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

466}
467
468static int
469eal_parse_socket_arg(char *strval, volatile uint64_t *socket_arg)
470{
471 char * arg[RTE_MAX_NUMA_NODES];
472 char *end;
473 int arg_num, i, len;
474
475 len = strnlen(strval, SOCKET_MEM_STRLEN);
476 if (len == SOCKET_MEM_STRLEN) {
477 RTE_LOG(ERR, EAL, "--socket-mem is too long\n");
478 return -1;
479 }
480
481 /* all other error cases will be caught later */
482 if (!isdigit(strval[len-1]))
483 return -1;
484
485 /* split the optarg into separate socket values */
486 arg_num = rte_strsplit(strval, len,
487 arg, RTE_MAX_NUMA_NODES, ',');
488
489 /* if split failed, or 0 arguments */
490 if (arg_num <= 0)
491 return -1;
492
493 /* parse each defined socket option */
494 errno = 0;
495 for (i = 0; i < arg_num; i++) {
496 uint64_t val;
497 end = NULL;
498 val = strtoull(arg[i], &end, 10);
499
500 /* check for invalid input */
501 if ((errno != 0) ||
502 (arg[i][0] == '\0') || (end == NULL) || (*end != '\0'))
503 return -1;
504 val <<= 20;
505 socket_arg[i] = val;
506 }
507
508 return 0;
509}
510
511static int
512eal_parse_vfio_intr(const char *mode)

Callers 1

eal_parse_argsFunction · 0.85

Calls 3

strnlenFunction · 0.85
isdigitFunction · 0.85
rte_strsplitFunction · 0.85

Tested by

no test coverage detected