BSD 4_4_Lite2 development
[unix-history] / .ref-BSD-4_4_Lite1 / usr / src / sys / i386 / scripts / 386.scripts
CommitLineData
f3c4f8ca
C
1set $maxargs = 0
2
3define xbt
4
5 set $usrstack = (unsigned long *) &kstack
6 set $ptmap = (unsigned long *) &PTmap
7
8 set $p = (struct proc *) $arg0
9 set $paddr = $p->p_addr
10 set $fix = (unsigned long *) $paddr - $usrstack
11
12 set $xfp = (unsigned long *) $paddr->u_pcb.pcb_tss.tss_ebp
13 set $xpc = (char *) &tsleep
14
15 while ($xfp > $usrstack && $xfp < $ptmap)
16
17 set $xfp += $fix
18
19 printf "Function:\t"
20 p/a $xpc
21
22 set $i = 0
23 while ($i < $maxargs)
24 set $arg = (unsigned long *) $xfp[$i + 2]
25 if ($arg > $usrstack && $arg < $ptmap)
26 set $arg += $fix
27 end
28 printf " arg %d:\t%#x\n", $i, (unsigned long) $arg
29 set $i++
30 end
31
32 set $xpc = $xfp[1]
33 set $xfp = (unsigned long *) $xfp[0]
34
35 end
36end
37
38define xps
39
40 set $p = allproc
41
42 printf " proc pid flag st wchan comm\n"
43 while ($p)
44 printf "%#10x %5d %8x %2x %#10x %s", $p, $p->p_pid, \
45 $p->p_flag, $p->p_stat, $p->p_wchan, \
46 (char *) $p->p_comm
47 if ($p->p_wmesg)
48 printf " (%s)", $p->p_wmesg
49 end
50 printf "\n"
51 set $p = $p->p_nxt
52 end
53end
54
55define pmappde
56
57 set $m = (struct pmap *) $arg0
58 set $v = (vm_offset_t) $arg1
59 set $PDSHIFT = 22
60
61 p (&(($m)->pm_pdir[((vm_offset_t)($v) >> $PDSHIFT)&1023]))
62
63end
64
65define pmappte
66
67 set $PTmap = (struct pte *) &PTmap
68 set $v = (vm_offset_t) $arg0
69 set $PGSHIFT = 12
70
71 p &$PTmap[$v >> $PGSHIFT]
72
73end
74
75define mapentries
76
77 set $map = (vm_map_t) $arg0
78 set $last = &$map->header
79 set $cur = $map->header.prev
80
81 printf " entry start end object offset\n"
82 while ($cur != $last)
83 printf "%#10x %#10x %#10x %#10x %#10x\n", $cur, $cur->start, \
84 $cur->end, $cur->object.vm_object, $cur->offset
85 set $cur = $cur->prev
86 end
87
88end
89
90define pagequeue
91
92 set $pq = (queue_entry_t) $arg0
93 set $m = (vm_page_t) $pq->next
94
95 printf " vm_page object offset phys flags\n"
96 while ((queue_entry_t) $m != $pq)
97 printf "%#10x %#10x %#10x %#10x ", $m, $m->object, \
98 $m->offset, $m->phys_addr
99 printf "%c%c%c%c%c%c%c%c%c\n", \
100 ($m->active ? 'A' : ' '), \
101 ($m->busy ? 'B' : ' '), \
102 ($m->clean ? 'C' : ' '), \
103 ($m->fake ? 'F' : ' '), \
104 ($m->inactive ? 'I' : ' '), \
105 ($m->laundry ? 'L' : ' '), \
106 ($m->object->paging_in_progress > 0 ? 'O' : ' '), \
107 ($m->pagerowned ? 'P' : ' '), \
108 ($m->tabled ? 'T' : ' ')
109 set $m = (vm_page_t) $m->pageq.next
110 end
111
112end
113
114define objectqueue
115
116 set $oq = (queue_entry_t) $arg0
117 set $o = (vm_object_t) $oq->next
118
119 printf " object size pages refs pip\n"
120 while ((queue_entry_t) $o != $oq)
121 printf "%#10x %#10x %5d %5d %5d\n", $o, $o->size, \
122 $o->resident_page_count, $o->ref_count, \
123 $o->paging_in_progress
124 set $o = (vm_object_t) $o->object_list.next
125 end
126
127end
128
129define objectmemq
130
131 set $o = (vm_object_t) $arg0
132 set $mq = (queue_entry_t) &$o->memq
133 set $m = (vm_page_t) $mq->next
134
135 printf " vm_page object offset phys flags\n"
136 while ((queue_entry_t) $m != $mq)
137 printf "%#10x %#10x %#10x %#10x ", $m, $m->object, \
138 $m->offset, $m->phys_addr
139 printf "%c%c%c%c%c%c%c%c%c\n", \
140 ($m->active ? 'A' : ' '), \
141 ($m->busy ? 'B' : ' '), \
142 ($m->clean ? 'C' : ' '), \
143 ($m->fake ? 'F' : ' '), \
144 ($m->inactive ? 'I' : ' '), \
145 ($m->laundry ? 'L' : ' '), \
146 ($m->object->paging_in_progress > 0 ? 'O' : ' '), \
147 ($m->pagerowned ? 'P' : ' '), \
148 ($m->tabled ? 'T' : ' ')
149 set $m = (vm_page_t) $m->listq.next
150 end
151
152end
153
154define bucketpage
155
156 set $p = (char *) ((u_long) $arg0 & ~0xfff)
157 set $i = (int) $arg1
158 set $end = $p + 0x1000
159
160 while ($p < $end)
161 printf "%#10x: %#10x\n", $p, *(u_long *)$p
162 set $p += $i
163 end
164
165end
166
167define vnodequeue
168
169 set $mp = (struct mount *) $arg0
170 set $vp = $mp->mnt_mounth
171
172 printf " vnode type flag id object\n"
173 while ($vp)
174 set $o = (vm_object_t) 0
175 set $pager = (vm_page_t) $vp->v_vmdata
176 if ($pager)
177 set $bucket = &vm_object_hashtable[(u_int) $pager % 157]
178 set $entry = (vm_object_hash_entry_t) $bucket->next
179 while ((queue_t) $entry != $bucket)
180 if ($entry->object->pager == $pager)
181 set $o = $entry->object
182 exitloop
183 end
184 set $entry = (vm_object_hash_entry_t) $entry->hash_links.next
185 end
186 end
187 printf "%#10x %4d %#6x %#10x %#10x\n", $vp, $vp->v_type, \
188 $vp->v_flag, $vp->v_id, $o
189 set $vp = $vp->v_mountf
190 end
191end
192
193define resourcemap
194
195 set $map = (struct map *) $arg0
196 set $me = ((struct mapent *) $map) + 1
197
198 printf "%s:\n", $map->m_name
199 printf " addr size\n"
200 while ($me < $map->m_limit && $me->m_size != 0xffffffff)
201 printf "%#10x %#10x\n", $me->m_addr, $me->m_size
202 set $me++
203 end
204end