1*24b52616SSascha Wildner.\"- 2*24b52616SSascha Wildner.\" Copyright (c) 2008 Guillaume Ballet 3*24b52616SSascha Wildner.\" All rights reserved. 4*24b52616SSascha Wildner.\" 5*24b52616SSascha Wildner.\" Redistribution and use in source and binary forms, with or without 6*24b52616SSascha Wildner.\" modification, are permitted provided that the following conditions 7*24b52616SSascha Wildner.\" are met: 8*24b52616SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright 9*24b52616SSascha Wildner.\" notice, this list of conditions and the following disclaimer. 10*24b52616SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright 11*24b52616SSascha Wildner.\" notice, this list of conditions and the following disclaimer in the 12*24b52616SSascha Wildner.\" documentation and/or other materials provided with the distribution. 13*24b52616SSascha Wildner.\" 14*24b52616SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*24b52616SSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*24b52616SSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*24b52616SSascha Wildner.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*24b52616SSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*24b52616SSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*24b52616SSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*24b52616SSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*24b52616SSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*24b52616SSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*24b52616SSascha Wildner.\" SUCH DAMAGE. 25*24b52616SSascha Wildner.\" 26*24b52616SSascha Wildner.\" $FreeBSD: src/share/man/man9/DB_COMMAND.9,v 1.6 2012/05/20 16:43:47 gjb Exp $ 27*24b52616SSascha Wildner.\" 28*24b52616SSascha Wildner.Dd July 1, 2012 29*24b52616SSascha Wildner.Dt DB_COMMAND 9 30*24b52616SSascha Wildner.Os 31*24b52616SSascha Wildner.Sh NAME 32*24b52616SSascha Wildner.Nm DB_COMMAND , 33*24b52616SSascha Wildner.Nm DB_SHOW_COMMAND 34*24b52616SSascha Wildner.Nd Extends the ddb command set 35*24b52616SSascha Wildner.Sh SYNOPSIS 36*24b52616SSascha Wildner.In ddb/ddb.h 37*24b52616SSascha Wildner.Fo DB_COMMAND 38*24b52616SSascha Wildner.Fa command_name 39*24b52616SSascha Wildner.Fa command_function 40*24b52616SSascha Wildner.Fc 41*24b52616SSascha Wildner.Fn DB_SHOW_COMMAND "command_name" "command_function" 42*24b52616SSascha Wildner.Sh DESCRIPTION 43*24b52616SSascha WildnerThe 44*24b52616SSascha Wildner.Fn DB_COMMAND 45*24b52616SSascha Wildnermacro adds 46*24b52616SSascha Wildner.Fa command_name 47*24b52616SSascha Wildnerto the list of top-level commands. 48*24b52616SSascha WildnerInvoking 49*24b52616SSascha Wildner.Fa command_name 50*24b52616SSascha Wildnerfrom ddb will call 51*24b52616SSascha Wildner.Fa command_function . 52*24b52616SSascha Wildner.Pp 53*24b52616SSascha WildnerThe 54*24b52616SSascha Wildner.Fn DB_SHOW_COMMAND 55*24b52616SSascha Wildneris roughly equivalent to 56*24b52616SSascha Wildner.Fn DB_COMMAND 57*24b52616SSascha Wildnerbut in this case, 58*24b52616SSascha Wildner.Fa command_name 59*24b52616SSascha Wildneris a sub-command of the ddb 60*24b52616SSascha Wildner.Sy show 61*24b52616SSascha Wildnercommand. 62*24b52616SSascha Wildner.Pp 63*24b52616SSascha WildnerThe general command syntax: 64*24b52616SSascha Wildner.Cm command Ns Op Li \&/ Ns Ar modifier 65*24b52616SSascha Wildner.Ar address Ns Op Li , Ns Ar count , 66*24b52616SSascha Wildnertranslates into the following parameters for 67*24b52616SSascha Wildner.Fa command_function : 68*24b52616SSascha Wildner.Bl -tag -width Fa -offset indent 69*24b52616SSascha Wildner.It Fa addr 70*24b52616SSascha WildnerThe address passed to the command as an argument. 71*24b52616SSascha Wildner.It Fa have_addr 72*24b52616SSascha WildnerA boolean value that is true if the addr field is valid. 73*24b52616SSascha Wildner.It Fa count 74*24b52616SSascha WildnerThe number of quad words starting at offset 75*24b52616SSascha Wildner.Fa addr 76*24b52616SSascha Wildnerthat the command must process. 77*24b52616SSascha Wildner.It Fa modif 78*24b52616SSascha WildnerA pointer to the string of modifiers. 79*24b52616SSascha WildnerThat is, a series of symbols used to pass some options to the command. 80*24b52616SSascha WildnerFor example, the 81*24b52616SSascha Wildner.Sy examine 82*24b52616SSascha Wildnercommand will display words in decimal form if it is passed the modifier "d". 83*24b52616SSascha Wildner.El 84*24b52616SSascha Wildner.Sh EXAMPLE 85*24b52616SSascha WildnerIn your module, the command is declared as: 86*24b52616SSascha Wildner.Bd -literal 87*24b52616SSascha WildnerDB_COMMAND(mycmd, my_cmd_func) 88*24b52616SSascha Wildner{ 89*24b52616SSascha Wildner if (have_addr) 90*24b52616SSascha Wildner db_printf("Calling my command with address %p\en", addr); 91*24b52616SSascha Wildner} 92*24b52616SSascha Wildner.Ed 93*24b52616SSascha Wildner.Pp 94*24b52616SSascha WildnerThen, when in ddb: 95*24b52616SSascha Wildner.Bd -literal 96*24b52616SSascha Wildner.Bf Sy 97*24b52616SSascha Wildnerdb> mycmd 0x1000 98*24b52616SSascha WildnerCalling my command with address 0x1000 99*24b52616SSascha Wildnerdb> 100*24b52616SSascha Wildner.Ef 101*24b52616SSascha Wildner.Ed 102*24b52616SSascha Wildner.Sh "SEE ALSO" 103*24b52616SSascha Wildner.Xr ddb 4 104*24b52616SSascha Wildner.Sh AUTHOR 105*24b52616SSascha WildnerThis manual page was written by 106*24b52616SSascha Wildner.An Guillaume Ballet Aq gballet@gmail.com . 107