На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
  
> printk
    При написании программы, возникла одна непонятная ситуация с функцией printk.
    Компилятор не может найти эту функцию, хотя файл linux/kernel.h подключен.
    Не подскажите ли, как справиться с этой проблемой.
      Какой программы ? Вообще printk - это функция ядра и часто используется для отладки при написании модулей ядра (короче дрова). Если пишешь простую аппликуху, то юзай что-то вроде printf, fprintf, sprintf и т.д. и т.п. На скоко я знаю, printk не катит для аппликух, а в дровах работает нормально
        Все началось именно с написания модулей ядра, но, когда я пытаюсь установить модуль, т.е. делаю insmod <имя_модуля.о>, то на экран никаких сообщений не выводилось, хотя это вроде бы должно происходить, поэтому я и решил попробовать написать простое приложение с использованием функции printk.
          А ты уверен, что эта функция описывается в файле linux/kernel.h? Это ведь компилятор говорит, что не знает такой функции? Поищи её в других включаемых файлах (я сам помочь не могу, т.к. у мя FreeBSD, а там куча функций ядра семейства *print*, и все работают :) ).
            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.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0217 ]   [ 15 queries used ]   [ Generated: 28.04.24, 07:49 GMT ]