是否有支持`va_list`的`printk()`函数?

时间:2011-11-24 13:55:27

标签: c linux-kernel

我目前正在编写Linux内核模块,我需要在我的一个函数中处理va_list,如下所示:

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

所以我需要一个类似printk()的函数来支持varargs。与vprintf()printf()一样。

我为vprintk谷歌了,但没有找到它的运气。

2 个答案:

答案 0 :(得分:6)

您始终可以使用vsnprintf()va_list格式化为缓冲区,并将该缓冲区传递给printk()

但是,vprintk() function seems to exist in the kernel

答案 1 :(得分:5)

是的,可以使用 vprintk (格式字符串,va_list); 你不必考虑缓冲区大小。只需在printk中使用它即可。