Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DB_COMMAND(9)		    Kernel Developer's Manual		   DB_COMMAND(9)

NAME
     DB_COMMAND,   DB_COMMAND_FLAGS,   DB_SHOW_COMMAND,   DB_SHOW_COMMAND_FLAGS,
     DB_SHOW_ALL_COMMAND,  DB_TABLE_COMMAND,  DB_TABLE_COMMAND_FLAGS,  DB_ALIAS,
     DB_ALIAS_FLAGS,   DB_SHOW_ALIAS,	DB_SHOW_ALIAS_FLAGS,  DB_SHOW_ALL_ALIAS,
     DB_TABLE_ALIAS, DB_TABLE_ALIAS_FLAGS DB_DECLARE_TABLE, DB_DEFINE_TABLE,  --
     Extends the ddb command set

SYNOPSIS
     #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);

DESCRIPTION
     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 equiva-
     lent 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  val-
     ues 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  se-
			 ries  of  symbols used to pass some options to the com-
			 mand.	For example, the examine  command  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>

SEE ALSO
     ddb(4)

AUTHORS
     This manual page was written by Guillaume Ballet <gballet@gmail.com>.

FreeBSD ports 15.quarterly	  July 5, 2023			   DB_COMMAND(9)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=DB_COMMAND&sektion=9&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help