int dcmd(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv);
dcmd は dcmd() の宣言に似た関数によって実装されます。この関数は次の 4 つの引数を受け取り、整数のステータスを返します。
現在のアドレス。ドットともいう。dcmd の開始時点では、このアドレスはデバッガのドット " . " 変数の値に対応しています。
次のフラグの 1 つ以上の論理和を含む整数
便利な DCMD_HDRSPEC() マクロが用意されており、dcmd はフラグをテストしてヘッダーラインを出力するかどうかを決定できます。ヘッダーラインを出力するのは、ループの一部として呼び出されていない、あるいはループまたはパイプラインの繰り返しの最初の場合です。
argv 配列内の引数の数
コマンド行の ::dcmd の右側に指定された引数の配列。この引数は文字列の場合と整数値の場合があります。
dcmd 関数は、<sys/mdb_modapi.h> に定義されている、次の整数値のいずれかを返します。
無効な引数が指定されたため、dcmd は失敗した。この値が返される場合は、以降に述べるように dcmd の使用に関するメッセージが自動的に出力される
dcmd が失敗したため、現在のループまたはパイプラインは強制終了される。この戻り値は DCMD_ERR に似ているが、現在のループまたはパイプラインを続行できないことを示す
各 dcmd は <sys/mdb_modapi.h> に定義されているように、サンプルの dcmd() プロトタイプにしたがって定義された関数と、それに対応する mdb_dcmd_t 構造体から構成されています。この構造体は、次のフィールドから構成されています。
dcmd の文字列名。先頭に "::" が付かない。この名前には、$ または ` などの MDB メタキャラクタを含めることはできない
dcmd に対するオプションの用法文字列。dcmd が DCMD_USAGE を返すとこの文字列が出力される。たとえば、dcmd がオプション -a と -b を受け付ける場合、dc_usage は "[-ab]" と設定される。dcmd が引数を受け付けない場合、dc_usage は NULL に設定される。用法文字列が ":" で始まっている場合、dcmd でアドレスを明示的に指定する必要があり、フラグパラメタに DCMD_ADDRSPEC を設定する必要があることを示す。用法文字列が "?" で始まっている場合、dcmd はオプションでアドレスを受け付けることを示す。これらのヒントに従って、用法メッセージも変更される
dcmd の目的を簡単に説明する、必須の記述文字列。この文字列は単一行のテキストで構成される
dcmd を実行するために呼び出される関数を指すポインタ
dcmd のヘルプ関数を指すオプションの関数ポインタ。このポインタが NULL 以外の値の場合、ユーザーが ::help dcmd を実行すると、この関数が呼び出される。この関数では mdb_printf() を使用して詳細情報や例を表示できる