vcl: cleanup and fixes for vcl test code
[vpp.git] / src / svm / svm_fifo.h
index ec32fd5..d7852a7 100644 (file)
@@ -36,8 +36,9 @@ typedef struct
 format_function_t format_ooo_segment;
 format_function_t format_ooo_list;
 
-#define SVM_FIFO_TRACE (0)
-#define OOO_SEGMENT_INVALID_INDEX ((u32)~0)
+#define SVM_FIFO_TRACE                         (0)
+#define OOO_SEGMENT_INVALID_INDEX      ((u32)~0)
+#define SVM_FIFO_INVALID_SESSION_INDEX         ((u32)~0)
 
 typedef struct
 {
@@ -60,8 +61,10 @@ typedef struct _svm_fifo
   u8 master_thread_index;
   u8 client_thread_index;
   u32 segment_manager;
+  u32 ct_session_index;                /**< Local session index for vpp */
     CLIB_CACHE_LINE_ALIGN_MARK (end_shared);
   u32 head;
+  volatile u32 want_tx_evt;    /**< producer wants nudge */
     CLIB_CACHE_LINE_ALIGN_MARK (end_consumer);
 
   /* producer */
@@ -169,6 +172,18 @@ svm_fifo_unset_event (svm_fifo_t * f)
   __sync_lock_release (&f->has_event);
 }
 
+static inline void
+svm_fifo_set_want_tx_evt (svm_fifo_t * f, u8 want_evt)
+{
+  f->want_tx_evt = want_evt;
+}
+
+static inline u8
+svm_fifo_want_tx_evt (svm_fifo_t * f)
+{
+  return f->want_tx_evt;
+}
+
 svm_fifo_t *svm_fifo_create (u32 data_size_in_bytes);
 void svm_fifo_free (svm_fifo_t * f);