Глава 16. Полезные функции |
Предыдущая Содержание Следующая |
snd_printk() и друзьяALSA обеспечивает версию функции printk(), печатающую подробную информацию. Если в конфигурации ядра установлен CONFIG_SND_VERBOSE_PRINTK, эта функция выводит заданное сообщение вместе с именем файла и строкой вызова. Также как в оригинальной printk() обрабатывается префикс KERN_XXX, поэтому рекомендуется добавлять этот префикс, например,
snd_printk(KERN_ERR "Oh my, sorry, it's extremely bad!\n");
Есть также варианты printk() для отладки. Для общих целей отладки может быть использована snd_printd(). Если установлен CONFIG_SND_DEBUG, эта функция компилируется и работает как snd_printk(). Если ALSA собрана без флага отладки, она игнорируется.
snd_printdd() компилируется только тогда, когда установлен CONFIG_SND_DEBUG_VERBOSE. Обратите внимание, что CONFIG_SND_DEBUG_VERBOSE не установлен по умолчанию, даже если вы конфигурируете драйвер ALSA с опцией --with-debug=full. Вместо этого вы должны явно указать опцию --with-debug=detect. snd_BUG()Это показывает сообщение "BUG?" и трассировку стека, также как делает snd_BUG_ON. Он полезен, чтобы показать, что здесь происходит фатальная ошибка.
Если флаг отладки не установлен, этот макрос игнорируется. snd_BUG_ON()Макрос snd_BUG_ON() аналогичен макросу WARN_ON(). Например,
snd_BUG_ON(!pointer);
или он может быть использован в качестве условия,
if (snd_BUG_ON(non_zero_is_bug)) return -EINVAL;
Макрос принимает условное выражение для оценки. Когда установлен CONFIG_SND_DEBUG, выражение оценивается на самом деле. Если оно не равно нулю, он показывает предупреждающее сообщение, такое как BUG? (xxx), следующее обычно за трассировкой стека. Он возвращает оценённое значение. Если CONFIG_SND_DEBUG не установлен, этот макрос всегда возвращает ноль.
|
Предыдущая Содержание Следующая |