9

独自のシステムコールを実装したい。(下記リンク参照)

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

ただし、新しいシステム コールを追加するには、カーネルのコンパイルが必要です。

Linux カーネルを再コンパイルせずに独自のシステム コールを実装する方法は?

4

2 に答える 2

15

できません。

カーネルを再コンパイルせずにできることは、カーネル モジュールをビルドしてロードすることだけであり、カーネル モジュールは新しいシステム コールを追加できません。

于 2013-06-20T16:08:59.453 に答える
4

できますよ。

つまり、実行中のカーネルにパッチを適用する必要があります。

新しい syscall を追加するには、少なくとも 2 つの方法があります。

  1. 既存のシステム コール テーブル (sys_call_tableおよび) を展開し、任意のシステム コール エントリ ( など) でシステム コール制限チェック命令 (通常は x86 上)にia32_sys_call_tableパッチを適用します。cmpsystem_callia32_system_all
  2. 既存のシステム コール テーブルをコピーし、必要に応じて展開し、システム コール ディスパッチ命令 (通常callは x86 上) にパッチを適用して、テーブルのコピーをポイントし、任意のシステム コール エントリでシステム コール制限チェック命令にパッチを適用します。

詳細については、この回答を参照してください。

LKM を使用した Linux システム コールの実装

32 ビット アプリケーションはどのようにして 64 ビット Linux でシステム コールを行うのですか?

:)

于 2013-06-21T04:29:28.960 に答える