Files
Arquivotheca.Solaris-2.5/uts/sun4u/forthdebug/fdbg/common.fdbg
seta75D 7c4988eac0 Init
2021-10-11 19:38:01 -03:00

813 lines
14 KiB
Plaintext
Executable File

#ident "@(#)common.fdbg 1.11 95/06/13 SMI"
#include <sys/param.h>
#include <sys/types.h>
#include <sys/user.h>
#include <sys/cred.h>
#include <sys/proc.h>
#include <sys/cpuvar.h>
#include <sys/thread.h>
#include <sys/sysinfo.h>
#include <sys/vfs.h>
#include <sys/time.h>
#include <sys/vnode.h>
#include <sys/disp.h>
#include <sys/var.h>
#include <sys/ts.h>
#include <sys/kstat.h>
#if defined(sun4) || defined(sun4c) || defined(sun4e)
#include <vm/hat_sunm.h>
#endif
#if defined(sun4m) || defined(sun4d)
#include <vm/hat_srmmu.h>
#endif
#if defined(sun4u)
#include <vm/hat_sfmmu.h>
#endif
#include <sys/ivintr.h>
#include <sys/intr.h>
#include <sys/machcpuvar.h>
#include <sys/sysiosbus.h>
#include <sys/iommu.h>
#include <sys/iocache.h>
#include <vm/anon.h>
#include <vm/as.h>
#include <vm/hat.h>
#include <vm/page.h>
#include <vm/pvn.h>
#include <vm/seg.h>
#include <vm/seg_dev.h>
#include <vm/seg_enum.h>
#include <vm/seg_kp.h>
#include <vm/seg_map.h>
#include <vm/seg_vn.h>
#include <sys/mutex_impl.h>
#include <sys/rwlock_impl.h>
#include <sys/callo.h>
#include <sys/ddi_impldefs.h>
#include <sys/kmem_impl.h>
#include <sys/siginfo.h>
#include <sys/memlist.h>
#include <sys/modctl.h>
#include <sys/kobj.h>
#include <sys/privregs.h>
#include <sys/machpcb.h>
#include <sys/traptrace.h>
\ basic type printing routines
forth_start
: .dev_t ( dev -- ) dup d# 18 >> .d h# 3ffff and .d ;
forth_end
\
\ lock information
\
adaptive_mutex
_rwlock_impl
type x
waiters x
owner x
forth_start
alias .mutex .adaptive_mutex
alias .rwlock ._rwlock_impl
forth_end
\
\ vm information
\
seg_next
list x
as
a_contents .mutex
a_vbits x
a_cv x
a_hat x
a_rss x
a_cache x
a_lock .rwlock
a_segs .seg_next
a_size x
a_tail x
a_nsegs d
a_lrep x
a_hilevel x
seg
s_base x
s_size x
s_as x
s_prev x
s_next .seg_next
s_ops .adr
s_data x
page
hat
hat_op .adr
hat_next x
hat_as x
hat_data x
hment
hme_page x
hme_next x
hme_hat x
hme_impl x
hme_prev x
memseg
memlist
forth_start
: .seg-list ( seg -- )
[ also seg-words ]
[ also seg_next-words ]
begin ?dup while ( seg )
dup .seg cr s_next list ( seg' )
repeat ( )
[ previous ]
[ previous ]
;
: .seg-addr ( as addr -- )
[ also as-words ]
[ also seg-words ]
[ also seg_next-words ]
swap a_segs list
begin ?dup while ( addr seg )
2dup dup s_base swap ( addr seg addr base seg )
s_size over + ( addr seg addr base end )
within if ( addr seg )
.seg drop exit ( )
then ( addr seg )
s_next list ( addr seg' )
repeat ( addr )
. ." not found" ( )
[ previous ]
[ previous ]
[ previous ]
;
: .page-n ( n -- )
[ also page-words ]
[ also memseg-words ]
symbol memsegs l@ ( n memseg )
begin ?dup while ( n memseg )
2dup ( n memseg n memseg )
dup pages_base swap pages_end ( n memseg n base end )
within if ( n memseg )
2dup pages_base - ( n memseg noff )
['] .page sizeof * swap ( n poff memseg )
pages + .page drop exit ( )
then ( n memseg )
next ( n memseg' )
repeat ( n )
. ." not found" ( )
[ previous ]
[ previous ]
;
: .memseg-list ( -- )
[ also memseg-words ]
symbol memsegs l@ ( memseg )
begin ?dup while ( memseg )
dup .memseg cr next ( memseg' )
repeat
[ previous ]
;
: .memlist-list ( memlist -- )
[ also memlist-words ]
begin ?dup while ( memlist )
dup .memlist cr next ( memlist' )
repeat ( )
[ previous ]
;
forth_end
\
\ thread information
\
_label_t
timeval
itimerval
it_interval .timeval
it_value .timeval
k_sigset_t
k_siginfo
si_signo x
si_code x
si_errno d
_kthread
t_link x
t_stk x
t_bound_cpu x
t_affinitycnt d
t_bind_cpu d
t_flag x
t_proc_flag x
t_schedflag x
t_pre_sys x
t_preempt d
t_state x
t_pri d
t_epri d
t_pcb ._label_t
t_wchan0 x
t_wchan x
t_sobj_ops .adr
t_cid x
t_clfuncs x
t_cldata x
t_ctx x
t_lofault x
t_onfault x
t_nofault x
t_swap x
t_lock x
t_delay_cv x
t_cpu x
t_intr x
t_did d
t_tid d
t_alarmid x
t_realitimer .itimerval
t_itimerid x
t_sigqueue x
t_sig .k_sigset_t
t_hold .k_sigset_t
t_forw x
t_back x
t_lwp x
t_procp x
t_next x
t_prev x
t_trace x
t_whystop d
t_whatstop d
t_sysnum d
t_pollstate x
t_cred x
t_lbolt x
t_pctcpu x
t_lockp x
t_oldspl x
t_disp_cpu x
t_disp_time d
t_kpri_req d
t_waitrq x
t_mstate d
t_rprof x
t_prioinv x
t_ts x
mstate
ms_prev x
ms_start x
ms_term x
ms_state_start x
_klwp
lwp_oldcontext x
lwp_ap x
lwp_errno d
lwp_error x
lwp_eosys x
lwp_arg x
lwp_regs x
lwp_fpu x
lwp_qsav ._label_t
lwp_cursig x
lwp_curflt x
lwp_sysabort x
lwp_asleep x
lwp_curinfo x
lwp_sigoldmask .k_sigset_t
lwp_prof x
lwp_mstate .mstate
lwp_lastfault d
lwp_lastfaddr x
lwp_oweupc x
lwp_state x
lwp_nostop x
lwp_cv x
lwp_utime x
lwp_stime x
lwp_thread x
lwp_procp x
proc
p_exec x
p_as x
p_lock .mutex
p_crlock .mutex
p_cred x
p_swapcnt d
p_stat d
p_ppid d
p_link x
p_parent x
p_child x
p_sibling x
p_psibling x
p_sibling_ns x
p_child_ns x
p_next x
p_prev x
p_nextofkin x
p_orphan x
p_nextorph x
p_pglink x
p_sessp x
p_pidp x
p_pgidp x
p_cv x
p_flag_cv x
p_lwpexit x
p_holdlwps x
p_flag x
p_utime x
p_stime x
p_cutime x
p_cstime x
p_segacct x
p_brkbase x
p_brksize x
p_sig .k_sigset_t
p_ignore .k_sigset_t
p_siginfo .k_sigset_t
p_sigqueue x
p_stopsig d
p_lwptotal d
p_lwpcnt d
p_lwprcnt d
p_lwpblocked d
p_zombcnt d
p_tlist x
p_zomblist x
p_sigmask .k_sigset_t
p_trace x
p_plist x
p_rlink x
p_srwchan_cv x
p_stksize x
p_user x
forth_start
alias .thread ._kthread
alias .lwp ._klwp
h# 7ff constant v9bias
: l0x ( sp -- sp l0 ) dup v9bias + d# 0 + x@ ;
: l1x ( sp -- sp l1 ) dup v9bias + d# 8 + x@ ;
: l2x ( sp -- sp l2 ) dup v9bias + d# 16 + x@ ;
: l3x ( sp -- sp l3 ) dup v9bias + d# 24 + x@ ;
: l4x ( sp -- sp l4 ) dup v9bias + d# 32 + x@ ;
: l5x ( sp -- sp l5 ) dup v9bias + d# 40 + x@ ;
: l6x ( sp -- sp l6 ) dup v9bias + d# 48 + x@ ;
: l7x ( sp -- sp l7 ) dup v9bias + d# 56 + x@ ;
: i0x ( sp -- sp i0 ) dup v9bias + d# 64 + x@ ;
: i1x ( sp -- sp i1 ) dup v9bias + d# 72 + x@ ;
: i2x ( sp -- sp i2 ) dup v9bias + d# 80 + x@ ;
: i3x ( sp -- sp i3 ) dup v9bias + d# 88 + x@ ;
: i4x ( sp -- sp i4 ) dup v9bias + d# 96 + x@ ;
: i5x ( sp -- sp i5 ) dup v9bias + d# 104 + x@ ;
: i6x ( sp -- sp i6 ) dup v9bias + d# 112 + x@ ;
: i7x ( sp -- sp i7 ) dup v9bias + h# 120 + x@ ;
: l0 ( sp -- sp l0 ) dup d# 0 + l@ ;
: l1 ( sp -- sp l1 ) dup d# 4 + l@ ;
: l2 ( sp -- sp l2 ) dup d# 8 + l@ ;
: l3 ( sp -- sp l3 ) dup d# 12 + l@ ;
: l4 ( sp -- sp l4 ) dup d# 16 + l@ ;
: l5 ( sp -- sp l5 ) dup d# 20 + l@ ;
: l6 ( sp -- sp l6 ) dup d# 24 + l@ ;
: l7 ( sp -- sp l7 ) dup d# 28 + l@ ;
: i0 ( sp -- sp i0 ) dup d# 32 + l@ ;
: i1 ( sp -- sp i1 ) dup d# 36 + l@ ;
: i2 ( sp -- sp i2 ) dup d# 40 + l@ ;
: i3 ( sp -- sp i3 ) dup d# 44 + l@ ;
: i4 ( sp -- sp i4 ) dup d# 48 + l@ ;
: i5 ( sp -- sp i5 ) dup d# 52 + l@ ;
: i6 ( sp -- sp i6 ) dup d# 56 + l@ ;
: i7 ( sp -- sp i7 ) dup d# 60 + l@ ;
: .stacktrace ( sp -- )
begin dup pointer-bad? 0= over and while
dup 1 and if
i7x .subroutine ." from " i7x .subname cr
." ( " i0x .h i1x .h i2x .h i3x .h i4x .h i5x .h ." )" cr
i6x
else
i7 .subroutine ." from " i7 .subname cr
." ( " i0 .h i1 .h i2 .h i3 .h i4 .h i5 .h ." )" cr
i6
then
exit? throw nip
repeat
drop
;
: .threadtrace ( t -- )
[ also _kthread-words ]
[ also _label_t-words ]
t_pcb ( pcb )
." pc: " dup 0 ['] val index .x ( pcb )
." sp: " 1 ['] val index dup .x ( sp )
cr .stacktrace cr ( )
[ previous ]
[ previous ]
;
: .proctlist ( p -- )
[ also proc-words ]
[ also _kthread-words ]
p_tlist dup ( t0 t0 )
begin ( t0 t )
." thread " dup .x ( t0 t )
dup t_forw swap ( t0 t' t )
.threadtrace ( t0 t' )
2dup = until ( t0 t )
2drop ( )
[ previous ]
[ previous ]
;
: .threadlist ( -- )
[ also _kthread-words ]
symbol genunix:allthreads l@ ?dup if ( t )
dup ( t t )
begin ( t0 t )
." thread " dup .x ( t0 t )
dup t_next swap ( t0 t' t )
dup t_state if ( t0 t' t )
.threadtrace false ( t0 t false )
else ( t0 t' t )
." free" cr cr drop exit? ( t0 t' done? )
then ( t0 t' done? )
dup 2over = or nip until ( t0 t )
2drop ( )
then ( )
[ previous ]
;
forth_end
\
\ cpu information
\
_disp
disp_lock x
disp_npri d
disp_q x
disp_q_limit x
disp_qactmap x
disp_maxrunpri d
disp_max_unbound_pri d
disp_nrunnable d
cpu
cpu_id d
cpu_seqid d
cpu_flags x
cpu_thread x
cpu_idle_thread x
cpu_pause_thread x
cpu_lwp x
cpu_callo x
cpu_fpowner x
cpu_next x
cpu_prev x
cpu_next_onln x
cpu_prev_onln x
cpu_disp ._disp
cpu_runrun x
cpu_kprunrun x
cpu_dispthread x
cpu_thread_lock x
cpu_intr_stack x
cpu_on_intr x
cpu_intr_thread x
cpu_intr_actv x
cpu_base_spl d
cpu_m x
forth_start
alias .disp ._disp
: .cpu-n ( n -- )
dup 4 * symbol cpu + l@ ( n cpu )
?dup if ( n cpu )
.cpu drop ( )
else ( n )
." cpu[ " .d ." ] is NULL" ( )
then ( )
;
: .cpu-list ( -- )
[ also cpu-words ]
symbol cpu_list l@ ?dup if ( cpu0 )
dup ( cpu0 cpu0 )
begin ( cpu0 cpu )
dup .cpu cpu_next cr ( cpu0 cpu' )
2dup = until ( cpu0 cpu )
2drop ( )
then ( )
[ previous ]
;
forth_end
\
\ io information
\
dev_info
devi_parent x
devi_child x
devi_sibling x
devi_name .str
devi_addr .str
devi_nodeid x
devi_instance x
devi_ops .adr
devi_parent_data x
devi_driver_data x
devi_drv_prop_ptr x
devi_sys_prop_ptr x
devi_minor x
devi_next x
lldaddr_t
_f x
buf.b_un
b_addr x
buf
b_flags x
b_forw x
b_back x
av_forw x
av_back x
b_bcount d
b_un .buf.b_un
_b_blkno .lldaddr_t
b_resid d
b_proc .adr
b_pages x
b_bufsize d
b_iodone x
b_vp x
b_error d
b_edev .dev_t
forth_start
: .devinfo-tree ( dip -- ) recursive
[ also dev_info-words ]
dup .dev_info cr ( dip )
dup devi_child ?dup if ( dip child )
.devinfo-tree cr ( dip )
then ( dip )
dup devi_sibling ?dup if ( dip sibling )
.devinfo-tree cr ( dip )
then ( dip )
drop ( )
[ previous ]
;
: .devinfo-inst ( dip -- )
[ also dev_info-words ]
begin ?dup while ( dip )
.dev_info cr devi_next ( dip )
repeat ( )
[ previous ]
;
: .devinfo-level ( dip -- )
[ also dev_info-words ]
begin ?dup while ( dip )
.dev_info cr devi_sibling ( dip )
repeat ( )
[ previous ]
;
forth_end
\
\ module information
\
modctl
mod_next x
mod_prev x
mod_id d
mod_mp x
mod_inprogress_thread x
mod_modinfo x
mod_linkage x
mod_filename .str
mod_modname .str
mod_busy x
mod_stub x
mod_loaded x
mod_installed x
mod_noautounload x
mod_want x
mod_loadcnt d
module
syminfo x
total_allocated d
shdrs x
symhdr x
strhdr x
depends .str
symsize d
symspace x
flags x
text_size d
data_size d
text x
data x
symtbl_section d
symtbl x
strings x
hashsize d
buckets x
chains x
nsyms d
bss_align d
bss_size d
bss x
filename .str
forth_start
: .module-list ( -- )
[ also modctl-words ]
symbol modules dup ( mod0 mod0 )
begin ( mod0 mod )
dup mod_next swap ( mod0 mod' mod )
mod_mp ?dup if ( mod0 mod' mp )
.module cr ( mod0 mod' )
then ( mod0 mod' )
2dup = until ( mod0 mod' )
2drop ( )
[ previous ]
;
forth_end
\
\ kmem information
\
kmem_slab
kmem_cache
cache_lock .mutex
cache_flags x
cache_freelist x
cache_offset d
cache_alloc d
cache_alloc_fail d
cache_hash_shift x
cache_hash_mask x
cache_hash_table x
cache_nullslab .kmem_slab
cache_constructor .adr
cache_destructor .adr
cache_reclaim .adr
cache_bufsize d
cache_align d
cache_chunksize d
cache_slabsize d
cache_color d
cache_maxcolor d
cache_slab_create d
cache_slab_destroy d
cache_buftotal d
cache_bufmax d
cache_rescale d
cache_lookup_depth d
cache_kstat x
cache_cv x
cache_next x
cache_prev x
cache_name emit
cache_magazine_cache x
cache_magazine_size d
cache_magazine_maxsize d
cache_depot_lock .mutex
cache_cpu_rotor d
cache_ncpus d
cache_depot_contention d
cache_depot_contention_last d
cache_depot_alloc d
cache_depot_free d
cache_fmag_list x
cache_fmag_total d
cache_fmag_min d
cache_fmag_reaplimit d
cache_emag_list x
cache_emag_total d
cache_emag_min d
cache_emag_reaplimit d
\
\ fs information
\
vtype
vnode
v_flag x
v_count d
v_vfsmountedhere x
v_op .adr
v_vfsp x
v_stream x
v_pages x
v_type .vtype
v_rdev .dev_t
v_data x
v_filocks x
vfs
vfs_next x
vfs_op .adr
vfs_vnodecovered x
vfs_flag x
vfs_fstype d
vfs_data x
vfs_dev .dev_t
vfs_nsubmounts x
vfs_list x
vfs_hash x
\
\ misc information
\
callout
cred
cr_ref d
cr_uid d
cr_gid d
cr_ruid d
cr_rgid d
cr_suid d
cr_sgid d
cr_ngroups d
kstat_named.value
ul x
kstat_named
name emit
value .kstat_named.value