Make HostQueue::queue_count_ a portable atomic type.
Also make lint happy. Change-Id: I0f965df6a76fd959df9eb411d1f1b11847159790
Tento commit je obsažen v:
@@ -166,7 +166,7 @@ class HostQueue : public Queue {
|
||||
|
||||
// Host queue id counter, starting from 0x80000000 to avoid overlaping
|
||||
// with aql queue id.
|
||||
static volatile uint32_t queue_count_;
|
||||
static std::atomic<uint32_t> queue_count_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(HostQueue);
|
||||
};
|
||||
|
||||
@@ -317,7 +317,9 @@ class Runtime {
|
||||
|
||||
ExtensionEntryPoints extensions_;
|
||||
|
||||
hsa_status_t SetCustomVMFaultHandler(hsa_status_t (*callback)(const void* event_specific_data, void* data), void* data);
|
||||
hsa_status_t SetCustomVMFaultHandler(hsa_status_t (*callback)(const void* event_specific_data,
|
||||
void* data),
|
||||
void* data);
|
||||
|
||||
protected:
|
||||
static void AsyncEventsLoop(void*);
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
namespace core {
|
||||
|
||||
volatile uint32_t HostQueue::queue_count_ = 0x80000000;
|
||||
std::atomic<uint32_t> HostQueue::queue_count_(0x80000000);
|
||||
|
||||
HostQueue::HostQueue(hsa_region_t region, uint32_t ring_size,
|
||||
hsa_queue_type32_t type, uint32_t features,
|
||||
@@ -73,7 +73,7 @@ HostQueue::HostQueue(hsa_region_t region, uint32_t ring_size,
|
||||
amd_queue_.hsa_queue.base_address = ring_;
|
||||
amd_queue_.hsa_queue.size = size_;
|
||||
amd_queue_.hsa_queue.doorbell_signal = doorbell_signal;
|
||||
amd_queue_.hsa_queue.id = atomic::Increment(&queue_count_);
|
||||
amd_queue_.hsa_queue.id = queue_count_++;
|
||||
amd_queue_.hsa_queue.type = type;
|
||||
amd_queue_.hsa_queue.features = features;
|
||||
#ifdef HSA_LARGE_MODEL
|
||||
|
||||
@@ -92,21 +92,21 @@ void HsaApiTable::CloneExts(void* ext_table, uint32_t table_id) {
|
||||
|
||||
// Update HSA Extension Finalizer Api table
|
||||
if (table_id == HSA_EXT_FINALIZER_API_TABLE_ID) {
|
||||
finalizer_api = (*(FinalizerExtTable *)ext_table);
|
||||
finalizer_api = *reinterpret_cast<FinalizerExtTable*>(ext_table);
|
||||
hsa_api.finalizer_ext_ = &finalizer_api;
|
||||
return;
|
||||
}
|
||||
|
||||
// Update HSA Extension Image Api table
|
||||
if (table_id == HSA_EXT_IMAGE_API_TABLE_ID) {
|
||||
image_api = (*(ImageExtTable *)ext_table);
|
||||
image_api = *reinterpret_cast<ImageExtTable*>(ext_table);
|
||||
hsa_api.image_ext_ = &image_api;
|
||||
return;
|
||||
}
|
||||
|
||||
// Update HSA Extension AqlProfile Api table
|
||||
if (table_id == HSA_EXT_AQLPROFILE_API_TABLE_ID) {
|
||||
aqlprofile_api = (*(AqlProfileExtTable *)ext_table);
|
||||
aqlprofile_api = *reinterpret_cast<AqlProfileExtTable*>(ext_table);
|
||||
hsa_api.aqlprofile_ext_ = &aqlprofile_api;
|
||||
return;
|
||||
}
|
||||
@@ -118,22 +118,22 @@ void HsaApiTable::LinkExts(void* ext_table, uint32_t table_id) {
|
||||
|
||||
// Update HSA Extension Finalizer Api table
|
||||
if (table_id == HSA_EXT_FINALIZER_API_TABLE_ID) {
|
||||
finalizer_api = (*(FinalizerExtTable *)ext_table);
|
||||
hsa_api.finalizer_ext_ = (FinalizerExtTable *)ext_table;
|
||||
finalizer_api = *reinterpret_cast<FinalizerExtTable*>(ext_table);
|
||||
hsa_api.finalizer_ext_ = reinterpret_cast<FinalizerExtTable*>(ext_table);
|
||||
return;
|
||||
}
|
||||
|
||||
// Update HSA Extension Image Api table
|
||||
if (table_id == HSA_EXT_IMAGE_API_TABLE_ID) {
|
||||
image_api = (*(ImageExtTable *)ext_table);
|
||||
hsa_api.image_ext_ = (ImageExtTable *)ext_table;
|
||||
image_api = *reinterpret_cast<ImageExtTable*>(ext_table);
|
||||
hsa_api.image_ext_ = reinterpret_cast<ImageExtTable*>(ext_table);
|
||||
return;
|
||||
}
|
||||
|
||||
// Update HSA Extension AqlProfile Api table
|
||||
if (table_id == HSA_EXT_AQLPROFILE_API_TABLE_ID) {
|
||||
aqlprofile_api = (*(AqlProfileExtTable *)ext_table);
|
||||
hsa_api.aqlprofile_ext_ = (AqlProfileExtTable *)ext_table;
|
||||
aqlprofile_api = *reinterpret_cast<AqlProfileExtTable*>(ext_table);
|
||||
hsa_api.aqlprofile_ext_ = reinterpret_cast<AqlProfileExtTable*>(ext_table);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Odkázat v novém úkolu
Zablokovat Uživatele