SWDEV-255459 : to get rid of c++ libatomic

Change-Id: I311db0e456dd6e6c87692898640574dc8f669086
Этот коммит содержится в:
Evgeny
2020-10-09 05:42:53 -04:00
коммит произвёл Evgeny Shcherbakov
родитель 169e36f379
Коммит 97caab40da
2 изменённых файлов: 22 добавлений и 13 удалений
+1 -1
Просмотреть файл
@@ -35,4 +35,4 @@ set ( LIB_SRC
)
add_library ( ${TARGET_LIB} SHARED ${LIB_SRC} )
target_include_directories ( ${TARGET_LIB} PRIVATE ${LIB_DIR} ${ROOT_DIR} ${HSA_RUNTIME_INC_PATH} ${HSA_KMT_LIB_PATH}/.. )
target_link_libraries( ${TARGET_LIB} PRIVATE ${HSA_RUNTIME_LIB} c stdc++ atomic )
target_link_libraries( ${TARGET_LIB} PRIVATE ${HSA_RUNTIME_LIB} c stdc++ )
+21 -12
Просмотреть файл
@@ -173,31 +173,40 @@ PUBLIC_API bool EnableActivityCallback(uint32_t op, bool enable) {
}
struct evt_cb_entry_t {
void* callback;
void* arg;
typedef std::pair<void*, void*> data_t;
data_t data;
std::mutex mutex;
void set(const data_t& in) {
mutex.lock();
data = in;
mutex.unlock();
}
data_t get() {
mutex.lock();
const data_t out = data;
mutex.unlock();
return out;
}
evt_cb_entry_t() : data{} {}
};
typedef std::atomic<evt_cb_entry_t> evt_cb_entry_atomic_t;
evt_cb_entry_atomic_t evt_cb_table[HSA_EVT_ID_NUMBER]{};
evt_cb_entry_t evt_cb_table[HSA_EVT_ID_NUMBER];
hsa_status_t codeobj_evt_callback(
rocprofiler_hsa_cb_id_t id,
const rocprofiler_hsa_callback_data_t* cb_data,
void* arg)
{
evt_cb_entry_t evt = evt_cb_table[id].load(std::memory_order_relaxed);
activity_rtapi_callback_t evt_callback = (activity_rtapi_callback_t)evt.callback;
if (evt_callback != NULL) {
evt_callback(ACTIVITY_DOMAIN_HSA_EVT, id, cb_data, evt.arg);
}
const auto evt = evt_cb_table[id].get();
activity_rtapi_callback_t evt_callback = (activity_rtapi_callback_t)evt.first;
if (evt_callback != NULL) evt_callback(ACTIVITY_DOMAIN_HSA_EVT, id, cb_data, evt.second);
return HSA_STATUS_SUCCESS;
}
PUBLIC_API const char* GetEvtName(uint32_t op) { return strdup("CODEOBJ"); }
PUBLIC_API bool RegisterEvtCallback(uint32_t op, void* callback, void* arg) {
evt_cb_table[op].store(evt_cb_entry_t{callback, arg}, std::memory_order_relaxed);
evt_cb_table[op].set({callback, arg});
rocprofiler_hsa_callbacks_t ocb{};
switch (op) {