私はという名前のカーネルモジュールを持っておりmymodule
、その中に私は持っています:
static struct file_operations my_mod_fops = {
.owner = THIS_MODULE
.write = my_write,
.open = my_open,
.unlocked_ioctl = my_ioctl,
.read = my_read,
};
前の構造体にマップされたすべての関数がテストされ、問題ありません。charをグローバルに(そして利用可能な場合は静的に)宣言したいkernel_array[128]
のですが、これを実行できるユーザースペースアプリケーションを作成したいと思います。
int main(){
char* ptr_to_kernel_arr = get_kernel_array_address();
for (int i=0 ; i<128;++i)
*(ptr_to_kernel_arr+i) = i;
return 0;
}
私の難しさは次のとおりです。
kernel_array[128]
ユーザースペースアプリケーションから値を割り当てることができるように、アドレスを取得するにはどうすればよいですか?lsmod
カーネルは、リストのどのモジュールが保持しているのかをどのように知るのですか?kernel_array
mmap
このすべてのシナリオはどのように関連していますか?
私は第15章とはるかに多くの資料を読みましたが、それを行う方法を理解できませんでした。私がオンラインで見つけたすべての例は、ファイルを宣言し、それをカーネルとユーザースペースと共有します。