Примечания по использованию printk в драйвере linux

искусственный интеллект

Сегодня в драйвер ключа добавлен printk(KERN_INFO "gpio_keys_gpio_isr()\n"); отладочная информация может выводиться на этапе загрузки драйвера, но информация после загрузки драйвера не видна на последовательном порту

в ядре/

/* We show everything that is MORE important than this.. / #define MINIMUM_CONSOLE_LOGLEVEL 1 / Minimum loglevel we let people use / #define DEFAULT_CONSOLE_LOGLEVEL 7 / anything MORE serious than KERN_DEBUG */

int console_printk[4] = { DEFAULT_CONSOLE_LOGLEVEL, /* console_loglevel / DEFAULT_MESSAGE_LOGLEVEL, / default_message_loglevel / MINIMUM_CONSOLE_LOGLEVEL, / minimum_console_loglevel / DEFAULT_CONSOLE_LOGLEVEL, / default_console_loglevel */ };

Вот несколько кратких сведений об уровнях журнала консоли. Соответствующие уровни журнала консоли определяются следующим образом: #define MINIMUM_CONSOLE_LOGLEVEL 1 /Минимальный уровень журнала, который можно использовать/ #define DEFAULT_CONSOLE_LOGLEVEL 7 /Выводятся сообщения более важные, чем KERN_DEBUG./

int console_printk[4] = { DEFAULT_CONSOLE_LOGLEVEL,/Уровень журнала консоли, сообщения с приоритетом выше этого значения будут отображаться на консоли/ /Уровень журнала сообщений по умолчанию, когда printk не определяет приоритет, печатать сообщения выше этого приоритета/ DEFAULT_MESSAGE_LOGLEVEL, /Минимальный уровень журнала консоли, минимальное значение, при котором может быть установлен уровень журнала консоли (самый высокий приоритет)./ MINIMUM_CONSOLE_LOGLEVEL, DEFAULT_CONSOLE_LOGLEVEL, /* Уровень журнала консоли по умолчанию */ };

При просмотре вы можете использовать команду cat /proc/sys/kernel/printk для просмотра этих четырех значений. 6 6 1 7 Видно, что уровень консоли по умолчанию в нашей системе — первые 6, а уровень информации, который мы хотим вывести, — KERN_INFO (всего 6).Если мы хотим вывести эту информацию, нам нужно изменить первые 6 на 7, и измените команду: эхо "7 6 1 7" > /proc/sys/kernel/printk Или измените указанный выше printk(KERN_INFO "gpio_keys_gpio_isr()\n"); на KERN_ERR или другой более высокий уровень.

Однако, если уровень принтера не изменен, отладочная информация также может быть получена с помощью команды cat /proc/kmsg.