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
99 set $proc = allproc->lh_first
101 printf "%p%6d%10s\n",$proc,$proc->p_pid,$proc->p_comm
102 set $proc = $proc->p_list.le_next
108 set $tokref = $token->t_ref
110 printf "%-15s %10d 0x%08x\n", $token->t_desc, \
111 $token->t_collisions, $tokref->tr_owner
113 printf "%-15s %10d not held\n", $token->t_desc, \
119 printf "\nToken collisions owner\n"
124 printf "\nToken collisions owner\n"
128 _infotok &vmspace_token
132 _infotok &vnode_token
133 _infotok &vmobj_token
137 set $bufp = msgbufp->msg_ptr
138 set $size = msgbufp->msg_size
139 set $rseq = msgbufp->msg_bufr % $size
140 set $wseq = msgbufp->msg_bufx % $size
141 if ( $bufp != 0 && $size != 0 && $rseq != $wseq )
142 while ( $rseq < $wseq )
143 set $c = $bufp + $rseq
145 set $rseq = $rseq + 1
146 if ( $rseq == msgbufp->msg_size )
157 # Documentation, usable within GDB using the 'help' command.
159 Output list of loaded file systems, refcount, similar to the
164 Iterate the current list of mount structures loaded from the
165 memory core, there should be one per loaded VFS.
169 Display the VFS operations vector for each file system found in
170 the memory core, preceded by a summarised header.
174 Output list of loaded kernel modules in kldstat(1) style.
178 Print command name of the given thread pointer (first argument).
182 Output a list of processes with wait-channel (wchan) information.
185 document running_threads
186 List the threads which are currently running and their CPU number.
190 Output a list of processes.
194 Display all known global tokens and some information about them.
198 Takes one argument, a struct lwkt_token * (pointer) and prints some
199 information about that token.
203 Shows the unread portion of the kernel message buffer.