debugfs_create_file не создает файл - PullRequest
0 голосов
/ 05 мая 2010

Я пытаюсь создать файл debugfs, используя файл debugfs_create_file (...). Я написал пример кода для этого.

static int __init mmapexample_module_init(void)                                 
 {                                                                               
         file1 = debugfs_create_file("mmap_example", 0644, NULL, NULL, &my_fops)\
 ;                                                                               
         printk(KERN_ALERT "Hello, World\n");                                    
         if(file1==NULL)                                                         
           {                                                                     
             printk(KERN_ALERT "Error occured\n");                               
           }                                                                     
         if(file1==-ENODEV)                                                      
           {                                                                     
             printk(KERN_ALERT "ENODEV occured\n");                              
           }                                                                     
         return 0;                                                               
 }  

Когда я запускал insmod, я мог получить сообщение Hello, World, но не сообщение об ошибке. Так что я думаю, что debugfs_create_file работал нормально. Однако я не смог найти файл в / sys / kernel / debug. Папка есть, но она пуста. Кто-нибудь может мне с этим помочь? Спасибо ...

Спасибо, Bala

Ответы [ 2 ]

3 голосов
/ 07 мая 2010

Для работы debugfs у вас фактически должна быть точка монтирования debugfs:

mount -t debugfs none /sys/kernel/debug

Не уверен, что проблема именно в этом, но, возможно, вы можете проверить, есть ли у вас смонтированные debugfs в / sys / kernel / debug

0 голосов
/ 05 мая 2010

Вы можете рассмотреть printk(KERN_ALERT "Something else happened\n") в случае, если file1 не равен NULL или -ENODEV. Это может дать некоторые интересные результаты. Может быть:

if (file1 == NULL)
    printk(KERN_ALERT "Error occurred\n");
else if (file1 == -ENODEV)
    printk(KERN_ALERT "ENODEV occurred\n");
else
    printk(KERN_ALERT "Something else occurred\n");

Я не очень знаком с библиотеками программирования ядра, но если есть интерфейс va_args, аналогичный printk (), вы, вероятно, могли бы напечатать значение file1.

Теперь, глядя на это, есть ли какое-то ядро ​​errno? Или это то, что возвращает debugfs_create_file ()?

UPDATE

Единственная помощь, которую я могу сейчас дать, - это каким-то образом выяснить, каково значение file1, и выяснить, что это значит. Вы можете поискать эквивалент errno и посмотреть, установлен ли он. В основном эквивалентен вызову perror() в ядре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...