Pinを使用したバイナリ計装
-
wrapper.cpp
- pthread_createを置き換えて親スレッドから子スレッドに値を渡す実験
- 結果として,小さなコードでは動作するがそれなりに大きな規模のコードでテストしたときにデッドロックを起こす場合があるので,親から子にデータの受け渡しをするのに実用的な方法ではない
-
test_tls.cpp
- TLSを使用するテストコード
- getTLSとsetTLSを用意しておくと便利という知見
- 使い方は
- TLS_KEYを宣言
- tls_keyを初期化(PIN_CreateThreadDataKey)
- PIN_GetThreadData(スレッドキー,スレッドID)でデータの取得
- データが設定されていなければNULLが返る
- PIN_SetThreadData(スレッドキー,データ,スレッドID)でデータの設定