2017-02-14 15 views
0

私は正常に一致するパスにdentryを作成することができましたが、どうすればそこに実際に書き込むことができますか?Linuxカーネルモジュールからdebugfsに書き込む

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

を、ファイルではなく、別のディレクトリを作成しようとしているように見えるので。 だから私はあなたがやりたいことを推測は、より多くのこのようなものです:

log_fopsは多分このようなものになるだろう
struct dentry* log_file = debugfs_create_file("log", 0777, log_dir, NULL, &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); 
関連する問題