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

Function parse_socket_arg

dpdk/examples/vhost_crypto/main.c:90–137  ·  view source on GitHub ↗

support *SOCKET_FILE_PATH:CRYPTODEV_ID* format */

Source from the content-addressed store, hash-verified

88
89/** support *SOCKET_FILE_PATH:CRYPTODEV_ID* format */
90static int
91parse_socket_arg(char *arg)
92{
93 uint32_t nb_sockets;
94 uint32_t lcore_id;
95 char *str_fld[NB_SOCKET_FIELDS];
96 struct lcore_option *lo;
97 uint32_t idx;
98 char *end;
99
100 if (rte_strsplit(arg, strlen(arg), str_fld, NB_SOCKET_FIELDS, ',') !=
101 NB_SOCKET_FIELDS) {
102 RTE_LOG(ERR, USER1, "Invalid socket parameter '%s'\n", arg);
103 return -EINVAL;
104 }
105
106 errno = 0;
107 lcore_id = strtoul(str_fld[0], &end, 0);
108 if (errno != 0 || end == str_fld[0] || lcore_id > 255)
109 return -EINVAL;
110
111 idx = find_lo(lcore_id);
112 if (idx == UINT32_MAX) {
113 if (options.nb_los == MAX_NB_WORKER_CORES)
114 return -ENOMEM;
115 lo = &options.los[options.nb_los];
116 lo->lcore_id = lcore_id;
117 options.nb_los++;
118 } else
119 lo = &options.los[idx];
120
121 nb_sockets = lo->nb_sockets;
122
123 if (nb_sockets >= MAX_NB_SOCKETS) {
124 RTE_LOG(ERR, USER1, "Too many socket files!\n");
125 return -ENOMEM;
126 }
127
128 lo->socket_files[nb_sockets] = strdup(str_fld[1]);
129 if (!lo->socket_files[nb_sockets]) {
130 RTE_LOG(ERR, USER1, "Insufficient memory\n");
131 return -ENOMEM;
132 }
133
134 lo->nb_sockets++;
135
136 return 0;
137}
138
139static int
140parse_config(char *q_arg)

Callers 1

vhost_crypto_parse_argsFunction · 0.85

Calls 4

rte_strsplitFunction · 0.85
strtoulFunction · 0.85
find_loFunction · 0.85
strdupFunction · 0.85

Tested by

no test coverage detected