summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/DB_COMMAND.9 3.html
blob: d4dcfa7df600c3804c34ceb04af06e441eaaf674 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<table class="head">
  <tr>
    <td class="head-ltitle">DB_COMMAND(9)</td>
    <td class="head-vol">Kernel Developer's Manual</td>
    <td class="head-rtitle">DB_COMMAND(9)</td>
  </tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">DB_COMMAND</code>,
    <code class="Nm">DB_COMMAND_FLAGS</code>,
    <code class="Nm">DB_SHOW_COMMAND</code>,
    <code class="Nm">DB_SHOW_COMMAND_FLAGS</code>,
    <code class="Nm">DB_SHOW_ALL_COMMAND</code>,
    <code class="Nm">DB_TABLE_COMMAND</code>,
    <code class="Nm">DB_TABLE_COMMAND_FLAGS</code>,
    <code class="Nm">DB_ALIAS</code>, <code class="Nm">DB_ALIAS_FLAGS</code>,
    <code class="Nm">DB_SHOW_ALIAS</code>,
    <code class="Nm">DB_SHOW_ALIAS_FLAGS</code>,
    <code class="Nm">DB_SHOW_ALL_ALIAS</code>,
    <code class="Nm">DB_TABLE_ALIAS</code>,
    <code class="Nm">DB_TABLE_ALIAS_FLAGS</code>
    <code class="Nm">DB_DECLARE_TABLE</code>,
    <code class="Nm">DB_DEFINE_TABLE</code>, &#x2014; <span class="Nd">Extends
    the ddb command set</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp"><code class="In">#include
    &lt;<a class="In">ddb/ddb.h</a>&gt;</code></p>
<p class="Pp"><code class="Fn">DB_COMMAND</code>(<var class="Fa" style="white-space: nowrap;">command_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>);</p>
<p class="Pp"><code class="Fn">DB_COMMAND_FLAGS</code>(<var class="Fa" style="white-space: nowrap;">command_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>,
    <var class="Fa" style="white-space: nowrap;">flags</var>);</p>
<p class="Pp"><code class="Fn">DB_SHOW_COMMAND</code>(<var class="Fa" style="white-space: nowrap;">command_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>);</p>
<p class="Pp"><code class="Fn">DB_SHOW_COMMAND_FLAGS</code>(<var class="Fa" style="white-space: nowrap;">command_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>,
    <var class="Fa" style="white-space: nowrap;">flags</var>);</p>
<p class="Pp"><code class="Fn">DB_SHOW_ALL_COMMAND</code>(<var class="Fa" style="white-space: nowrap;">command_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>);</p>
<p class="Pp"><code class="Fn">DB_TABLE_COMMAND</code>(<var class="Fa" style="white-space: nowrap;">table</var>,
    <var class="Fa" style="white-space: nowrap;">command_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>);</p>
<p class="Pp"><code class="Fn">DB_TABLE_COMMAND_FLAGS</code>(<var class="Fa" style="white-space: nowrap;">table</var>,
    <var class="Fa" style="white-space: nowrap;">command_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>,
    <var class="Fa" style="white-space: nowrap;">flags</var>);</p>
<p class="Pp"><code class="Fn">DB_ALIAS</code>(<var class="Fa" style="white-space: nowrap;">alias_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>);</p>
<p class="Pp"><code class="Fn">DB_ALIAS_FLAGS</code>(<var class="Fa" style="white-space: nowrap;">alias_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>,
    <var class="Fa" style="white-space: nowrap;">flags</var>);</p>
<p class="Pp"><code class="Fn">DB_SHOW_ALIAS</code>(<var class="Fa" style="white-space: nowrap;">alias_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>);</p>
<p class="Pp"><code class="Fn">DB_SHOW_ALIAS_FLAGS</code>(<var class="Fa" style="white-space: nowrap;">alias_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>,
    <var class="Fa" style="white-space: nowrap;">flags</var>);</p>
<p class="Pp"><code class="Fn">DB_SHOW_ALL_ALIAS</code>(<var class="Fa" style="white-space: nowrap;">alias_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>);</p>
<p class="Pp"><code class="Fn">DB_TABLE_ALIAS</code>(<var class="Fa" style="white-space: nowrap;">table</var>,
    <var class="Fa" style="white-space: nowrap;">alias_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>);</p>
<p class="Pp"><code class="Fn">DB_TABLE_ALIAS_FLAGS</code>(<var class="Fa" style="white-space: nowrap;">table</var>,
    <var class="Fa" style="white-space: nowrap;">alias_name</var>,
    <var class="Fa" style="white-space: nowrap;">command_function</var>,
    <var class="Fa" style="white-space: nowrap;">flags</var>);</p>
<p class="Pp"><code class="Fn">DB_DEFINE_TABLE</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
    <var class="Fa" style="white-space: nowrap;">name</var>,
    <var class="Fa" style="white-space: nowrap;">table</var>);</p>
<p class="Pp"><code class="Fn">DB_DECLARE_TABLE</code>(<var class="Fa" style="white-space: nowrap;">table</var>);</p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The
    <a class="permalink" href="#DB_COMMAND"><code class="Fn" id="DB_COMMAND">DB_COMMAND</code></a>()
    macro adds <var class="Fa">command_name</var> to the list of top-level
    commands. Invoking <var class="Fa">command_name</var> from ddb will call
    <var class="Fa">command_function</var>.</p>
<p class="Pp" id="DB_SHOW_COMMAND">The
    <a class="permalink" href="#DB_SHOW_COMMAND"><code class="Fn">DB_SHOW_COMMAND</code></a>()
    and
    <a class="permalink" href="#DB_SHOW_ALL_COMMAND"><code class="Fn" id="DB_SHOW_ALL_COMMAND">DB_SHOW_ALL_COMMAND</code></a>()
    macros are roughly equivalent to <code class="Fn">DB_COMMAND</code>() but in
    these cases, <var class="Fa">command_name</var> is a sub-command of the ddb
    <b class="Sy">show</b> command and <b class="Sy">show all</b> command,
    respectively.</p>
<p class="Pp" id="DB_TABLE_COMMAND">The
    <a class="permalink" href="#DB_TABLE_COMMAND"><code class="Fn">DB_TABLE_COMMAND</code></a>()
    macro is also similar to <code class="Fn">DB_COMMAND</code>() but adds the
    new command as a sub-command of the ddb command
  <var class="Fa">table</var>.</p>
<p class="Pp" id="DB_ALIAS">The
    <a class="permalink" href="#DB_ALIAS"><code class="Fn">DB_ALIAS</code></a>(),
    <a class="permalink" href="#DB_SHOW_ALIAS"><code class="Fn" id="DB_SHOW_ALIAS">DB_SHOW_ALIAS</code></a>(),
    <a class="permalink" href="#DB_SHOW_ALL_ALIAS"><code class="Fn" id="DB_SHOW_ALL_ALIAS">DB_SHOW_ALL_ALIAS</code></a>(),
    and
    <a class="permalink" href="#DB_TABLE_ALIAS"><code class="Fn" id="DB_TABLE_ALIAS">DB_TABLE_ALIAS</code></a>()
    macros register the existing <var class="Fa">command_function</var> under
    the alternative command name <var class="Fa">alias_name</var>.</p>
<p class="Pp">The _FLAGS variants of these commands allow the programmer to
    specify a value for the <var class="Fa">flag</var> field of the command
    structure. The possible flag values are defined alongside
    <var class="Ft">struct db_command</var> in
    <code class="In">&lt;<a class="In">ddb/ddb.h</a>&gt;</code>.</p>
<p class="Pp">The general command syntax:
    <code class="Cm">command</code>[<code class="Li">/</code><var class="Ar">modifier</var>]
    <var class="Ar">address</var>[,<var class="Ar">count</var>], translates into
    the following parameters for <var class="Fa">command_function</var>:</p>
<div class="Bd-indent">
<dl class="Bl-tag">
  <dt><var class="Fa">addr</var></dt>
  <dd>The address passed to the command as an argument.</dd>
  <dt><var class="Fa">have_addr</var></dt>
  <dd>A boolean value that is true if the addr field is valid.</dd>
  <dt><var class="Fa">count</var></dt>
  <dd>The number of quad words starting at offset <var class="Fa">addr</var>
      that the command must process.</dd>
  <dt id="examine"><var class="Fa">modif</var></dt>
  <dd>A pointer to the string of modifiers. That is, a series of symbols used to
      pass some options to the command. For example, the
      <a class="permalink" href="#examine"><b class="Sy">examine</b></a> command
      will display words in decimal form if it is passed the modifier
      &quot;d&quot;.</dd>
</dl>
</div>
<p class="Pp" id="DB_DEFINE_TABLE">The
    <a class="permalink" href="#DB_DEFINE_TABLE"><code class="Fn">DB_DEFINE_TABLE</code></a>()
    macro adds a new command <var class="Fa">name</var> as a sub-command of the
    existing command table <var class="Fa">parent</var>. The new command defines
    a table named <var class="Fa">table</var> which contains sub-commands. New
    commands and aliases can be added to this table by passing
    <var class="Fa">table</var> as the first argument to one of the DB_TABLE_
    macros.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
<p class="Pp">In your module, the command is declared as:</p>
<div class="Bd Pp Li">
<pre>DB_COMMAND(mycmd, my_cmd_func)
{
	if (have_addr)
		db_printf(&quot;Calling my command with address %p\n&quot;, addr);
}</pre>
</div>
<p class="Pp">An alias for this command is declared as:</p>
<div class="Bd Pp Li">
<pre>DB_ALIAS(mycmd2, my_cmd_func);</pre>
</div>
<p class="Pp">Then, when in ddb:</p>
<div class="Bd Pp Li">
<pre></pre>
<div class="Bf Sy">
db&gt; mycmd 0x1000
Calling my command with address 0x1000
db&gt; mycmd2 0x2500
Calling my command with address 0x2500
db&gt;</div>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
  ALSO</a></h1>
<p class="Pp"><a class="Xr">ddb(4)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp">This manual page was written by <span class="An">Guillaume
    Ballet</span>
    &lt;<a class="Mt" href="mailto:gballet@gmail.com">gballet@gmail.com</a>&gt;.</p>
</section>
</div>
<table class="foot">
  <tr>
    <td class="foot-date">July 5, 2023</td>
    <td class="foot-os">FreeBSD 15.0</td>
  </tr>
</table>