X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlibapi%2Fapi_shared.c;h=2c1d4e7828921f24cb2812412b1389feb016cbad;hb=c3a06556d1a4a63646d4cc7aa76274177a56c13f;hp=3b9c0f47b66f87c68c1ac464cdd49b37148b4415;hpb=3fca567ff438145e28dd1318ad5b1734c1091257;p=vpp.git diff --git a/src/vlibapi/api_shared.c b/src/vlibapi/api_shared.c index 3b9c0f47b66..2c1d4e78289 100644 --- a/src/vlibapi/api_shared.c +++ b/src/vlibapi/api_shared.c @@ -436,12 +436,8 @@ msg_handler_internal (api_main_t * am, vl_msg_api_free (the_msg); } -/* set to 1 if you want before/after message handler event logging */ -#define ELOG_API_MESSAGE_HANDLERS 0 - -#if ELOG_API_MESSAGE_HANDLERS > 0 static u32 -elog_id_for_msg_name (vlib_main_t * vm, char *msg_name) +elog_id_for_msg_name (vlib_main_t * vm, const char *msg_name) { uword *p, r; static uword *h; @@ -461,7 +457,6 @@ elog_id_for_msg_name (vlib_main_t * vm, char *msg_name) return r; } -#endif /* This is only to be called from a vlib/vnet app */ void @@ -472,26 +467,25 @@ vl_msg_api_handler_with_vm_node (api_main_t * am, u16 id = ntohs (*((u16 *) the_msg)); u8 *(*handler) (void *, void *, void *); -#if ELOG_API_MESSAGE_HANDLERS > 0 - { - /* *INDENT-OFF* */ - ELOG_TYPE_DECLARE (e) = + if (PREDICT_FALSE (vm->elog_trace_api_messages)) + { + /* *INDENT-OFF* */ + ELOG_TYPE_DECLARE (e) = + { + .format = "api-msg: %s", + .format_args = "T4", + }; + /* *INDENT-ON* */ + struct { - .format = "api-msg: %s", - .format_args = "T4", - }; - /* *INDENT-ON* */ - struct - { - u32 c; - } *ed; - ed = ELOG_DATA (&vm->elog_main, e); - if (id < vec_len (am->msg_names)) - ed->c = elog_id_for_msg_name (vm, am->msg_names[id]); - else - ed->c = elog_id_for_msg_name (vm, "BOGUS"); - } -#endif + u32 c; + } *ed; + ed = ELOG_DATA (&vm->elog_main, e); + if (id < vec_len (am->msg_names)) + ed->c = elog_id_for_msg_name (vm, (const char *) am->msg_names[id]); + else + ed->c = elog_id_for_msg_name (vm, "BOGUS"); + } if (id < vec_len (am->msg_handlers) && am->msg_handlers[id]) { @@ -521,26 +515,25 @@ vl_msg_api_handler_with_vm_node (api_main_t * am, if (!(am->message_bounce[id])) vl_msg_api_free (the_msg); -#if ELOG_API_MESSAGE_HANDLERS > 0 - { - /* *INDENT-OFF* */ - ELOG_TYPE_DECLARE (e) = { - .format = "api-msg-done: %s", - .format_args = "T4", - }; - /* *INDENT-ON* */ - - struct + if (PREDICT_FALSE (vm->elog_trace_api_messages)) { - u32 c; - } *ed; - ed = ELOG_DATA (&vm->elog_main, e); - if (id < vec_len (am->msg_names)) - ed->c = elog_id_for_msg_name (vm, am->msg_names[id]); - else - ed->c = elog_id_for_msg_name (vm, "BOGUS"); - } -#endif + /* *INDENT-OFF* */ + ELOG_TYPE_DECLARE (e) = { + .format = "api-msg-done: %s", + .format_args = "T4", + }; + /* *INDENT-ON* */ + + struct + { + u32 c; + } *ed; + ed = ELOG_DATA (&vm->elog_main, e); + if (id < vec_len (am->msg_names)) + ed->c = elog_id_for_msg_name (vm, (const char *) am->msg_names[id]); + else + ed->c = elog_id_for_msg_name (vm, "BOGUS"); + } } void @@ -955,6 +948,23 @@ vl_msg_api_get_msg_index (u8 * name_and_crc) return ~0; } +void * +vl_msg_push_heap (void) +{ + api_main_t *am = &api_main; + pthread_mutex_lock (&am->vlib_rp->mutex); + return svm_push_data_heap (am->vlib_rp); +} + +void +vl_msg_pop_heap (void *oldheap) +{ + api_main_t *am = &api_main; + svm_pop_heap (oldheap); + pthread_mutex_unlock (&am->vlib_rp->mutex); +} + + /* * fd.io coding-style-patch-verification: ON *