カーネルモジュールの読み取り関数を定義するときにその関数が呼び出されたとき、関数のパラメータはどこから来ましたか?

カーネルモジュールの読み取り関数を定義するときにその関数が呼び出されたとき、関数のパラメータはどこから来ましたか?

「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

おすすめ記事