2017-10-20 41 views
0

我有一个内核模块,它实现了一个定时器并且工作。同时我能够创建一个新的内核模块来从proc写入和读取。我不明白的是如何在同一个内核模块中组合这两个操作。在使用字符设备的内核模块中写入proc

我的应用程序以这种方式工作。用户程序向内核模块写入数字n,该数字用于创建将在n毫秒内过期的计时器。为此,我实现了writeread函数,并将它们链接到我在init函数中使用的struct file_operations,以注册我的字符设备(计时器)。

现在对于proc文件,我需要声明一个writeread函数以及应该处理来自用户程序的请求。这让我感到困惑,我无法理解如何将所有的东西结合在一起。

+1

只是定义了两个不同的** **'结构file_operations'变量。使用一个用于字符设备,另一个用于proc文件。他们实际上是独立的。 – Tsyvarev

+0

@Tsyvarev但是我需要将用户提供的编号'n'写入proc,所以在我的模块中,timer和proc不是独立的。 – David

+0

@David他的意思是文件操作是独立的。 – Sasi

回答

1

由于Tsyvarev提到,在使用不同的file_operations

static struct proc_dir_entry *procfs; 

static const struct file_operations proc_fops = { 
.owner = THIS_MODULE, 
.open = open_proc_fn, 
.read = read_proc_fn, 
}; 

static const struct file_operations char_fops = { 
.owner = THIS_MODULE, 
.open = open_char_fn, 
.read = read_char_fn, 
.write = write_char_fn, 
}; 


int __init init_mod (void) { 
    procfs = proc_create("filename", 0, NULL, &proc_fops); 
    if(!proc) 
     return -1; 
    <Register char device with &char_fops > 
    return 0; 
} 
相关问题