aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vlibapi/api_common.h3
-rw-r--r--src/vlibmemory/memory_client.c10
2 files changed, 12 insertions, 1 deletions
diff --git a/src/vlibapi/api_common.h b/src/vlibapi/api_common.h
index 98fcbdefef9..bb1997041f4 100644
--- a/src/vlibapi/api_common.h
+++ b/src/vlibapi/api_common.h
@@ -340,6 +340,9 @@ typedef struct
/** List of API client reaper functions */
_vl_msg_api_function_list_elt_t *reaper_function_registrations;
+ /** Bin API thread handle */
+ pthread_t rx_thread_handle;
+
/** event log */
elog_main_t *elog_main;
int elog_trace_api_messages;
diff --git a/src/vlibmemory/memory_client.c b/src/vlibmemory/memory_client.c
index f032ae77d19..25c01f18e80 100644
--- a/src/vlibmemory/memory_client.c
+++ b/src/vlibmemory/memory_client.c
@@ -394,6 +394,7 @@ connect_to_vlib_internal (const char *svm_name,
{
int rv = 0;
memory_client_main_t *mm = &memory_client_main;
+ api_main_t *am = &api_main;
if (do_map && (rv = vl_client_api_map (svm_name)))
{
@@ -415,7 +416,14 @@ connect_to_vlib_internal (const char *svm_name,
rv = pthread_create (&mm->rx_thread_handle,
NULL /*attr */ , rx_thread_fn, 0);
if (rv)
- clib_warning ("pthread_create returned %d", rv);
+ {
+ clib_warning ("pthread_create returned %d", rv);
+ am->rx_thread_handle = 0;
+ }
+ else
+ {
+ am->rx_thread_handle = mm->rx_thread_handle;
+ }
}
mm->connected_to_vlib = 1;