2

未使用のシステム コールの場所に新しいシステム コールをインストールし、ユーザー空間からの指示を待ちたい。私はそれを行う方法を知りません。

4

2 に答える 2

4

Linuxについて話し合っていると仮定すると...

システムコールテーブルをいじることは悪い考えです。カーネルには動的に変更することに対するセキュリティ防御がいくつかあるため(これは良いことです)、変更を加えるにはカーネル全体を再構築する必要があります。

これは、同じように柔軟な、より優れたアプローチです。新しいブロックデバイスを作成し、そのデバイスにioctlとして「システムコール」を実装するモジュールを構築します。これを実装するためにカーネルを再コンパイルする必要はなく、アセンブリファイルに触れることを心配する必要もありません。反復型開発を行っている場合、モジュールを再コンパイルして再挿入すると、変更を有効にするために再起動する必要がある場合よりもはるかに高速に作業できます。

ioctlの記述については、Linuxデバイスドライバー、Ch5を参照してください。

于 2010-07-14T17:06:00.607 に答える
0

Linux 2.6 について話していると仮定すると、このガイドを参照する必要があります: http://www.ibm.com/developerworks/linux/library/l-system-calls/index.html

詳しくは:

http://tldp.org/HOWTO/html_single/Implement-Sys-Call-Linux-2.6-i386/

システム コールをモジュールにインストールできないことに注意してください。カーネル イメージを再コンパイルする必要があります。

于 2010-07-14T16:41:42.443 に答える