2 # Command file for the GNU Debugger, for kernel debugging.
4 # This file can either be put in your home directory as ~/.gdbinit,
5 # or selected at run time as:
7 # 'gdb -k -q -x /usr/share/misc/gdbinit ...'
10 set history expansion on
13 printf "%10s\n",$arg0->td_comm
17 set $vfc = (struct vfsconf *)vfsconf_list.stqh_first
18 printf "\nFilesystem Refs Flags\n"
20 printf "%-10s %6d 0x%08x\n", $vfc->vfc_name, \
21 $vfc->vfc_refcount, $vfc->vfc_flags
22 set $vfc = $vfc->vfc_next.stqe_next
27 set $mnt = (mountlist->tqh_first)
30 set $mnt = $mnt->mnt_list->tqe_next
35 set $vfc = (struct vfsconf *)vfsconf_list.stqh_first
37 printf "Filesystem: %s, Refs: %d, Flags: 0x%08x\n", \
38 $vfc->vfc_name, $vfc->vfc_refcount, $vfc->vfc_flags
41 print *$vfc->vfc_vfsops
43 set $vfc = $vfc->vfc_next.stqe_next
49 set $kld = linker_files.tqh_first
50 printf "\nId Refs Address Size Name\n"
52 printf "%2d %4d 0x%08x %-8x %s\n", \
53 $kld->id, $kld->refs, $kld->address, $kld->size, $kld->filename
54 set $kld = $kld->link.tqe_next
60 printf "\ncpu pid thread flags comm wchan wmesg\n"
62 set $gd = &((struct privatespace *)&CPU_prvspace)[$cpu].mdglobaldata
63 set $td = $gd->mi.gd_tdallq.tqh_first
65 if ( $td->td_proc != 0 )
66 set $pid = $td->td_proc->p_pid
70 if ( $td->td_wmesg != 0 )
71 printf "%3d %5d %08x %08x %-18s %08x %s\n", \
72 $cpu, $pid, $td, $td->td_flags, $td->td_comm, $td->td_wchan, \
75 printf "%3d %5d %08x %08x %-18s %08x\n", \
76 $cpu, $pid, $td, $td->td_flags, $td->td_comm, $td->td_wchan
78 set $td = $td->td_allq.tqe_next
85 define running_threads
87 printf "\ncpu curthread wchan\n"
89 set $ipvspace = (struct privatespace *)&CPU_prvspace
90 set $gd = $ipvspace[$icpu].mdglobaldata.mi
91 set $td = $gd.gd_curthread
92 printf "%d %10s %08x\n", \
93 $gd.gd_cpuid, $td->td_comm, $td->td_wchan
100 while $pos < allproc_hsize
101 set $proc = allprocs[$pos++]->lh_first
103 printf "%p%6d%10s\n",$proc,$proc->p_pid,$proc->p_comm
104 set $proc = $proc->p_list.le_next
111 set $tokref = $token->t_ref
113 printf "%-15s %10d 0x%08x\n", $token->t_desc, \
114 $token->t_collisions, $tokref->tr_owner
116 printf "%-15s %10d not held\n", $token->t_desc, \
122 printf "\nToken collisions owner\n"
129 printf "\nToken collisions owner\n"
133 _infotok &vmspace_token
135 while $tok < allproc_hsize
136 if (proc_tokens[$tok].t_collisions > 0)
137 _infotok &proc_tokens[$tok]
142 _infotok &vnode_token
144 if (vmobj_tokens[$obj].t_collisions > 0)
145 _infotok &vmobj_tokens[$obj]
153 printf "\nTokens for td %p (%s)\n", $mytd, $mytd->td_comm
154 printf "\nToken collisions owner\n"
156 while (td->td_toks_array[$pos]->tr_tok) != 0
157 _infotok &td->td_toks_array[$pos++]->tr_tok
162 set $bufp = msgbufp->msg_ptr
163 set $size = msgbufp->msg_size
164 set $rseq = msgbufp->msg_bufr % $size
165 set $wseq = msgbufp->msg_bufx % $size
166 if ( $bufp != 0 && $size != 0 && $rseq != $wseq )
167 while ( $rseq < $wseq )
168 set $c = $bufp + $rseq
170 set $rseq = $rseq + 1
171 if ( $rseq == msgbufp->msg_size )
182 # Documentation, usable within GDB using the 'help' command.
184 Output list of loaded file systems, refcount, similar to the
189 Iterate the current list of mount structures loaded from the
190 memory core, there should be one per loaded VFS.
194 Display the VFS operations vector for each file system found in
195 the memory core, preceded by a summarised header.
199 Output list of loaded kernel modules in kldstat(1) style.
203 Print command name of the given thread pointer (first argument).
207 Output a list of processes with wait-channel (wchan) information.
210 document running_threads
211 List the threads which are currently running and their CPU number.
215 Output a list of processes.
219 Display all known global tokens and some information about them.
223 Display all tokens related to the specified thread.
227 Takes one argument, a struct lwkt_token * (pointer) and prints some
228 information about that token.
232 Shows the unread portion of the kernel message buffer.