31#ifndef __CXGBE_MP_RING_H
32#define __CXGBE_MP_RING_H
35#error "no user-serviceable parts inside"
44 struct malloc_type *
mt;
71 struct sysctl_oid_list *);
int size __aligned(CACHE_LINE_SIZE)
counter_u64_t not_consumer
void *volatile items[] __aligned(CACHE_LINE_SIZE)
volatile uint64_t state __aligned(CACHE_LINE_SIZE)
counter_u64_t consumer[4]
ring_can_drain_t can_drain
counter_u64_t abdications
void mp_ring_free(struct mp_ring *)
u_int(* ring_can_drain_t)(struct mp_ring *)
bool mp_ring_is_idle(struct mp_ring *)
u_int(* ring_drain_t)(struct mp_ring *, u_int, u_int, bool *)
int mp_ring_enqueue(struct mp_ring *, void **, int, int)
void mp_ring_sysctls(struct mp_ring *, struct sysctl_ctx_list *, struct sysctl_oid_list *)
void mp_ring_check_drainage(struct mp_ring *, int)
void mp_ring_reset_stats(struct mp_ring *)
int mp_ring_alloc(struct mp_ring **, int, void *, ring_drain_t, ring_can_drain_t, struct malloc_type *, struct mtx *, int)