Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.223.172.252] |
|
Сообщ.
#1
,
|
|
|
При написании программы, возникла одна непонятная ситуация с функцией printk.
Компилятор не может найти эту функцию, хотя файл linux/kernel.h подключен. Не подскажите ли, как справиться с этой проблемой. |
Сообщ.
#2
,
|
|
|
Какой программы ? Вообще printk - это функция ядра и часто используется для отладки при написании модулей ядра (короче дрова). Если пишешь простую аппликуху, то юзай что-то вроде printf, fprintf, sprintf и т.д. и т.п. На скоко я знаю, printk не катит для аппликух, а в дровах работает нормально
|
Сообщ.
#3
,
|
|
|
Все началось именно с написания модулей ядра, но, когда я пытаюсь установить модуль, т.е. делаю insmod <имя_модуля.о>, то на экран никаких сообщений не выводилось, хотя это вроде бы должно происходить, поэтому я и решил попробовать написать простое приложение с использованием функции printk.
|
Сообщ.
#4
,
|
|
|
А ты уверен, что эта функция описывается в файле linux/kernel.h? Это ведь компилятор говорит, что не знает такой функции? Поищи её в других включаемых файлах (я сам помочь не могу, т.к. у мя FreeBSD, а там куча функций ядра семейства *print*, и все работают ).
|
Сообщ.
#5
,
|
|
|
Please pay your attention to first parameter of printk.
This is cut & past from kernel.h file #define KERN_EMERG "<0>" /* system is unusable */ #define KERN_ALERT "<1>" /* action must be taken immediately */ #define KERN_CRIT "<2>" /* critical conditions */ #define KERN_ERR "<3>" /* error conditions */ #define KERN_WARNING "<4>" /* warning conditions */ #define KERN_NOTICE "<5>" /* normal but significant condition */ #define KERN_INFO "<6>" /* informational */ #define KERN_DEBUG "<7>" /* debug- */ If number is less then it has more priority for printing. Offten priority level stated from <6> and more are'n displayed, It depends on configuration. Just use high priority or change configuration you log daemon. And, of course, you can't use printk in your user-space application. By the way, if you use xerm for start your module you have to make addition changes. I recomend you don't use X window when you work with kernel. |