Существует ли функция `printk ()`, поддерживающая `va_list`? - PullRequest
5 голосов
/ 24 ноября 2011

В настоящее время я пишу модуль ядра 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().

Я бы запустил Google на vprintk, но не смог найти его.

Ответы [ 2 ]

6 голосов
/ 24 ноября 2011

Вы всегда можете использовать vsnprintf () , чтобы отформатировать va_list в буфер и передать этот буфер в printk().

Однако в ядре, похоже, существует функция vprintk() .

5 голосов
/ 17 октября 2012

Да, это возможно, и вам необходимо использовать функцию vprintk (строка формата, va_list);Вам не нужно думать о размере буфера.Просто используйте его как printk.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...