【问题标题】:Write to debugfs from Linux Kernel Module从 Linux 内核模块写入 debugfs
【发布时间】:2017-02-15 05:06:01
【问题描述】:

我已经成功地在匹配路径中创建了一个dentry,但现在我应该如何在那里写呢?

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

【问题讨论】:

    标签: c linux linux-kernel kernel-module chardev


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      相关资源
      最近更新 更多