DPDK 25.03.0-rc0
rte_ring_hts.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright (c) 2010-2020 Intel Corporation
4 * Copyright (c) 2007-2009 Kip Macy kmacy@freebsd.org
5 * All rights reserved.
6 * Derived from FreeBSD's bufring.h
7 * Used as BSD-3 Licensed with permission from Kip Macy.
8 */
9
10#ifndef _RTE_RING_HTS_H_
11#define _RTE_RING_HTS_H_
12
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
52static __rte_always_inline unsigned int
53rte_ring_mp_hts_enqueue_bulk_elem(struct rte_ring *r, const void *obj_table,
54 unsigned int esize, unsigned int n, unsigned int *free_space)
55{
56 return __rte_ring_do_hts_enqueue_elem(r, obj_table, esize, n,
57 RTE_RING_QUEUE_FIXED, free_space);
58}
59
79static __rte_always_inline unsigned int
81 unsigned int esize, unsigned int n, unsigned int *available)
82{
83 return __rte_ring_do_hts_dequeue_elem(r, obj_table, esize, n,
84 RTE_RING_QUEUE_FIXED, available);
85}
86
106static __rte_always_inline unsigned int
107rte_ring_mp_hts_enqueue_burst_elem(struct rte_ring *r, const void *obj_table,
108 unsigned int esize, unsigned int n, unsigned int *free_space)
109{
110 return __rte_ring_do_hts_enqueue_elem(r, obj_table, esize, n,
111 RTE_RING_QUEUE_VARIABLE, free_space);
112}
113
135static __rte_always_inline unsigned int
137 unsigned int esize, unsigned int n, unsigned int *available)
138{
139 return __rte_ring_do_hts_dequeue_elem(r, obj_table, esize, n,
140 RTE_RING_QUEUE_VARIABLE, available);
141}
142
158static __rte_always_inline unsigned int
159rte_ring_mp_hts_enqueue_bulk(struct rte_ring *r, void * const *obj_table,
160 unsigned int n, unsigned int *free_space)
161{
162 return rte_ring_mp_hts_enqueue_bulk_elem(r, obj_table,
163 sizeof(uintptr_t), n, free_space);
164}
165
181static __rte_always_inline unsigned int
182rte_ring_mc_hts_dequeue_bulk(struct rte_ring *r, void **obj_table,
183 unsigned int n, unsigned int *available)
184{
185 return rte_ring_mc_hts_dequeue_bulk_elem(r, obj_table,
186 sizeof(uintptr_t), n, available);
187}
188
204static __rte_always_inline unsigned int
205rte_ring_mp_hts_enqueue_burst(struct rte_ring *r, void * const *obj_table,
206 unsigned int n, unsigned int *free_space)
207{
208 return rte_ring_mp_hts_enqueue_burst_elem(r, obj_table,
209 sizeof(uintptr_t), n, free_space);
210}
211
229static __rte_always_inline unsigned int
230rte_ring_mc_hts_dequeue_burst(struct rte_ring *r, void **obj_table,
231 unsigned int n, unsigned int *available)
232{
233 return rte_ring_mc_hts_dequeue_burst_elem(r, obj_table,
234 sizeof(uintptr_t), n, available);
235}
236
237#ifdef __cplusplus
238}
239#endif
240
241#endif /* _RTE_RING_HTS_H_ */
#define __rte_always_inline
Definition: rte_common.h:413
@ RTE_RING_QUEUE_VARIABLE
Definition: rte_ring_core.h:44
@ RTE_RING_QUEUE_FIXED
Definition: rte_ring_core.h:42
static __rte_always_inline unsigned int rte_ring_mc_hts_dequeue_burst_elem(struct rte_ring *r, void *obj_table, unsigned int esize, unsigned int n, unsigned int *available)
Definition: rte_ring_hts.h:136
static __rte_always_inline unsigned int rte_ring_mp_hts_enqueue_burst(struct rte_ring *r, void *const *obj_table, unsigned int n, unsigned int *free_space)
Definition: rte_ring_hts.h:205
static __rte_always_inline unsigned int rte_ring_mp_hts_enqueue_bulk(struct rte_ring *r, void *const *obj_table, unsigned int n, unsigned int *free_space)
Definition: rte_ring_hts.h:159
static __rte_always_inline unsigned int rte_ring_mp_hts_enqueue_burst_elem(struct rte_ring *r, const void *obj_table, unsigned int esize, unsigned int n, unsigned int *free_space)
Definition: rte_ring_hts.h:107
static __rte_always_inline unsigned int rte_ring_mc_hts_dequeue_bulk(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)
Definition: rte_ring_hts.h:182
static __rte_always_inline unsigned int rte_ring_mp_hts_enqueue_bulk_elem(struct rte_ring *r, const void *obj_table, unsigned int esize, unsigned int n, unsigned int *free_space)
Definition: rte_ring_hts.h:53
static __rte_always_inline unsigned int rte_ring_mc_hts_dequeue_burst(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)
Definition: rte_ring_hts.h:230
static __rte_always_inline unsigned int rte_ring_mc_hts_dequeue_bulk_elem(struct rte_ring *r, void *obj_table, unsigned int esize, unsigned int n, unsigned int *available)
Definition: rte_ring_hts.h:80