PRINTF(9) FreeBSD カーネル開発者マニュアル PRINTF(9)
名称
printf, uprintf, tprintf, log − フォーマットされた出力の変換 |
書式
#include <sys/types.h> int |
printf(const char *fmt, ...); void |
tprintf(struct proc *p, int pri, const char *fmt, ...); int |
uprintf(const char *fmt, ...); #include <sys/syslog.h> |
void |
log(int pri, const char *fmt, ...); |
解説 |
printf(9) ファミリの関数は printf(3) ファミリの関数と類似しています。この 異なった関数はそれぞれ異なった出力ストリームを使用します。 uprintf() 関数 は現在のプロセスが制御している tty に出力しますが、 printf() はロギング ファシリティおよびコンソールに出力します。 tprintf() 関数は pri が −1 で ない場合には、プロセス p に関連づけられた tty およびロギングファシリティ に出力します。 log() 関数は pri によって示されたログレベルを使用して、 カーネルのロギングファシリティにメッセージを送ります。 これらそれぞれの関連した関数は、 printf(3) と同じ方法で fmt パラメータを 使用します。しかしながら、 printf(9) は 2 つの他の変換指定子を追加してい ます。 %b 識別子は 2 つの引数を期待します。 int および char * です。これらはビッ トマスクのデコードのため、レジスタ値と印字マスクとして使用されます。この 印字マスクは 2 つの部分で構成されます。基数と引数です。基数値は整数値とし て表現される出力の基数です。例えば、\10 は 8 進数を \20 は 16 進数を与え ます。引数はビット識別子の並びとして構成されます。個々のビット識別子はこ の識別子が表すビット番号の整数値で始まります。識別子の残り部分はそのビッ トの名前を含む文字列です。この文字列は次のビット識別子の始まりのビット番 号、または最後のビット識別子のために NUL で終端されます。 %D 識別子は 16 進ダンプを補助することを意図されています。 %D これは 2 つ の引数を要求します。 u_char * ポインタおよび char * 文字列です。ポインタ が指しているメモリは、16 進数で一度に 1 バイト出力されます。文字列は個々 のバイトの間のデリミタとして使用されます。もし存在すれば、幅ディレクティ ブが表示するバイト数を指定します。デフォルトでは、16 バイトのデータが出力 されます。 log() 関数はその pri 引数 (ここは誤解されて ‘priority (優先度)’ と呼ばれ ていた) に syslog(3) のレベル値の LOG_DEBUG から LOG_EMERG までを使用しま す。代わりに、 pri に −1 が与えられた場合には、そのメッセージはその前の log() の呼び出しによって開始された、最近のログメッセージに追加されます。 これらのメッセージはカーネル自身によって生成されるため、このファシリティ は常に LOG_KERN となります。 |
戻り値
printf() および uprintf() 関数は表示された文字数を返します。 |
使用例
この使用例は %b および %D 変換指定子の使用方法を示しています。関数 void printf_test(void) { |
printf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n"); |
||
printf("out: %4D\n", "AAAA", ":"); |
} は下記の出力を発生させます。 reg=3<BITTWO,BITONE> out: 41:41:41:41 この呼び出し log(LOG_DEBUG, "%s%d: been there.\n", sc->sc_name, sc->sc_unit); は適切なデバッグメッセージを優先度 ‘‘kern.debug’’ でシステムログに追加し ます。 |
関連項目
FreeBSD 10.0 August 10, 2004 FreeBSD 10.0 |