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 0x%08x %10d 0x%08x 0x%08x\n", $token->t_desc, \
111 $token->t_flags, $token->t_collisions, $tokref->tr_owner, \
114 printf "%-15s 0x%08x %10d not held\n", $token->t_desc, \
115 $token->t_flags, $token->t_collisions
120 printf "\nToken flags collisions owner stallpc\n"
125 printf "\nToken flags collisions owner stallpc\n"
129 _infotok &vmspace_token
133 _infotok &vnode_token
134 _infotok &vmobj_token
137 # Documentation, usable within GDB using the 'help' command.
139 Output list of loaded file systems, refcount, similar to the
144 Iterate the current list of mount structures loaded from the
145 memory core, there should be one per loaded VFS.
149 Display the VFS operations vector for each file system found in
150 the memory core, preceded by a summarised header.
154 Output list of loaded kernel modules in kldstat(1) style.
158 Print command name of the given thread pointer (first argument).
162 Output a list of processes with wait-channel (wchan) informaiton.
165 document running_threads
166 List the threads which are currently running and their CPU number.
170 Output a list of processes.
174 Display all known global tokens and some information about them.
178 Takes one argument, a struct lwkt_token * (pointer) and prints some
179 information about that token.