Почему модули ядра не могут выводить данные на экран?

Почему модули ядра не могут выводить данные на экран?

Я только что прочитал, что модули ядра Linux не могут печатать на экране, т.е. printfне будут работать. Это как-то связано с обработкой прерываний или почему так?

Помню, как я изучал C и ассемблер, которые нельзя было использовать printf, потому что прерывания были отключены.

решение1

В ядре printfне работает, потому что не реализовано! Вы используетеprintkвместо этого (или early_printkв очень раннем коде, до настройки консоли). printkкодируется очень тщательно, так что его можно безопасно вызывать откуда угодно и при любых обстоятельствах (в частности, ему не нужно выделять память). Он реализует практически тот же API, что и printf, с добавлением уровня журнала для указания важности печатаемого сообщения и спецификаторов формата, которыеполезно в ядре.

Связанный контент