2

Kprobes を使用して、任意のカーネル関数をプローブできることを知っています。しかし、その文書を調べてみると、それはほとんど一種の受動的な存在であることがわかりました。プローブを実行シーケンスの途中に置くだけです。

しかし、実行シーケンスを気にせずにカーネル関数を直接呼び出したい場合はどうでしょうか。

どうすればそれを達成できますか?

更新日:

注: ユーザー空間アプリケーションからではなく、カーネル モジュール内のカーネル関数を呼び出したいと考えています。

4

2 に答える 2

1

カーネル関数を直接呼び出したい場合はどうすればよいですか

少なくともすべての関数を直接使用できるわけではありません。

あなたのケースでカーネル関数を呼び出すときは、次の点を考慮してください。

  • 異なるモジュールのカーネル関数は、マクロのEXPORT_SYMBOLファミリを使用してエクスポートされた場合にのみ使用できます。
  • 静的関数は、そのファイルの外部で直接使用することはできません。

関数定義 (i2c_smbus_read_byte_data)
http://lxr.free-electrons.com/source/drivers/i2c/i2c-core.c#L2689

ここで使用
http://lxr.free-electrons.com/source/drivers/i2c/i2c-core.c#L350

于 2016-01-25T09:23:43.143 に答える