X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fvlibmemory%2Fmemory_api.c;h=6c066a152f49ead8ceacecdbe441eeb24e6339ad;hp=f229ecf48bd4e912576255381d04664975b6c9c1;hb=36217e3ca;hpb=b2c31b685fd2cf28436ca32bc93e23eb24c74878 diff --git a/src/vlibmemory/memory_api.c b/src/vlibmemory/memory_api.c index f229ecf48bd..6c066a152f4 100644 --- a/src/vlibmemory/memory_api.c +++ b/src/vlibmemory/memory_api.c @@ -38,26 +38,6 @@ #include #undef vl_endianfun -static inline void * -vl_api_memclnt_create_t_print (vl_api_memclnt_create_t * a, void *handle) -{ - vl_print (handle, "vl_api_memclnt_create_t:\n"); - vl_print (handle, "name: %s\n", a->name); - vl_print (handle, "input_queue: 0x%wx\n", a->input_queue); - vl_print (handle, "context: %u\n", (unsigned) a->context); - vl_print (handle, "ctx_quota: %ld\n", (long) a->ctx_quota); - return handle; -} - -static inline void * -vl_api_memclnt_delete_t_print (vl_api_memclnt_delete_t * a, void *handle) -{ - vl_print (handle, "vl_api_memclnt_delete_t:\n"); - vl_print (handle, "index: %u\n", (unsigned) a->index); - vl_print (handle, "handle: 0x%wx\n", a->handle); - return handle; -} - volatile int **vl_api_queue_cursizes; static void @@ -65,6 +45,7 @@ memclnt_queue_callback (vlib_main_t * vm) { int i; api_main_t *am = vlibapi_get_main (); + int have_pending_rpcs; if (PREDICT_FALSE (vec_len (vl_api_queue_cursizes) != 1 + vec_len (am->vlib_private_rps))) @@ -103,7 +84,12 @@ memclnt_queue_callback (vlib_main_t * vm) break; } } - if (vec_len (vm->pending_rpc_requests)) + + clib_spinlock_lock_if_init (&vm->pending_rpc_lock); + have_pending_rpcs = vec_len (vm->pending_rpc_requests) > 0; + clib_spinlock_unlock_if_init (&vm->pending_rpc_lock); + + if (have_pending_rpcs) { vm->queue_signal_pending = 1; vm->api_queue_nonempty = 1; @@ -411,11 +397,11 @@ vl_api_memclnt_keepalive_t_handler (vl_api_memclnt_keepalive_t * mp) * don't trace memclnt_keepalive[_reply] msgs */ -#define foreach_vlib_api_msg \ -_(MEMCLNT_CREATE, memclnt_create, 1) \ -_(MEMCLNT_DELETE, memclnt_delete, 1) \ -_(MEMCLNT_KEEPALIVE, memclnt_keepalive, 0) \ -_(MEMCLNT_KEEPALIVE_REPLY, memclnt_keepalive_reply, 0) +#define foreach_vlib_api_msg \ + _ (MEMCLNT_CREATE, memclnt_create, 0) \ + _ (MEMCLNT_DELETE, memclnt_delete, 0) \ + _ (MEMCLNT_KEEPALIVE, memclnt_keepalive, 0) \ + _ (MEMCLNT_KEEPALIVE_REPLY, memclnt_keepalive_reply, 0) /* * memory_api_init @@ -451,6 +437,14 @@ vl_mem_api_init (const char *region_name) foreach_vlib_api_msg; #undef _ +#define vl_msg_name_crc_list +#include +#undef vl_msg_name_crc_list + +#define _(id, n, crc) vl_msg_api_add_msg_name_crc (am, #n "_" #crc, id); + foreach_vl_msg_name_crc_memclnt; +#undef _ + /* * special-case freeing of memclnt_delete messages, so we can * simply munmap pairwise / private API segments...