2017-01-02 30 views

回答

2

我寫了一個tool,Contech,儀器LLVM IR收集同步信息(以及其他數據)。還有一個工具Harmony,它用LLVM IR來測量類似的信息。

我將回顧一下您需要編寫自己的LLVM Pass所需的三個組件。首先,雖然大多數同步控制依賴於原子操作,但這些操作在彙編中並且經常位於其他庫中。由於您沒有跟蹤每條彙編指令的執行情況,因此您需要回退功能的名稱,例如pthread_mutex_locksem_wait。其次,已經識別出同步控制操作,LLVM通道將需要插入必要的儀器以記錄關於該同步操作的重要信息,例如其標識符(即地址)和時間戳。

第三,系統將需要額外的代碼來處理同步記錄,因爲來自第二組件的儀器位於臨界區內。如果沒有這個組件,結果將會受到儀器的影響。儀器仍會有影響。