从C内核模块检查 /PROC文件



我想在内核和用户空间之间共享一个变量,并且我发现使用 procfs 可以。如果设置给定值,则内核模块必须以某种方式行动。用户空间程序负责更改此值,但是内核模块必须在必要时读取它。

我知道我必须在内核模块中创建/proc文件。我的问题是,如何从内核模块读取文件?

来源:linux.die.net/lkmpg/x769.html

/**
 * This function is called with the /proc file is written
 *
 */
int procfile_write(struct file *file, const char *buffer, unsigned long count,
           void *data)
{
/* get buffer size */
procfs_buffer_size = count;
if (procfs_buffer_size > PROCFS_MAX_SIZE ) {
    procfs_buffer_size = PROCFS_MAX_SIZE;
}
/* write data to the buffer */
if ( copy_from_user(procfs_buffer, buffer, procfs_buffer_size) ) {
    return -EFAULT;
}
return procfs_buffer_size;
}

澄清,每当用户在procf中写入文件时,此示例都会显示如何处理此类写入。

内核> = 3.10 proc_write被移至结构file_operations,其中写入写声是不同的,因此在最新的解决方案中,您的解决方案将无法正常工作。您可以实现典型的file_operations.write(struct file *,const char __user *,size_t,loff_t *),并将其引用为:

struct proc_dir_entry your_proc_dir_entry{
.proc_fops = &your_fops,
}

最新更新