zopen.3: zap file since zopen() is only used via compress(1)
[dragonfly.git] / share / misc / gdbinit
1 #
2 # Command file for the GNU Debugger, for kernel debugging.
3 #
4 # This file can either be put in your home directory as ~/.gdbinit,
5 # or selected at run time as:
6 #
7 #       'gdb -k -q -x /usr/share/misc/gdbinit ...'
8 #
9 set print union
10 set history expansion on
11
12 define pcomm
13         printf "%10s\n",$arg0->td_comm
14 end
15
16 define lsvfs
17         set $vfc = (struct vfsconf *)vfsconf_list.stqh_first
18         printf "\nFilesystem      Refs    Flags\n"
19         while ($vfc != 0)
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
23         end
24 end
25
26 define lsmount
27         set $mnt = (mountlist->tqh_first)
28         while ($mnt != 0)
29                 print *$mnt
30                 set $mnt = $mnt->mnt_list->tqe_next
31         end
32 end
33
34 define lsvfsops
35         set $vfc = (struct vfsconf *)vfsconf_list.stqh_first
36         while ($vfc != 0)
37                 printf "Filesystem: %s, Refs: %d, Flags: 0x%08x\n", \
38                         $vfc->vfc_name, $vfc->vfc_refcount, $vfc->vfc_flags
39                 printf "VFS ops: \n"
40                 set print pretty
41                 print *$vfc->vfc_vfsops
42                 set print pretty off
43                 set $vfc = $vfc->vfc_next.stqe_next
44         end
45 end
46
47
48 define kldstat
49         set $kld = linker_files.tqh_first
50         printf "\nId Refs Address    Size     Name\n"
51         while ($kld != 0)
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
55         end
56 end
57
58 define psx
59     set $cpu = 0
60     printf "\ncpu  pid    thread    flags comm               wchan    wmesg\n"
61     while ($cpu < ncpus)
62         set $gd = &((struct privatespace *)&CPU_prvspace)[$cpu].mdglobaldata
63         set $td = $gd->mi.gd_tdallq.tqh_first
64         while ( $td != 0 )
65             if ( $td->td_proc != 0 )
66                 set $pid = $td->td_proc->p_pid
67             else
68                 set $pid = -1
69             end
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, \
73                     $td->td_wmesg
74             else
75                 printf "%3d %5d %08x %08x %-18s %08x\n",        \
76                     $cpu, $pid, $td, $td->td_flags, $td->td_comm, $td->td_wchan
77             end
78             set $td = $td->td_allq.tqe_next
79         end
80         set $cpu = $cpu + 1
81     end
82 end
83
84
85 define running_threads
86     set $icpu = 0
87         printf "\ncpu    curthread    wchan\n"
88         while ($icpu < ncpus)
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
94             set $icpu = $icpu + 1
95         end
96 end
97
98 define psax
99     set $proc = allproc->lh_first
100     while $proc != 0
101         printf "%p%6d%10s\n",$proc,$proc->p_pid,$proc->p_comm
102         set $proc = $proc->p_list.le_next
103     end
104 end
105
106 define _infotok
107         set $token = ($arg0)
108         set $tokref = $token->t_ref
109         if ($tokref != 0)
110                 printf "%-15s %10d 0x%08x\n", $token->t_desc, \
111                         $token->t_collisions, $tokref->tr_owner
112         else
113                 printf "%-15s %10d not held\n", $token->t_desc, \
114                         $token->t_collisions
115         end
116 end
117
118 define infotok
119         printf "\nToken           collisions owner\n"
120         _infotok ($arg0)
121 end
122
123 define lstok
124         printf "\nToken           collisions owner\n"
125         _infotok &pmap_token
126         _infotok &dev_token
127         _infotok &vm_token
128         _infotok &vmspace_token
129         _infotok &kvm_token
130         _infotok &proc_token
131         _infotok &tty_token
132         _infotok &vnode_token
133         _infotok &vmobj_token
134 end
135
136 define lstdtok
137         set $mytd=($arg0)
138         printf "\nTokens for td  %p (%s)\n", $mytd, $mytd->td_comm
139         printf "\nToken           collisions owner\n"
140         set $pos = 0
141         while (td->td_toks_array[$pos]->tr_tok) != 0
142                 _infotok &td->td_toks_array[$pos++]->tr_tok
143         end
144 end
145
146 define dmesg
147         set $bufp = msgbufp->msg_ptr
148         set $size = msgbufp->msg_size
149         set $rseq = msgbufp->msg_bufr % $size
150         set $wseq = msgbufp->msg_bufx % $size
151         if ( $bufp != 0 && $size != 0 && $rseq != $wseq )
152                 while ( $rseq < $wseq )
153                         set $c = $bufp + $rseq
154                         printf "%c", *$c
155                         set $rseq = $rseq + 1
156                         if ( $rseq == msgbufp->msg_size )
157                                 set $rseq = 0
158                         end
159                 end
160                 if ( *$c == '\n' )
161                         printf "\n"
162                 end
163                 printf "\n"
164         end
165 end
166
167 # Documentation, usable within GDB using the 'help' command.
168 document lsvfs
169 Output list of loaded file systems, refcount, similar to the
170 lsvfs(1) utility.
171 end
172
173 document lsmount
174 Iterate the current list of mount structures loaded from the
175 memory core, there should be one per loaded VFS.
176 end
177
178 document lsvfsops
179 Display the VFS operations vector for each file system found in
180 the memory core, preceded by a summarised header.
181 end
182
183 document kldstat
184 Output list of loaded kernel modules in kldstat(1) style.
185 end
186
187 document pcomm
188 Print command name of the given thread pointer (first argument).
189 end
190
191 document psx
192 Output a list of processes with wait-channel (wchan) information.
193 end
194
195 document running_threads
196 List the threads which are currently running and their CPU number.
197 end
198
199 document psax
200 Output a list of processes.
201 end
202
203 document lstok
204 Display all known global tokens and some information about them.
205 end
206
207 document lstdtok
208 Display all tokens related to the specified thread.
209 end
210
211 document infotok
212 Takes one argument, a struct lwkt_token * (pointer) and prints some
213 information about that token.
214 end
215
216 document dmesg
217 Shows the unread portion of the kernel message buffer.
218 end