+void
+svm_fifo_segment_info (svm_fifo_segment_private_t * seg, uword * address,
+ u64 * size)
+{
+ if (seg->h->flags & FIFO_SEGMENT_F_IS_PRIVATE)
+ {
+ mheap_t *heap_header;
+
+ *address = pointer_to_uword (seg->ssvm.sh->heap);
+ heap_header = mheap_header (seg->ssvm.sh->heap);
+ *size = heap_header->max_size;
+ }
+ else
+ {
+ *address = seg->ssvm.sh->ssvm_va;
+ *size = seg->ssvm.ssvm_size;
+ }
+}
+
+mheap_t *
+svm_fifo_segment_heap (svm_fifo_segment_private_t * seg)
+{
+ return seg->ssvm.sh->heap;
+}
+
+u8 *
+format_svm_fifo_segment_type (u8 * s, va_list * args)
+{
+ svm_fifo_segment_private_t *sp;
+ sp = va_arg (*args, svm_fifo_segment_private_t *);
+ ssvm_segment_type_t st = ssvm_type (&sp->ssvm);
+
+ if ((sp->h->flags & FIFO_SEGMENT_F_IS_PRIVATE)
+ && !(sp->h->flags & FIFO_SEGMENT_F_IS_MAIN_HEAP))
+ s = format (s, "%s", "private-heap");
+ else if ((sp->h->flags & FIFO_SEGMENT_F_IS_PRIVATE)
+ && (sp->h->flags & FIFO_SEGMENT_F_IS_MAIN_HEAP))
+ s = format (s, "%s", "main-heap");
+ else if (st == SSVM_SEGMENT_MEMFD)
+ s = format (s, "%s", "memfd");
+ else if (st == SSVM_SEGMENT_SHM)
+ s = format (s, "%s", "shm");
+ else
+ s = format (s, "%s", "unknown");
+ return s;
+}
+