2011-11-24 10 views
5

に似ています、私は現在、Linuxカーネルモジュールを書いている、と私は私の機能の一つでva_listを処理する必要があります。`va_list`をサポートする` printk() `関数はありますか?

void blah(int flag, va_list va) { 
    ... 
    if (flag & BLAH_1) { 
     ... 
     printk(... va here ...); // where I need the printk() with va_list support 
     ... 
    } 
    ... 
} 

だから私は可変引数をサポートしていますprintk()様機能を必要としています。​​〜printf()のようになります。

私はvprintkのGoogleでしたが、運が見つかりませんでした。

答えて

6

vsnprintf()を使用して、va_listをバッファにフォーマットし、そのバッファをprintk()に渡すことができます。

ただし、vprintk() function seems to exist in the kernelです。

+0

ありがとう!私は 'vsnprintf()'を使うことはできませんが、私はバッファサイズの世話をする必要があります:) –

5

はい、それは可能であり、あなたが使用する必要があり機能がvprintk(フォーマット文字列、va_listの)です。 バッファサイズについて考える必要はありません。単にprintkのように使ってください。

関連する問題