私の質問は、カーネルからユーザー空間プログラムにデータを渡すことです。私はシステムコール "get_data(size、char * buff、char ** meta_buf)"を実装したいと思います。この呼び出しでは、buffはユーザー空間プログラムによって割り当てられ、その長さはsize引数に渡されます。しかし、meta_bufは、(ユーザー空間プログラムのvmページに)割り当てられ、カーネルで埋められる可変長バッファです。ユーザー空間プログラムはこの地域を解放するでしょう。カーネルスレッドからユーザー空間用のメモリを割り当てる
(私はユーザスペースプログラムがmeta_buffのサイズを知らないので、ユーザスペースにデータを割り当てません。また、ユーザスペースプログラムは一定量のメモリを割り当てられず、システムコールを何度も呼び出すことでメタデータ全体1つのシステムコールで返されなければならない)
- カーネルスレッドからユーザスペースプログラムのメモリを割り当てるにはどうすればよいですか? (同様の操作を行う他のシステムコールを指し示すことができれば、カーネルに割り当て、ユーザスペースを解放することができます)
- このインタフェースは正しいのですか、それとも良い方法がありますか?
最小実行可能な例:https://stackoverflow.com/questions/10760479/how-to-mmap-a-linux-kernel-buffer-to-user-space/45645732#45645732 –