2017-02-14 1 views
0

J'ai réussi à créer un dentry dans le chemin correspondant, mais comment y écrire réellement?Écrire dans le noyau Linux pour déboguer le module

struct dentry* log_dir = debugfs_create_dir ("my_module", NULL); 
struct dentry* log_file = debugfs_create_dir ("log", 0777, log_dir, NULL, NULL); 

Répondre

1

je dirais que la meilleure référence pour ce que vous devez faire serait le fichier de documentation debugfs.txt dans l'arborescence des sources du noyau.

Je suppose également que vous avez fait une erreur dans votre exemple de code ici:

struct dentry* log_file = debugfs_create_dir ("log", 0777, log_dir, NULL, NULL); 

Comme il semble que vous essayez de créer un fichier, pas un autre répertoire. donc je suppose que ce que vous vouliez faire est plus comme ceci:

struct dentry* log_file = debugfs_create_file("log", 0777, log_dir, NULL, &log_fops); 

où log_fops serait peut-être quelque chose comme ceci:

static const struct file_operations log_fops = { 
    .owner = THIS_MODULE, 
    .read = log_read, 
    .write = log_write, /* maybe you don't need this */ 
}; 

Et vous auriez bien sûr besoin aussi de mettre en œuvre votre log_read et fonctions log_write:

ssize_t log_read(struct file *file, char __user *buff, size_t count, loff_t *offset); 

ssize_t log_write(struct file *file, const char __user *buff, size_t count, loff_t *offset);