非常にパフォーマンスに敏感なドライバー コードにトレース/ログ フックを挿入するための、オーバーヘッドが最も少ない方法を探しています。このログ記録は常にコンパイルする必要がありますが、ほとんどの場合何もしません (しかし何も高速に行いません)。
グローバルなオン/オフ ワードを使用してif(enabled){log()}
. ただし、可能であれば、フックの 1 つをヒットするたびにその単語をロードするコストを回避したいと考えています。これには自己変更コードを使用できる可能性があると思います。つまり、トレース関数を呼び出す場所はどこでも、フックを無効にしたい場合はジャンプを NOP で上書きし、必要な場合はジャンプを置き換えます。それらを有効にします。
簡単なグーグルは、これに関する先行技術を発見しません - 誰かがそれをしましたか? 私が予見していない主要な障害はありますか?
(Linux、x86_64)