etp-commands
来自「OTP是开放电信平台的简称」· 代码 · 共 1,993 行 · 第 1/4 页
TXT
1,993 行
else if (($arg0) & 0xF) == 0x7 etp-port-1 ($arg0) else if (($arg0) & 0xF) == 0xf # Fixnum printf "%ld", (long)((Sint)($arg0)>>4) else # Immediate2 - 0xB if (($arg0) & 0x3f) == 0x0b etp-atom-1 ($arg0) else if (($arg0) & 0x3f) == 0x1b printf "#Catch<%d>", ($arg0)>>6 else if (($arg0) == $etp_nil) printf "[]" else printf "#UnknownImmediate<%#x>", ($arg0) end end end end end end endenddefine etp-atom-1# Args: Eterm atom## Non-reentrant# if ((Eterm)($arg0) & 0x3f) != 0xb printf "#NotAtom<%#x>", ($arg0) else set $etp_atom_1_ap = (Atom*)erts_atom_table.seg_table[(Eterm)($arg0)>>16][((Eterm)($arg0)>>6)&0x3FF] set $etp_atom_1_i = ($etp_atom_1_ap)->len set $etp_atom_1_p = ($etp_atom_1_ap)->name set $etp_atom_1_quote = 1 # Check if atom has to be quoted if ($etp_atom_1_i > 0) etp-ct-atom-1 (*$etp_atom_1_p) if $etp_ct_atom # Atom start character set $etp_atom_1_p++ set $etp_atom_1_i-- set $etp_atom_1_quote = 0 else set $etp_atom_1_i = 0 end end while $etp_atom_1_i > 0 etp-ct-name-1 (*$etp_atom_1_p) if $etp_ct_name # Name character set $etp_atom_1_p++ set $etp_atom_1_i-- else set $etp_atom_1_quote = 1 set $etp_atom_1_i = 0 end end # Print the atom if $etp_atom_1_quote printf "'" end set $etp_atom_1_i = ($etp_atom_1_ap)->len set $etp_atom_1_p = ($etp_atom_1_ap)->name while $etp_atom_1_i > 0 etp-char-1 (*$etp_atom_1_p) '\'' set $etp_atom_1_p++ set $etp_atom_1_i-- end if $etp_atom_1_quote printf "'" end endenddefine etp-char-1# Args: int char, int quote_char## Non-reentrant# if (($arg0) < 0) || (0377 < ($arg0)) printf "#NotChar<%#x>", ($arg0) else if ($arg0) == ($arg1) printf "\\%c", ($arg0) else etp-ct-printable-1 ($arg0) if $etp_ct_printable if $etp_ct_printable < 0 printf "%c", ($arg0) else printf "\\%c", $etp_ct_printable end else printf "\\%03o", ($arg0) end end endenddefine etp-ct-printable-1# Args: int## Determines if integer is a printable character## Non-reentrant# Returns: $etp_ct_printable# escape alias char, or -1 if no escape alias if ($arg0) == 010 set $etp_ct_printable = 'b' else if ($arg0) == 011 set $etp_ct_printable = 't' else if ($arg0) == 012 set $etp_ct_printable = 'n' else if ($arg0) == 013 set $etp_ct_printable = 'v' else if ($arg0) == 014 set $etp_ct_printable = 'f' else if ($arg0) == 033 set $etp_ct_printable = 'e' else if ((040 <= ($arg0)) && (($arg0) <= 0176)) || \ ((0240 <= ($arg0)) && (($arg0) <= 0377)) # Other printable character set $etp_ct_printable = -1 else set $etp_ct_printable = 0 end end end end end end endenddefine etp-ct-atom-1# Args: int## Determines if integer is a atom first character## Non-reentrant# Returns: $etp_ct_atom if ((0141 <= ($arg0)) && (($arg0) <= 0172)) || \ ((0337 <= ($arg0)) && (($arg0) != 0367) && (($arg0) <= 0377)) # Atom start character set $etp_ct_atom = 1 else set $etp_ct_atom = 0 endenddefine etp-ct-variable-1# Args: int## Determines if integer is a variable first character## Non-reentrant# Returns: $etp_ct_variable if ((056 == ($arg0)) || \ (0101 <= ($arg0)) && (($arg0) <= 0132)) || \ (0137 == ($arg0)) || \ ((0300 <= ($arg0)) && (($arg0) != 0327) && (($arg0) <= 0336)) # Variable start character set $etp_ct_variable = 1 else set $etp_ct_variable = 0 endenddefine etp-ct-name-1# Args: int## Determines if integer is a name character, # i.e non-first atom or variable character.## Non-reentrant# Returns: $etp_ct_variable if (($arg0) == 0100 || \ (060 <= ($arg0)) && (($arg0) <= 071)) set $etp_ct_name = 1 else etp-ct-atom-1 ($arg0) if $etp_ct_atom set $etp_ct_name = 1 else etp-ct-variable-1 ($arg0) set $etp_ct_name = $etp_ct_variable end endenddefine etp-pid-1# Args: Eterm pid## Non-reentrant# set $etp_pid_1 = (Eterm)($arg0) if ($etp_pid_1 & 0xF) == 0x3 # Internal pid printf "<0.%u.%u>", (unsigned) ($etp_pid_1>>4)&0x7fff, \ (unsigned) ($etp_pid_1>>19)&0x1fff else printf "#NotPid<%#x>", ($arg0) endenddefine etp-extpid-1# Args: Eterm extpid## Non-reentrant# if ((Eterm)($arg0) & 0x3) != 0x2 printf "#NotBoxed<%#x>", (Eterm)($arg0) else set $etp_extpid_1_p = (ExternalThing*)((Eterm)($arg0) & ~0x3) if ($etp_extpid_1_p->header & 0x3f) != 0x30 printf "#NotExternalPid<%#x>", $etp_extpid_1_p->header else ## External pid set $etp_extpid_1_number = $etp_extpid_1_p->data[0]&0x7fff set $etp_extpid_1_serial = ($etp_extpid_1_p->data[0]>>15)&0x1fff set $etp_extpid_1_np = $etp_extpid_1_p->node set $etp_extpid_1_creation = $etp_extpid_1_np->creation set $etp_extpid_1_dep = $etp_extpid_1_np->dist_entry set $etp_extpid_1_node = $etp_extpid_1_np->sysname if ($etp_extpid_1_node & 0x3f) != 0xb # Should be an atom printf "#ExternalPidError<%#x>", ($arg0) else if $etp_extpid_1_dep == erts_this_dist_entry printf "<0:" else printf "<%u:", $etp_extpid_1_node>>6 end etp-atom-1 ($etp_extpid_1_node) printf "/%u.%u.%u>", $etp_extpid_1_creation, \ $etp_extpid_1_number, $etp_extpid_1_serial end end endenddefine etp-port-1# Args: Eterm port## Non-reentrant# set $etp_port_1 = (Eterm)($arg0) if ($etp_port_1 & 0xF) == 0x7 # Internal port printf "#Port<0.%u>", (unsigned) ($etp_port_1>>4)&0x3ffff else printf "#NotPort<%#x>", ($arg0) endenddefine etp-extport-1# Args: Eterm extport## Non-reentrant# if ((Eterm)($arg0) & 0x3) != 0x2 printf "#NotBoxed<%#x>", (Eterm)($arg0) else set $etp_extport_1_p = (ExternalThing*)((Eterm)($arg0) & ~0x3) if ($etp_extport_1_p->header & 0x3F) != 0x34 printf "#NotExternalPort<%#x>", $etp_extport_1->header else ## External port set $etp_extport_1_number = $etp_extport_1_p->data[0]&0x3ffff set $etp_extport_1_np = $etp_extport_1_p->node set $etp_extport_1_creation = $etp_extport_1_np->creation set $etp_extport_1_dep = $etp_extport_1_np->dist_entry set $etp_extport_1_node = $etp_extport_1_np->sysname if ($etp_extport_1_node & 0x3f) != 0xb # Should be an atom printf "#ExternalPortError<%#x>", ($arg0) else if $etp_extport_1_dep == erts_this_dist_entry printf "#Port<0:" else printf "#Port<%u:", $etp_extport_1_node>>6 end etp-atom-1 ($etp_extport_1_node) printf "/%u.%u>", $etp_extport_1_creation, $etp_extport_1_number end end endenddefine etp-bignum-1# Args: Eterm bignum## Non-reentrant# if ((Eterm)($arg0) & 0x3) != 0x2 printf "#NotBoxed<%#x>", (Eterm)($arg0) else set $etp_bignum_1_p = (Eterm*)((Eterm)($arg0) & ~0x3) if ($etp_bignum_1_p[0] & 0x3b) != 0x08 printf "#NotBignum<%#x>", $etp_bignum_1_p[0] else set $etp_bignum_1_i = 2 * ($etp_bignum_1_p[0] >> 6) if $etp_bignum_1_i < 2 printf "#BignumError<%#x>", (Eterm)($arg0) else if $etp_bignum_1_p[0] & 0x04 printf "-" end set $etp_bignum_1_p = (digit_t *)($etp_bignum_1_p + 1) printf "16#" if $etp_arch64 while $etp_bignum_1_i > 0 set $etp_bignum_1_i-- printf "%08x", $etp_bignum_1_p[$etp_bignum_1_i] end else while $etp_bignum_1_i > 0 set $etp_bignum_1_i-- printf "%04x", $etp_bignum_1_p[$etp_bignum_1_i] end end end end endenddefine etp-float-1# Args: Eterm float## Non-reentrant# if ((Eterm)($arg0) & 0x3) != 0x2 printf "#NotBoxed<%#x>", (Eterm)($arg0) else set $etp_float_1_p = (Eterm*)((Eterm)($arg0) & ~0x3) if ($etp_float_1_p[0] & 0x3f) != 0x18 printf "#NotFloat<%#x>", $etp_float_1_p[0] else printf "%f", *(double*)($etp_float_1_p+1) end endenddefine etp-ref-1# Args: Eterm ref## Non-reentrant# if ((Eterm)($arg0) & 0x3) != 0x2 printf "#NotBoxed<%#x>", (Eterm)($arg0) else set $etp_ref_1_p = (RefThing *)((Eterm)($arg0) & ~0x3) if ($etp_ref_1_p->header & 0x3b) != 0x10 printf "#NotRef<%#x>", $etp_ref_1_p->header else set $etp_ref_1_nump = (Uint32 *) 0 set $etp_ref_1_error = 0 if ($etp_ref_1_p->header >> 6) == 0 set $etp_ref_1_error = 1 else if $etp_arch64 set $etp_ref_1_i = (int) ((Uint32 *) $etp_ref_1_p->data)[0] if (($etp_ref_1_i + 1) > (2 * ($etp_ref_1_p->header >> 6))) set $etp_ref_1_error = 1 else set $etp_ref_1_nump = &((Uint32 *) $etp_ref_1_p->data)[1] end else set $etp_ref_1_i = (int) ($etp_ref_1_p->header >> 6) set $etp_ref_1_nump = &((Uint32 *) $etp_ref_1_p->data)[0] end end if $etp_ref_1_error printf "#InternalRefError<%#x>", ($arg0) else printf "#Ref<0" set $etp_ref_1_i-- while $etp_ref_1_i >= 0 printf ".%u", (unsigned) $etp_ref_1_nump[$etp_ref_1_i] set $etp_ref_1_i-- end printf ">" end end endenddefine etp-extref-1# Args: Eterm extref## Non-reentrant# if ((Eterm)($arg0) & 0x3) != 0x2 printf "#NotBoxed<%#x>", (Eterm)($arg0) else set $etp_extref_1_p = (ExternalThing*)((Eterm)($arg0) & ~0x3) if ($etp_extref_1_p->header & 0x3F) != 0x38 printf "#NotExternalRef<%#x>", $etp_extref_1->header else ## External ref set $etp_extref_1_nump = (Uint32 *) 0 set $etp_extref_1_error = 0 set $etp_extref_1_i = (int) ($etp_extref_1_p->header >> 6) set $etp_extref_1_np = $etp_extref_1_p->node set $etp_extref_1_creation = $etp_extref_1_np->creation set $etp_extref_1_dep = $etp_extref_1_np->dist_entry set $etp_extref_1_node = $etp_extref_1_np->sysname if ($etp_extref_1_node & 0x3f) != 0xb || $etp_extref_1_i < 3 # Node should be an atom set $etp_extref_1_error = 1 else ## $etp_extref_1_i now equals data (Uint) words set $etp_extref_1_i -= 2 if $etp_arch64 if ((((int) ((Uint32 *) $etp_extref_1_p->data)[0]) + 1) \ > (2 * $etp_extref_1_i)) set $etp_extref_1_error = 1 else set $etp_extref_1_nump = &((Uint32 *) $etp_extref_1_p->data)[1] set $etp_extref_1_i = (int) ((Uint32 *) $etp_extref_1_p->data)[0] end else set $etp_extref_1_nump = &((Uint32 *) $etp_extref_1_p->data)[0] end ## $etp_extref_1_i now equals no of ref num (Uint32) words if !$etp_extref_1_error if $etp_extref_1_dep == erts_this_dist_entry printf "#Ref<0:" else printf "#Ref<%u:", $etp_extref_1_node>>6 end etp-atom-1 ($etp_extref_1_node) printf "/%u", $etp_extref_1_creation end end if $etp_extref_1_error printf "#ExternalRefError<%#x>", ($arg0) else set $etp_extref_1_i-- while $etp_extref_1_i >= 0 printf ".%u", (unsigned) $etp_extref_1_nump[$etp_extref_1_i] set $etp_extref_1_i-- end printf ">" end end endenddefine etp-mfa-1# Args: Eterm*, int offset## Reentrant# printf "<" etp-atom-1 (((Eterm*)($arg0))[0]) printf ":" etp-atom-1 (((Eterm*)($arg0))[1]) printf "/%d", ((Eterm*)($arg0))[2] if ($arg1) > 0 printf "+%#x>", ($arg1) else printf ">" end enddefine etp-mfa# Args: Eterm*#
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?