LinuxカーネルがシステムコールにSYSENTER / SYSEXITを使用しているかどうかを確認するにはどうすればよいですか

LinuxカーネルがシステムコールにSYSENTER / SYSEXITを使用しているかどうかを確認するにはどうすればよいですか

Linux カーネルが sysenter/sysexit 命令を使用して、ユーザー空間からシステム コールを開始および終了しているかどうかを確認しようとしています。

私が実行しているカーネルは「2.6.31.12-174.2.3.fc12.x86_64」です。

何か案は?

M.

答え1

sysenter/sysexit はカーネルよりも CPU に依存します。Linux は 2.5 の初期の頃からこれを利用しています。Linux は、実行されている CPU の種類に応じて、SYSENTER、SYSCALL、または従来の int 80 メソッドのいずれかを選択します。

実際に使用されていることをどのように確認できるかわかりません。Systemtap や LTT では十分に低いレベルでは確認できないと思います。カーネルをインストルメント化して、vDSO コードにトレースポイントをいくつか追加できるかもしれません...

答え2

私が思いつく唯一の提案は、Linux トレース ツールキットカーネルダンプを作成し、システムコールを調べます。

答え3

検討してみてはいかがでしょうかシステムタップこれにより、システム コールを含む任意のイベントが発生するたびにアクションをトリガーするスクリプトを作成できるようになります。

関連情報