session: add option to preallocate fifo headers
[vpp.git] / src / vnet / session / segment_manager.h
index cd02d54..1710b7b 100644 (file)
@@ -27,6 +27,7 @@ typedef struct _segment_manager_props
   u32 tx_fifo_size;                    /**< transmit fifo size */
   u32 evt_q_size;                      /**< event queue length */
   u32 prealloc_fifos;                  /**< preallocated fifo pairs */
+  u32 prealloc_fifo_hdrs;              /**< preallocated fifo hdrs */
   uword segment_size;                  /**< first segment size */
   uword add_segment_size;              /**< additional segment size */
   u8 add_segment:1;                    /**< can add new segments flag */
@@ -125,6 +126,9 @@ int segment_manager_try_alloc_fifos (fifo_segment_t * fs,
                                     svm_fifo_t ** tx_fifo);
 void segment_manager_dealloc_fifos (svm_fifo_t * rx_fifo,
                                    svm_fifo_t * tx_fifo);
+void segment_manager_detach_fifo (segment_manager_t * sm, svm_fifo_t * f);
+void segment_manager_attach_fifo (segment_manager_t * sm, svm_fifo_t * f,
+                                 session_t * s);
 
 void segment_manager_set_watermarks (segment_manager_t * sm,
                                     u8 high_watermark, u8 low_watermark);
@@ -137,6 +141,7 @@ void segment_manager_dealloc_queue (segment_manager_t * sm, svm_queue_t * q);
 svm_msg_q_t *segment_manager_event_queue (segment_manager_t * sm);
 u32 segment_manager_evt_q_expected_size (u32 q_size);
 
+u8 segment_manager_app_detached (segment_manager_t * sm);
 void segment_manager_app_detach (segment_manager_t * sm);
 
 /**
@@ -155,6 +160,14 @@ void segment_manager_main_init (segment_manager_main_init_args_t * a);
 segment_manager_props_t *segment_manager_props_init (segment_manager_props_t *
                                                     sm);
 
+static inline void
+segment_manager_parse_segment_handle (u64 segment_handle, u32 * sm_index,
+                                     u32 * segment_index)
+{
+  *sm_index = segment_handle >> 32;
+  *segment_index = segment_handle & 0xFFFFFFFF;
+}
+
 #endif /* SRC_VNET_SESSION_SEGMENT_MANAGER_H_ */
 /*
  * fd.io coding-style-patch-verification: ON