File 2231-erts-Add-etp-dist-for-listing-all-dist-entries.patch of Package erlang

From 6b0bc6dfe2bffb3e6df8de46d2626f0da65d1df3 Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Tue, 12 Apr 2022 12:39:30 +0200
Subject: [PATCH] erts: Add etp-dist for listing all dist entries

---
 erts/etc/unix/etp-commands.in | 190 ++++++++++++++++++++++++++++++++++
 1 file changed, 190 insertions(+)

diff --git a/erts/etc/unix/etp-commands.in b/erts/etc/unix/etp-commands.in
index 18e52f2b37..a640d71753 100644
--- a/erts/etc/unix/etp-commands.in
+++ b/erts/etc/unix/etp-commands.in
@@ -3004,6 +3004,196 @@ document etp-ports
 %---------------------------------------------------------------------------
 end
 
+define etp-dist-entry
+  set $ede_de = $arg0
+  printf "  Name: "
+  etp $ede_de->sysname
+  printf "  State: "
+  if $ede_de->state == 0
+    printf "IDLE\n"
+  end
+  if $ede_de->state == 1
+    printf "PENDING\n"
+  end
+  if $ede_de->state == 2
+    printf "CONNECTED\n"
+  end
+  if $ede_de->state == 4
+    printf "EXITING\n"
+  end
+  printf "  Creation: %ld\n", $ede_de->creation
+  printf "  Queue Flags: "
+  if $ede_de->qflgs.counter & (1 << 0)
+    printf "BUSY "
+  end
+  if $ede_de->qflgs.counter & (1 << 1)
+    printf "EXIT "
+  end
+  if $ede_de->qflgs.counter & (1 << 2)
+    printf "REQ_INFO "
+  end
+  if $ede_de->qflgs.counter & (1 << 3)
+    printf "PORT_CTRL "
+  end
+  if $ede_de->qflgs.counter & (1 << 4)
+    printf "PROC_CTRL "
+  end
+  printf "\n  Queue Size: %ld\n", $ede_de->qsize.counter
+  printf "  Suspended: "
+  set $ede_suspended_first = $ede_de->suspended
+  if $ede_suspended_first != 0
+    etp-1 $ede_suspended_first->u.pid
+    printf " "
+    set $ede_suspended = $ede_suspended_first->next
+    while $ede_suspended != $ede_suspended_first
+      etp-1 $ede_suspended->u.pid
+      printf " "
+      set $ede_suspended = $ede_suspended->next
+    end
+  end
+  printf "\n  Flags: "
+  if $ede_de->dflags & ((Uint64)0x01)
+    printf "PUBLISHED "
+  end
+  if $ede_de->dflags & ((Uint64)0x02)
+    printf "ATOM_CACHE "
+  end
+  if $ede_de->dflags & ((Uint64)0x04)
+    printf "EXTENDED_REFERENCES "
+  end
+  if $ede_de->dflags & ((Uint64)0x08)
+    printf "DIST_MONITOR "
+  end
+  if $ede_de->dflags & ((Uint64)0x10)
+    printf "FUN_TAGS "
+  end
+  if $ede_de->dflags & ((Uint64)0x20)
+    printf "DIST_MONITOR_NAME "
+  end
+  if $ede_de->dflags & ((Uint64)0x40)
+    printf "HIDDEN_ATOM_CACHE "
+  end
+  if $ede_de->dflags & ((Uint64)0x80)
+    printf "NEW_FUN_TAGS "
+  end
+  if $ede_de->dflags & ((Uint64)0x100)
+    printf "EXTENDED_PIDS_PORTS "
+  end
+  if $ede_de->dflags & ((Uint64)0x200)
+    printf "EXPORT_PTR_TAG "
+  end
+  if $ede_de->dflags & ((Uint64)0x400)
+    printf "BIT_BINARIES "
+  end
+  if $ede_de->dflags & ((Uint64)0x800)
+    printf "NEW_FLOATS "
+  end
+  if $ede_de->dflags & ((Uint64)0x1000)
+    printf "UNICODE_IO "
+  end
+  if $ede_de->dflags & ((Uint64)0x2000)
+    printf "DIST_HDR_ATOM_CACHE "
+  end
+  if $ede_de->dflags & ((Uint64)0x4000)
+    printf "SMALL_ATOM_TAGS "
+  end
+  if $ede_de->dflags & ((Uint64)0x8000)
+    printf "ETS_COMPRESSED "
+  end
+  if $ede_de->dflags & ((Uint64)0x10000)
+    printf "UTF8_ATOMS "
+  end
+  if $ede_de->dflags & ((Uint64)0x20000)
+    printf "MAP_TAG "
+  end
+  if $ede_de->dflags & ((Uint64)0x40000)
+    printf "BIG_CREATION "
+  end
+  if $ede_de->dflags & ((Uint64)0x80000)
+    printf "SEND_SENDER "
+  end
+  if $ede_de->dflags & ((Uint64)0x100000)
+    printf "BIG_SEQTRACE_LABELS "
+  end
+  if $ede_de->dflags & ((Uint64)0x200000)
+    printf "PENDING_CONNECT "
+  end
+  if $ede_de->dflags & ((Uint64)0x400000)
+    printf "EXIT_PAYLOAD "
+  end
+  if $ede_de->dflags & ((Uint64)0x800000)
+    printf "FRAGMENTS "
+  end
+  if $ede_de->dflags & ((Uint64)0x1000000)
+    printf "HANDSHAKE_23 "
+  end
+  if $ede_de->dflags & ((Uint64)0x2000000)
+    printf "UNLINK_ID "
+  end
+  if $ede_de->dflags & ((Uint64)0x4000000)
+    printf "MANDATORY_25_DIGEST "
+  end
+  if $ede_de->dflags & ((Uint64)0xf8000000)
+    printf "RESERVED "
+  end
+  if $ede_de->dflags & (((Uint64)0x1) << 32)
+    printf "SPAWN "
+  end
+  if $ede_de->dflags & (((Uint64)0x2) << 32)
+    printf "NAME_ME "
+  end
+  if $ede_de->dflags & (((Uint64)0x4) << 32)
+    printf "V4_NC "
+  end
+  if $ede_de->dflags & (((Uint64)0x8) << 32)
+    printf "ALIAS "
+  end
+  printf "\n  Pointer: (DistEntry*)%p\n", $ede_de
+end
+
+document etp-dist-entry
+%---------------------------------------------------------------------------
+% etp-dist-entry DistEntry*
+% 
+% Print information about the DistEntry*
+%---------------------------------------------------------------------------
+end
+
+define etp-dist
+  set $de = erts_visible_dist_entries
+  while $de != 0
+    printf "--- visible\n"
+    etp-dist-entry $de
+    set $de = $de->next
+  end
+  set $de = erts_hidden_dist_entries
+  while $de != 0
+    printf "--- hidden\n"
+    etp-dist-entry $de
+    set $de = $de->next
+  end
+  set $de = erts_pending_dist_entries
+  while $de != 0
+    printf "--- pending\n"
+    etp-dist-entry $de
+    set $de = $de->next
+  end
+  set $de = erts_not_connected_dist_entries
+  while $de != 0
+    printf "--- not connected\n"
+    etp-dist-entry $de
+    set $de = $de->next
+  end
+end
+
+document etp-dist
+%---------------------------------------------------------------------------
+% etp-dist
+% 
+% Print information about all current dist entries
+%---------------------------------------------------------------------------
+end
+
 define etp-rq-flags-int
 # Args: int
 #
-- 
2.34.1

openSUSE Build Service is sponsored by