独自のファイル記述子を実装するにはどうすればよいですか? 一部のハードウェアを制御するカーネル モジュールがあり、このハードウェアと通信する機能を read() および write() を介してユーザー空間に公開したいとします。IOCTL、netlink、またはその他のユーザー空間とカーネル空間のメソッドを使用したくない。カーネルを再コンパイルする必要がありますか、それともカーネル モジュールを作成するだけで実行できますか?
ファイル記述子を作成するには、ユーザー空間がカーネル空間にタスクのファイル構造体 (つまり、open()、eventfd()、timerfd()、socket() に相当する関数) にエントリを作成するように指示するメカニズムが必要であることを理解しています。IOCTL を介して実装できますが (カーネルを再コンパイルする必要がないように)、read() と write() をハックするにはどうすればよいですか?以前に LD_PRELOAD を使用してパッチを適用しましたが、それが唯一の方法ですか? カーネルを再コンパイルしたくありません!