VCL: drain the vpp app event queue. 16/9616/2
authorDave Wallace <dwallacelf@gmail.com>
Wed, 29 Nov 2017 08:24:06 +0000 (03:24 -0500)
committerFlorin Coras <florin.coras@gmail.com>
Wed, 29 Nov 2017 19:17:41 +0000 (19:17 +0000)
Change-Id: If988b8ad33465819d0e5ab9ef92ffd69b3c7851c
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
src/vcl/vppcom.c

index e180967..7fb8e96 100644 (file)
@@ -2850,6 +2850,19 @@ vppcom_session_read_ready (session_t * session, u32 session_index)
        }
     }
   rv = ready;
+
+  if (vcm->app_event_queue->cursize &&
+      !pthread_mutex_trylock (&vcm->app_event_queue->mutex))
+    {
+      u32 i, n_to_dequeue = vcm->app_event_queue->cursize;
+      session_fifo_event_t e;
+
+      for (i = 0; i < n_to_dequeue; i++)
+       unix_shared_memory_queue_sub_raw (vcm->app_event_queue, (u8 *) & e);
+
+      pthread_mutex_unlock (&vcm->app_event_queue->mutex);
+    }
+
 done:
   return rv;
 }