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

Function mt1_init

dpdk/app/test/test_ring_stress_impl.h:274–330  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

272}
273
274static int
275mt1_init(struct rte_ring **rng, void **data, uint32_t num)
276{
277 int32_t rc;
278 size_t sz;
279 uint32_t i, nr;
280 struct rte_ring *r;
281 struct ring_elem *elm;
282 void *p;
283
284 *rng = NULL;
285 *data = NULL;
286
287 sz = num * sizeof(*elm);
288 elm = rte_zmalloc(NULL, sz, __alignof__(*elm));
289 if (elm == NULL) {
290 printf("%s: alloc(%zu) for %u elems data failed",
291 __func__, sz, num);
292 return -ENOMEM;
293 }
294
295 *data = elm;
296
297 /* alloc ring */
298 nr = rte_align32pow2(2 * num);
299 sz = rte_ring_get_memsize(nr);
300 r = rte_zmalloc(NULL, sz, __alignof__(*r));
301 if (r == NULL) {
302 printf("%s: alloc(%zu) for FIFO with %u elems failed",
303 __func__, sz, nr);
304 return -ENOMEM;
305 }
306
307 *rng = r;
308
309 rc = _st_ring_init(r, RING_NAME, nr);
310 if (rc != 0) {
311 printf("%s: _st_ring_init(%p, %u) failed, error: %d(%s)\n",
312 __func__, r, nr, rc, strerror(-rc));
313 return rc;
314 }
315
316 for (i = 0; i != num; i++) {
317 fill_ring_elm(elm + i, UINT32_MAX);
318 p = elm + i;
319 if (_st_ring_enqueue_bulk(r, &p, 1, NULL) != 1)
320 break;
321 }
322
323 if (i != num) {
324 printf("%s: _st_ring_enqueue(%p, %u) returned %u\n",
325 __func__, r, num, i);
326 return -ENOSPC;
327 }
328
329 return 0;
330}
331

Callers 1

test_mt1Function · 0.85

Calls 7

rte_zmallocFunction · 0.85
rte_ring_get_memsizeFunction · 0.85
fill_ring_elmFunction · 0.85
_st_ring_initFunction · 0.70
_st_ring_enqueue_bulkFunction · 0.70
printfFunction · 0.50
rte_align32pow2Function · 0.50

Tested by

no test coverage detected