adding kernel free callback and recursion guard

Change-Id: I1ff6bba3503150745d7fc533c9db24480d476d23


[ROCm/rocprofiler commit: 704420bead]
이 커밋은 다음에 포함됨:
Evgeny
2018-09-06 13:46:23 -05:00
부모 9d2081ceb4
커밋 63087b968d
2개의 변경된 파일과 8개의 추가작업 그리고 2개의 파일을 삭제
+7 -2
파일 보기
@@ -50,10 +50,14 @@ SOFTWARE.
(ID == ROCPROFILER_HSA_CB_ID_DEVICE) ? callbacks_.device: \
(ID == ROCPROFILER_HSA_CB_ID_MEMCOPY) ? callbacks_.memcopy: \
callbacks_.submit; \
if (__callback != NULL)
if ((__callback != NULL) && (recursion_ == false))
#define DO_HSA_CALLBACK \
do { __callback(__id, &data, __arg); } while (0)
do { \
recursion_ = true; \
__callback(__id, &data, __arg); \
recursion_ = false; \
} while (0)
#define ISSUE_HSA_CALLBACK(ID) \
do { IS_HSA_CALLBACK(ID) { DO_HSA_CALLBACK; } } while(0)
@@ -370,6 +374,7 @@ class HsaInterceptor {
}
static bool enable_;
static thread_local bool recursion_;
static hsa_ven_amd_loader_1_01_pfn_t LoaderApiTable;
static rocprofiler_hsa_callbacks_t callbacks_;
static arg_t arg_;
+1
파일 보기
@@ -885,6 +885,7 @@ hsa_status_t rocprofiler_get_time(
// Static fields
bool rocprofiler::HsaInterceptor::enable_ = false;
thread_local bool rocprofiler::HsaInterceptor::recursion_ = false;;
rocprofiler_hsa_callbacks_t rocprofiler::HsaInterceptor::callbacks_{};
rocprofiler::HsaInterceptor::arg_t rocprofiler::HsaInterceptor::arg_{};
hsa_ven_amd_loader_1_01_pfn_t rocprofiler::HsaInterceptor::LoaderApiTable{};