FD.io VPP
v16.09
Vector Packet Processing
|
vlib buffer/node functions More...
Go to the source code of this file.
Macros | |
#define | vlib_validate_buffer_enqueue_x2(vm, node, next_index, to_next, n_left_to_next, bi0, bi1, next0, next1) |
Finish enqueueing two buffers forward in the graph. More... | |
#define | vlib_validate_buffer_enqueue_x1(vm, node, next_index, to_next, n_left_to_next, bi0, next0) |
Finish enqueueing one buffer forward in the graph. More... | |
Functions | |
static uword | generic_buffer_node_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_frame_t *frame, uword sizeof_trace, void *opaque1, uword opaque2, void(*two_buffers)(vlib_main_t *vm, void *opaque1, uword opaque2, vlib_buffer_t *b0, vlib_buffer_t *b1, u32 *next0, u32 *next1), void(*one_buffer)(vlib_main_t *vm, void *opaque1, uword opaque2, vlib_buffer_t *b0, u32 *next0)) |
vlib buffer/node functions
Definition in file buffer_node.h.
#define vlib_validate_buffer_enqueue_x1 | ( | vm, | |
node, | |||
next_index, | |||
to_next, | |||
n_left_to_next, | |||
bi0, | |||
next0 | |||
) |
Finish enqueueing one buffer forward in the graph.
Standard single loop boilerplate element. This is a MACRO, with MULTIPLE SIDE EFFECTS. In the ideal case, next_index == next0
, which means that the speculative enqueue at the top of the single loop has correctly dealt with the packet in hand. In that case, the macro does nothing at all.
vm | vlib_main_t pointer, varies by thread |
node | current node vlib_node_runtime_t pointer |
next_index | speculated next index used for both packets |
to_next | speculated vector pointer used for both packets |
n_left_to_next | number of slots left in speculated vector |
bi0 | first buffer index |
next0 | actual next index to be used for the first packet |
next_index
– speculative next index to be used for future packets to_next
– speculative frame to be used for future packets n_left_to_next
– number of slots left in speculative frame Definition at line 130 of file buffer_node.h.
#define vlib_validate_buffer_enqueue_x2 | ( | vm, | |
node, | |||
next_index, | |||
to_next, | |||
n_left_to_next, | |||
bi0, | |||
bi1, | |||
next0, | |||
next1 | |||
) |
Finish enqueueing two buffers forward in the graph.
Standard dual loop boilerplate element. This is a MACRO, with MULTIPLE SIDE EFFECTS. In the ideal case, next_index == next0 == next1
, which means that the speculative enqueue at the top of the dual loop has correctly dealt with both packets. In that case, the macro does nothing at all.
vm | vlib_main_t pointer, varies by thread |
node | current node vlib_node_runtime_t pointer |
next_index | speculated next index used for both packets |
to_next | speculated vector pointer used for both packets |
n_left_to_next | number of slots left in speculated vector |
bi0 | first buffer index |
bi1 | second buffer index |
next0 | actual next index to be used for the first packet |
next1 | actual next index to be used for the second packet |
next_index
– speculative next index to be used for future packets to_next
– speculative frame to be used for future packets n_left_to_next
– number of slots left in speculative frame Definition at line 70 of file buffer_node.h.
|
inlinestatic |