Exemplo n.º 1
0
clib_error_t *replication_init (vlib_main_t *vm)
{
  replication_main_t * rm = &replication_main;
  vlib_buffer_main_t * bm = vm->buffer_main;
  vlib_buffer_free_list_t * fl;
  __attribute__((unused)) replication_context_t * ctx;
  vlib_thread_main_t * tm = vlib_get_thread_main();
    
  rm->vlib_main = vm;
  rm->vnet_main = vnet_get_main();
  rm->recycle_list_index = 
    vlib_buffer_create_free_list (vm, 1024 /* fictional */, 
                                  "replication-recycle");

  fl = pool_elt_at_index (bm->buffer_free_list_pool, 
                          rm->recycle_list_index);

  fl->buffers_added_to_freelist_function = replication_recycle_callback;

  // Verify the replication context is the expected size
  ASSERT(sizeof(replication_context_t) == 128); // 2 cache lines

  vec_validate (rm->contexts, tm->n_vlib_mains - 1);
  return 0;
}
Exemplo n.º 2
0
void
vlib_validate_simple_counter (vlib_simple_counter_main_t * cm, u32 index)
{
  vlib_thread_main_t *tm = vlib_get_thread_main ();
  int i;

  vec_validate (cm->minis, tm->n_vlib_mains - 1);
  for (i = 0; i < tm->n_vlib_mains; i++)
    vec_validate_aligned (cm->minis[i], index, CLIB_CACHE_LINE_BYTES);
  vec_validate_aligned (cm->maxi, index, CLIB_CACHE_LINE_BYTES);
}