api: add mp-safe/barrier-sync indication to elogs 52/20152/1
authorDave Barach <dave@barachs.net>
Fri, 14 Jun 2019 21:29:55 +0000 (17:29 -0400)
committerDave Barach <dave@barachs.net>
Fri, 14 Jun 2019 21:30:30 +0000 (17:30 -0400)
Costs nothing, and leaves nothing to the imagination.

Type: fix

Change-Id: I7c9f9fb9325475c268eca062da7bbbf014438cfc
Signed-off-by: Dave Barach <dave@barachs.net>
src/vlibapi/api_shared.c
src/vlibmemory/memory_api.c

index 77a18c9..5b45b24 100644 (file)
@@ -469,6 +469,7 @@ vl_msg_api_handler_with_vm_node (api_main_t * am,
   u16 id = ntohs (*((u16 *) the_msg));
   u8 *(*handler) (void *, void *, void *);
   u8 *(*print_fp) (void *, void *);
+  int is_mp_safe = 1;
 
   if (PREDICT_FALSE (vm->elog_trace_api_messages))
     {
@@ -510,14 +511,15 @@ vl_msg_api_handler_with_vm_node (api_main_t * am,
              (*print_fp) (the_msg, vm);
            }
        }
+      is_mp_safe = am->is_mp_safe[id];
 
-      if (!am->is_mp_safe[id])
+      if (!is_mp_safe)
        {
          vl_msg_api_barrier_trace_context (am->msg_names[id]);
          vl_msg_api_barrier_sync ();
        }
       (*handler) (the_msg, vm, node);
-      if (!am->is_mp_safe[id])
+      if (!is_mp_safe)
        vl_msg_api_barrier_release ();
     }
   else
@@ -535,14 +537,22 @@ vl_msg_api_handler_with_vm_node (api_main_t * am,
   if (PREDICT_FALSE (vm->elog_trace_api_messages))
     {
       /* *INDENT-OFF* */
-      ELOG_TYPE_DECLARE (e) = {
-        .format = "api-msg-done: %s",
-        .format_args = "T4",
-      };
+      ELOG_TYPE_DECLARE (e) =
+        {
+          .format = "api-msg-done(%s): %s",
+          .format_args = "t4T4",
+          .n_enum_strings = 2,
+          .enum_strings =
+          {
+            "barrier",
+            "mp-safe",
+          }
+        };
       /* *INDENT-ON* */
 
       struct
       {
+       u32 barrier;
        u32 c;
       } *ed;
       ed = ELOG_DATA (&vm->elog_main, e);
@@ -550,6 +560,7 @@ vl_msg_api_handler_with_vm_node (api_main_t * am,
        ed->c = elog_id_for_msg_name (vm, (const char *) am->msg_names[id]);
       else
        ed->c = elog_id_for_msg_name (vm, "BOGUS");
+      ed->barrier = is_mp_safe;
     }
 }
 
index 10425dd..123aa22 100644 (file)
@@ -466,6 +466,7 @@ vl_mem_api_init (const char *region_name)
    */
   am->message_bounce[VL_API_MEMCLNT_DELETE] = 1;
   am->is_mp_safe[VL_API_MEMCLNT_KEEPALIVE_REPLY] = 1;
+  am->is_mp_safe[VL_API_MEMCLNT_KEEPALIVE] = 1;
 
   vlib_set_queue_signal_callback (vm, memclnt_queue_callback);