- pool_foreach (seg, segments, ({
- if (seg->h->flags & FIFO_SEGMENT_F_IS_PRIVATE)
- {
- address = pointer_to_uword (seg->ssvm.sh->heap);
- if (seg->h->flags & FIFO_SEGMENT_F_IS_MAIN_HEAP)
- name = format (0, "main heap");
- else
- name = format (0, "private 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;
- name = seg->ssvm.sh->name;
- }
- active_fifos = svm_fifo_segment_num_fifos (seg);
- free_fifos = svm_fifo_segment_num_free_fifos (seg, ~0 /* size */);
- vlib_cli_output (vm, "%-25v%15llu%16u%16u%16llx",
- name, size >> 20ULL, active_fifos, free_fifos,
- address);
- if (verbose)
- vlib_cli_output (vm, "%U",
- format_svm_fifo_segment, seg, verbose);
- if (seg->h->flags & FIFO_SEGMENT_F_IS_PRIVATE)
- vec_free (name);
+ pool_foreach (sm, smm->segment_managers, ({
+ segment_manager_foreach_segment_w_lock (seg, sm, ({
+ svm_fifo_segment_info (seg, &address, &size);
+ active_fifos = svm_fifo_segment_num_fifos (seg);
+ free_fifos = svm_fifo_segment_num_free_fifos (seg, ~0 /* size */);
+ vlib_cli_output (vm, "%-15v%15U%15llu%15u%15u%15llx",
+ ssvm_name (&seg->ssvm), format_svm_fifo_segment_type,
+ seg, size >> 20ULL, active_fifos, free_fifos,
+ address);
+ if (verbose)
+ vlib_cli_output (vm, "%U", format_svm_fifo_segment, seg, verbose);
+ }));