5#ifndef _RTE_MBUF_HISTORY_H_
6#define _RTE_MBUF_HISTORY_H_
43#define RTE_MBUF_HISTORY_BITS 4
48#define RTE_MBUF_HISTORY_MAX (sizeof(rte_mbuf_history_t) * 8 / RTE_MBUF_HISTORY_BITS)
107#ifndef RTE_MBUF_HISTORY_DEBUG
118 uint64_t old_history = rte_atomic_load_explicit(history_field,
119 rte_memory_order_acquire);
120 uint64_t new_history;
123 }
while (
unlikely(!rte_atomic_compare_exchange_weak_explicit(history_field,
124 &old_history, new_history,
125 rte_memory_order_release, rte_memory_order_acquire)));
145#ifndef RTE_MBUF_HISTORY_DEBUG
#define RTE_MBUF_DYNFIELD(m, offset, type)
__rte_experimental void rte_mbuf_history_dump_mempool(FILE *f, struct rte_mempool *mp)
__rte_experimental void rte_mbuf_history_dump_all(FILE *f)
__rte_experimental void rte_mbuf_history_init(void)
#define RTE_MBUF_HISTORY_BITS
@ RTE_MBUF_HISTORY_OP_TX_BUSY
@ RTE_MBUF_HISTORY_OP_NEVER
@ RTE_MBUF_HISTORY_OP_USR1
@ RTE_MBUF_HISTORY_OP_APP_ALLOC
@ RTE_MBUF_HISTORY_OP_MAX
@ RTE_MBUF_HISTORY_OP_DEQUEUE
@ RTE_MBUF_HISTORY_OP_ENQUEUE
@ RTE_MBUF_HISTORY_OP_APP_FREE
@ RTE_MBUF_HISTORY_OP_PMD_ALLOC
@ RTE_MBUF_HISTORY_OP_LIB_FREE
@ RTE_MBUF_HISTORY_OP_TX_PREP
@ RTE_MBUF_HISTORY_OP_PMD_FREE
@ RTE_MBUF_HISTORY_OP_USR2
@ RTE_MBUF_HISTORY_OP_LIB_ALLOC
int rte_mbuf_history_field_offset
__rte_experimental void rte_mbuf_history_dump(FILE *f, const struct rte_mbuf *m)
static void rte_mbuf_history_mark(struct rte_mbuf *m, enum rte_mbuf_history_op op)
static void rte_mbuf_history_mark_bulk(struct rte_mbuf *const *mbufs, unsigned int count, enum rte_mbuf_history_op op)