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{};