-void segment_manager_get_segment_info (u32 index, u8 ** name, u32 * size);
-int
-session_manager_add_first_segment (segment_manager_t * sm, u32 segment_size);
-int session_manager_add_segment (segment_manager_t * sm);
+always_inline u64
+segment_manager_make_segment_handle (u32 segment_manager_index,
+ u32 segment_index)
+{
+ return (((u64) segment_manager_index << 32) | segment_index);
+}
+
+u64 segment_manager_segment_handle (segment_manager_t * sm,
+ svm_fifo_segment_private_t * segment);
+
+segment_manager_t *segment_manager_new ();
+int segment_manager_init (segment_manager_t * sm, u32 first_seg_size,
+ u32 prealloc_fifo_pairs);
+
+svm_fifo_segment_private_t *segment_manager_get_segment (segment_manager_t *,
+ u32 segment_index);
+svm_fifo_segment_private_t *segment_manager_get_segment_w_handle (u64);
+svm_fifo_segment_private_t
+ * segment_manager_get_segment_w_lock (segment_manager_t * sm,
+ u32 segment_index);
+int segment_manager_add_segment (segment_manager_t * sm, u32 segment_size);
+void segment_manager_del_segment (segment_manager_t * sm,
+ svm_fifo_segment_private_t * fs);
+void segment_manager_segment_reader_unlock (segment_manager_t * sm);
+void segment_manager_segment_writer_unlock (segment_manager_t * sm);
+
+int segment_manager_add_first_segment (segment_manager_t * sm,
+ u32 segment_size);