3

いくつかの混乱では、カーネル空間から呼び出すとは想定されていないカーネル関数を1つ呼び出す必要があります。これは、引数で割り当てられたユーザー空間からバッファを取得するためです。

const char __user *buf

しかし、それを呼び出す必要があるので、ユーザー空間バッファーを割り当てて、その関数引数で渡すにはどうすればよいですか。

可能であれば、ユーザー空間の操作なしでそれを行う必要があります。それは本当に可能ですか?

私の目標は、引数を取るカーネルドライバーからカーネルルーチンを呼び出すことです const char __user *buf

4

2 に答える 2

5

私の知る限り、これを行う通常の方法は、カーネル ルーチンを 2 つに分割することです。外側のルーチンは、システム コールの仕組みを処理し、copyin()/coyout() などを処理し、次に実際の処理を行う内側のルーチンを呼び出します。仕事。

もちろん、コードをモジュール内に自己完結させる必要があり、それが使用されている残りのカーネルを制御しない場合、それは機能しません。

そして、あなたの特定の質問への答えとして-そのようなAPIがあるかどうかはわかりませんが、むしろそれを疑っています.

于 2013-05-02T05:18:01.377 に答える