DB_COMMAND9
Extends the ddb command set
Usage
#include <ddb/ddb.h>
DB_COMMAND(command_name, command_function);
DB_COMMAND_FLAGS(command_name, command_function, flags);
DB_SHOW_COMMAND(command_name, command_function);
DB_SHOW_COMMAND_FLAGS(command_name, command_function, flags);
DB_SHOW_ALL_COMMAND(command_name, command_function);
DB_TABLE_COMMAND(table, command_name, command_function);
DB_TABLE_COMMAND_FLAGS(table, command_name, command_function, flags);
DB_ALIAS(alias_name, command_function);
DB_ALIAS_FLAGS(alias_name, command_function, flags);
DB_SHOW_ALIAS(alias_name, command_function);
DB_SHOW_ALIAS_FLAGS(alias_name, command_function, flags);
DB_SHOW_ALL_ALIAS(alias_name, command_function);
DB_TABLE_ALIAS(table, alias_name, command_function);
DB_TABLE_ALIAS_FLAGS(table, alias_name, command_function, flags);
DB_DEFINE_TABLE(parent, name, table);
DB_DECLARE_TABLE(table);
Overview
The DB_COMMAND() macro adds command_name to the list of top-level commands. Invoking command_name from ddb will call command_function.
The DB_SHOW_COMMAND() and DB_SHOW_ALL_COMMAND() macros are roughly equivalent to DB_COMMAND() but in these cases, command_name is a sub-command of the ddb show command and show all command, respectively.
The DB_TABLE_COMMAND() macro is also similar to DB_COMMAND() but adds the new command as a sub-command of the ddb command table.
The DB_ALIAS(), DB_SHOW_ALIAS(), DB_SHOW_ALL_ALIAS(), and DB_TABLE_ALIAS() macros register the existing command_function under the alternative command name alias_name.
The _FLAGS variants of these commands allow the programmer to specify a value for the flag field of the command structure. The possible flag values are defined alongside struct db_command in ⟨ddb/ddb.h⟩.
The general command syntax: command[/modifier] address[,count], translates into the following parameters for command_function:
- addr
-
The address passed to the command as an argument.
- have_addr
-
A boolean value that is true if the addr field is valid.
- count
-
The number of quad words starting at offset addr that the command must process.
- modif
-
A pointer to the string of modifiers. That is, a series of symbols used to pass some options to the command. For example, the
examinecommand will display words in decimal form if it is passed the modifier "d".
The DB_DEFINE_TABLE() macro adds a new command name as a sub-command of the existing command table parent. The new command defines a table named table which contains sub-commands. New commands and aliases can be added to this table by passing table as the first argument to one of the DB_TABLE_ macros.
Examples
In your module, the command is declared as:
DB_COMMAND(mycmd, my_cmd_func)
{
if (have_addr)
db_printf("Calling my command with address %p\n", addr);
}
An alias for this command is declared as:
DB_ALIAS(mycmd2, my_cmd_func);
Then, when in ddb:
db> mycmd 0x1000 Calling my command with address 0x1000 db> mycmd2 0x2500 Calling my command with address 0x2500 db>
Releases
39 releases since FreeBSD 8.0-RELEASE; the text changed 28 times.