23 #define EXPORT_TIMEOUT (20.0) 24 #define THREAD_PERIOD (30.0) 34 uword *event_data = 0;
37 u32 *vec_buffer_indices = 0;
38 u32 *vec_buffer_to_be_sent = 0;
39 u32 *thread_index = 0;
40 u32 new_pool_index = 0;
47 clib_warning (
"bogus kickoff event received, %d", event_type);
74 if (*em->
lockp[i] == 1)
81 memset (new_eb, 0,
sizeof (*new_eb));
85 vec_add (vec_buffer_indices, &new_pool_index, 1);
98 if (vec_len (thread_index) != 0)
103 for (i = 0; i <
vec_len (thread_index); i++)
105 while (__sync_lock_test_and_set (em->
lockp[thread_index[i]], 1))
109 *em->
lockp[thread_index[
i]] = 0;
113 for (i = 0; i <
vec_len (vec_buffer_to_be_sent); i++)
124 for (i = 0; i <
vec_len (vec_buffer_indices); i++)
141 .name =
"ioam-export-process",
sll srl srl sll sra u16x4 i
static f64 vlib_process_wait_for_event_or_clock(vlib_main_t *vm, f64 dt)
Suspend a cooperative multi-tasking thread Waits for an event, or for the indicated number of seconds...
Fixed length block allocator.
u32 export_process_node_index
static f64 vlib_time_now(vlib_main_t *vm)
struct _vlib_node_registration vlib_node_registration_t
static int ioam_export_send_buffer(vlib_main_t *vm, ioam_export_buffer_t *eb)
#define vec_pop(V)
Returns last element of a vector and decrements its length.
#define vec_reset_length(v)
Reset vector length to zero NULL-pointer tolerant.
#define vec_add(V, E, N)
Add N elements to end of vector V (no header, unspecified alignment)
static uword vlib_process_get_events(vlib_main_t *vm, uword **data_vector)
Return the first event type which has occurred and a vector of per-event data of that type...
ioam_export_buffer_t * buffer_pool
#define clib_warning(format, args...)
static uword ioam_export_process(vlib_main_t *vm, vlib_node_runtime_t *rt, vlib_frame_t *f)
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
#define pool_put(P, E)
Free an object E in pool P.
static vlib_node_registration_t ioam_export_process_node
(constructor) VLIB_REGISTER_NODE (ioam_export_process_node)
#define pool_get_aligned(P, E, A)
Allocate an object E from a pool P (general version).
u8 records_in_this_buffer
#define vec_free(V)
Free vector's memory (no header).
static int ioam_export_init_buffer(vlib_main_t *vm, ioam_export_buffer_t *eb)
void vlib_buffer_free(vlib_main_t *vm, u32 *buffers, u32 n_buffers)
Free buffers Frees the entire buffer chain for each buffer.
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
#define VLIB_REGISTER_NODE(x,...)
#define CLIB_CACHE_LINE_BYTES
ioam_export_main_t ioam_export_main