0
私は、(ioctlを使って)ユーザプロセスがそれを呼び出すときにkthreadを開始するlinuxカーネルモジュールを書いています。ユーザプロセスに代わってkthreadでファイルをオープン
ユーザープロセスのbahalfでこのkthreadを使用してファイルを開くことができます。つまり、ユーザープロセスがこのファイル自体にアクセスできるようになります。
私は、(ioctlを使って)ユーザプロセスがそれを呼び出すときにkthreadを開始するlinuxカーネルモジュールを書いています。ユーザプロセスに代わってkthreadでファイルをオープン
ユーザープロセスのbahalfでこのkthreadを使用してファイルを開くことができます。つまり、ユーザープロセスがこのファイル自体にアクセスできるようになります。
これは本当に賢明ではありません。ユーザー空間の処理で読み取れるファイルを開くには、ファイルディスクリプタをそのプロセスに返す必要があります。
カーネルスレッドをユーザースペーススレッドに接続するUNIXドメインソケットペアを返し、カーネルスレッドにSCM_RIGHTS
メッセージを使用してそのソケットを介してファイル記述子をオープンさせることができます。
しかし、ioctl()
呼び出しで元のプロセスのコンテキストでファイルを開き、そこにファイル記述子を戻す方が適切な場合があります。