40 #ifndef included_vlib_trace_funcs_h 41 #define included_vlib_trace_funcs_h 74 n_data_bytes =
round_pow2 (n_data_bytes,
sizeof (h[0]));
75 n_data_words = n_data_bytes /
sizeof (h[0]);
77 1 + n_data_words, sizeof (h[0]));
140 b->
flags |= VLIB_BUFFER_IS_TRACED;
151 b_target->
flags |= b->
flags & VLIB_BUFFER_IS_TRACED;
177 ASSERT (count <= tn->limit);
187 uword next_buffer_stride,
188 uword n_buffer_data_bytes_in_trace);
u32 flags
buffer flags: VLIB_BUFFER_FREE_LIST_INDEX_MASK: bits used to store free list index, VLIB_BUFFER_IS_TRACED: trace this buffer.
void vlib_trace_frame_buffers_only(vlib_main_t *vm, vlib_node_runtime_t *node, u32 *buffers, uword n_buffers, uword next_buffer_stride, uword n_buffer_data_bytes_in_trace)
static u32 vlib_get_trace_count(vlib_main_t *vm, vlib_node_runtime_t *rt)
vlib_trace_node_t * nodes
static vlib_trace_header_t * vlib_trace_header_next(vlib_trace_header_t *h)
#define vec_add2_aligned(V, P, N, A)
Add N elements to end of vector V, return pointer to new elements in P.
#define pool_get(P, E)
Allocate an object E from a pool P (unspecified alignment).
static void vlib_trace_buffer(vlib_main_t *vm, vlib_node_runtime_t *r, u32 next_index, vlib_buffer_t *b, int follow_chain)
vlib_trace_header_t ** trace_buffer_pool
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds.
static void vlib_trace_next_frame(vlib_main_t *vm, vlib_node_runtime_t *r, u32 next_index)
static vlib_next_frame_t * vlib_node_runtime_get_next_frame(vlib_main_t *vm, vlib_node_runtime_t *n, u32 next_index)
static void vlib_free_trace(vlib_main_t *vm, vlib_buffer_t *b)
u32 node_index
Node index.
static void vlib_buffer_copy_trace_flag(vlib_main_t *vm, vlib_buffer_t *b, u32 bi_target)
void trace_apply_filter(vlib_main_t *vm)
u32 trace_index
Specifies index into trace buffer if VLIB_PACKET_IS_TRACED flag is set.
static vlib_buffer_t * vlib_get_next_buffer(vlib_main_t *vm, vlib_buffer_t *b)
Get next buffer in buffer linklist, or zero for end of list.
#define pool_is_free_index(P, I)
Use free bitmap to query whether given index is free.
static uword round_pow2(uword x, uword pow2)
#define pool_put_index(p, i)
Free pool element with given index.
vlib_trace_main_t trace_main
static void * vlib_add_trace(vlib_main_t *vm, vlib_node_runtime_t *r, vlib_buffer_t *b, u32 n_data_bytes)
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
VLIB buffer representation.
static void vlib_validate_trace(vlib_trace_main_t *tm, vlib_buffer_t *b)
static void vlib_set_trace_count(vlib_main_t *vm, vlib_node_runtime_t *rt, u32 count)
static vlib_buffer_t * vlib_get_buffer(vlib_main_t *vm, u32 buffer_index)
Translate buffer index into buffer pointer.
u64 cpu_time_last_node_dispatch