DPDK 25.03.0-rc1
rte_soring.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2024 Huawei Technologies Co., Ltd
3 */
4
5#ifndef _RTE_SORING_H_
6#define _RTE_SORING_H_
7
26#include <rte_ring.h>
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
33#define RTE_SORING_ST_BIT 30
34
36#define RTE_SORING_ELEM_MAX (RTE_BIT32(RTE_SORING_ST_BIT) - 1)
37
38struct rte_soring_param {
40 const char *name;
42 uint32_t elems;
44 uint32_t elem_size;
59 uint32_t meta_size;
61 uint32_t stages;
63 enum rte_ring_sync_type prod_synt;
65 enum rte_ring_sync_type cons_synt;
66};
67
68struct rte_soring;
69
88__rte_experimental
89ssize_t
90rte_soring_get_memsize(const struct rte_soring_param *prm);
91
111__rte_experimental
112int
113rte_soring_init(struct rte_soring *r, const struct rte_soring_param *prm);
114
126__rte_experimental
127unsigned int
128rte_soring_count(const struct rte_soring *r);
129
141__rte_experimental
142unsigned int
143rte_soring_free_count(const struct rte_soring *r);
144
156__rte_experimental
157void
158rte_soring_dump(FILE *f, const struct rte_soring *r);
159
181__rte_experimental
182uint32_t
183rte_soring_enqueue_bulk(struct rte_soring *r, const void *objs,
184 uint32_t n, uint32_t *free_space);
185
215__rte_experimental
216uint32_t
217rte_soring_enqueux_bulk(struct rte_soring *r, const void *objs,
218 const void *meta, uint32_t n, uint32_t *free_space);
219
241__rte_experimental
242uint32_t
243rte_soring_enqueue_burst(struct rte_soring *r, const void *objs,
244 uint32_t n, uint32_t *free_space);
245
275__rte_experimental
276uint32_t
277rte_soring_enqueux_burst(struct rte_soring *r, const void *objs,
278 const void *meta, uint32_t n, uint32_t *free_space);
279
301__rte_experimental
302uint32_t
303rte_soring_dequeue_bulk(struct rte_soring *r, void *objs,
304 uint32_t num, uint32_t *available);
305
335__rte_experimental
336uint32_t
337rte_soring_dequeux_bulk(struct rte_soring *r, void *objs, void *meta,
338 uint32_t num, uint32_t *available);
339
361__rte_experimental
362uint32_t
363rte_soring_dequeue_burst(struct rte_soring *r, void *objs,
364 uint32_t num, uint32_t *available);
365
395__rte_experimental
396uint32_t
397rte_soring_dequeux_burst(struct rte_soring *r, void *objs, void *meta,
398 uint32_t num, uint32_t *available);
399
427__rte_experimental
428uint32_t
429rte_soring_acquire_bulk(struct rte_soring *r, void *objs,
430 uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available);
431
467__rte_experimental
468uint32_t
469rte_soring_acquirx_bulk(struct rte_soring *r, void *objs, void *meta,
470 uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available);
471
499__rte_experimental
500uint32_t
501rte_soring_acquire_burst(struct rte_soring *r, void *objs,
502 uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available);
503
539__rte_experimental
540uint32_t
541rte_soring_acquirx_burst(struct rte_soring *r, void *objs, void *meta,
542 uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available);
543
568__rte_experimental
569void
570rte_soring_release(struct rte_soring *r, const void *objs,
571 uint32_t stage, uint32_t n, uint32_t ftoken);
572
605__rte_experimental
606void
607rte_soring_releasx(struct rte_soring *r, const void *objs,
608 const void *meta, uint32_t stage, uint32_t n, uint32_t ftoken);
609
610#ifdef __cplusplus
611}
612#endif
613
614#endif /* _RTE_SORING_H_ */
rte_ring_sync_type
Definition: rte_ring_core.h:53
__rte_experimental ssize_t rte_soring_get_memsize(const struct rte_soring_param *prm)
__rte_experimental uint32_t rte_soring_enqueue_bulk(struct rte_soring *r, const void *objs, uint32_t n, uint32_t *free_space)
__rte_experimental uint32_t rte_soring_acquirx_burst(struct rte_soring *r, void *objs, void *meta, uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available)
__rte_experimental uint32_t rte_soring_acquire_burst(struct rte_soring *r, void *objs, uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available)
__rte_experimental uint32_t rte_soring_dequeux_bulk(struct rte_soring *r, void *objs, void *meta, uint32_t num, uint32_t *available)
__rte_experimental uint32_t rte_soring_enqueux_burst(struct rte_soring *r, const void *objs, const void *meta, uint32_t n, uint32_t *free_space)
__rte_experimental void rte_soring_dump(FILE *f, const struct rte_soring *r)
__rte_experimental uint32_t rte_soring_enqueue_burst(struct rte_soring *r, const void *objs, uint32_t n, uint32_t *free_space)
__rte_experimental void rte_soring_releasx(struct rte_soring *r, const void *objs, const void *meta, uint32_t stage, uint32_t n, uint32_t ftoken)
__rte_experimental int rte_soring_init(struct rte_soring *r, const struct rte_soring_param *prm)
__rte_experimental uint32_t rte_soring_dequeux_burst(struct rte_soring *r, void *objs, void *meta, uint32_t num, uint32_t *available)
__rte_experimental uint32_t rte_soring_acquirx_bulk(struct rte_soring *r, void *objs, void *meta, uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available)
__rte_experimental uint32_t rte_soring_dequeue_bulk(struct rte_soring *r, void *objs, uint32_t num, uint32_t *available)
__rte_experimental uint32_t rte_soring_dequeue_burst(struct rte_soring *r, void *objs, uint32_t num, uint32_t *available)
__rte_experimental uint32_t rte_soring_enqueux_bulk(struct rte_soring *r, const void *objs, const void *meta, uint32_t n, uint32_t *free_space)
__rte_experimental void rte_soring_release(struct rte_soring *r, const void *objs, uint32_t stage, uint32_t n, uint32_t ftoken)
__rte_experimental unsigned int rte_soring_free_count(const struct rte_soring *r)
__rte_experimental uint32_t rte_soring_acquire_bulk(struct rte_soring *r, void *objs, uint32_t stage, uint32_t num, uint32_t *ftoken, uint32_t *available)
__rte_experimental unsigned int rte_soring_count(const struct rte_soring *r)