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

San*_*ang 5 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
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以我需要一个printk()支持varargs的类似函数.喜欢vprintf()printf().

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

Fré*_*idi 6

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

但是,vprintk()内核中似乎存在一个函数.


小智 5

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