当您为内核模块定义读取函数时,调用该函数时,该函数的参数来自哪里?

当您为内核模块定义读取函数时,调用该函数时,该函数的参数来自哪里?

假设我有一个名为“hello”的内核模块。

例如:

static struct file_operations hello_fops = {
        .open = hello_open,
        .read = hello_read,
        .release = hello_release,
};
static ssize_t hello_read(struct file *f, char *buf, size_t len, loff_t *offset){
       // some code here
}

当你从/dev/hello字符设备文件中读取数据时,hello_read函数就会被调用,但是函数的参数从哪里来呢?

答案1

参数来自导致读取的系统调用:

有一条类似的路径从pread,它还提供了要读取的文件位置;这是处理者ksys_pread64

相关内容