- vec_add2 (fifo_events, e, 1);
- svm_msg_q_sub_w_lock (mq, msg);
- clib_memcpy (e, svm_msg_q_msg_data (mq, msg), sizeof (*e));
- svm_msg_q_free_msg (mq, msg);
+ for (i = 0; i < n_to_dequeue; i++)
+ {
+ vec_add2 (fifo_events, e, 1);
+ svm_msg_q_sub_w_lock (mq, msg);
+ /* Works because reply messages are smaller than a session evt.
+ * If we ever need to support bigger messages this needs to be
+ * fixed */
+ clib_memcpy_fast (e, svm_msg_q_msg_data (mq, msg), sizeof (*e));
+ svm_msg_q_free_msg (mq, msg);
+ }
+ svm_msg_q_unlock (mq);