2010-05-04 3 views
0

J'essaye de créer un fichier debugfs en utilisant le fichier debugfs_create_file (...). J'ai écrit un exemple de code pour cela.debugfs_create_file ne crée pas le fichier

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;                
} 

Lorsque j'ai couru insmod je pouvais obtenir le message Hello, World mais pas le message d'erreur. Donc, je pense que le fichier debugfs_create_file a bien fonctionné. Cependant, je n'ai trouvé aucun fichier dans/sys/kernel/debug. Le dossier est là mais il est vide. Est-ce que quelqu'un peut m'aider avec ça? Merci ...

Merci, Bala

Répondre

3

Pour debugfs à travailler, vous avez fait d'avoir un debugfs mountpoint:

mount -t debugfs none /sys/kernel/debug 

Je ne sais pas si c'est ce que le problème est ici, mais peut-être que vous pouvez vérifier si vous avez un debugfs monté sur/sys/kernel/debug

+0

wow .. cela a fonctionné ... – bala1486

0

Vous pourriez envisager printk(KERN_ALERT "Something else happened\n") dans le cas où fichier1 est pas égal à NULL ou -ENODEV. Cela peut donner des résultats intéressants. Peut-être:

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"); 

Je ne suis pas familier avec les bibliothèques de programmation du noyau comme beaucoup, mais s'il y a une interface similaire à va_args printk(), vous pourriez probablement imprimer la valeur de fichier1.

Maintenant, en regardant cela, y at-il une sorte de noyau errno? Ou est-ce que debugfs_create_file() retourne?

MISE À JOUR:

La seule aide que je peux donner maintenant est de découvrir en quelque sorte ce que la valeur de fichier1 est et enquêter sur ce que cela signifie. Vous voudrez peut-être faire quelques recherches autour d'un équivalent errno et voir si c'est réglé. Equivalent à l'appel perror() dans le noyau essentiellement.

+0

Je l'ai fait et j'ai eu quelque chose d'autre s'est produit ... – bala1486