Напишите в debugfs из модуля ядра Linux

Мне удалось успешно создать dentry в соответствующем пути, но теперь, как мне на самом деле написать там?

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

1 ответ

Решение

Я бы сказал, что лучшей ссылкой на то, что вам нужно сделать, был бы файл документации debugfs.txt в дереве исходного кода ядра.

Я также предполагаю, что вы допустили ошибку в своем примере кода здесь:

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

Так как похоже, что вы пытаетесь создать файл, а не другой каталог. Итак, я думаю, что вы хотели сделать больше так:

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

где log_fops может быть что-то вроде этого:

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

И, конечно же, вам также необходимо реализовать функции log_read и 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);
Другие вопросы по тегам