Add a polling configure to make thread bind with hardware engine
[vpp.git] / src / vlibmemory / memory_api.c
index 4d31b35..1f5da4c 100644 (file)
@@ -157,6 +157,7 @@ vl_api_memclnt_create_t_handler (vl_api_memclnt_create_t * mp)
   int rv = 0;
   void *oldheap;
   api_main_t *am = &api_main;
+  u8 *msg_table;
 
   /*
    * This is tortured. Maintain a vlib-address-space private
@@ -209,6 +210,11 @@ vl_api_memclnt_create_t_handler (vl_api_memclnt_create_t * mp)
     am->serialized_message_table_in_shmem =
       vl_api_serialize_message_table (am, 0);
 
+  if (am->vlib_rp != am->vlib_primary_rp)
+    msg_table = vl_api_serialize_message_table (am, 0);
+  else
+    msg_table = am->serialized_message_table_in_shmem;
+
   pthread_mutex_unlock (&svm->mutex);
   svm_pop_heap (oldheap);
 
@@ -220,8 +226,7 @@ vl_api_memclnt_create_t_handler (vl_api_memclnt_create_t * mp)
      am->shmem_hdr->application_restarts);
   rp->context = mp->context;
   rp->response = ntohl (rv);
-  rp->message_table =
-    pointer_to_uword (am->serialized_message_table_in_shmem);
+  rp->message_table = pointer_to_uword (msg_table);
 
   vl_msg_api_send_shmem (q, (u8 *) & rp);
 }
@@ -459,7 +464,7 @@ vl_mem_api_init (const char *region_name)
   return 0;
 }
 
-static clib_error_t *
+clib_error_t *
 map_api_segment_init (vlib_main_t * vm)
 {
   api_main_t *am = &api_main;
@@ -473,8 +478,6 @@ map_api_segment_init (vlib_main_t * vm)
   return 0;
 }
 
-VLIB_INIT_FUNCTION (map_api_segment_init);
-
 static void
 send_memclnt_keepalive (vl_api_registration_t * regp, f64 now)
 {
@@ -916,8 +919,6 @@ vlibmemory_init (vlib_main_t * vm)
   return error;
 }
 
-VLIB_INIT_FUNCTION (vlibmemory_init);
-
 void
 vl_set_memory_region_name (const char *name)
 {