rocr: Ensure globals are initialized at first use

When ROCr is built as a static library, global variables
were often not initialized to valid values at their first
use. This change addresses that problem.

Change-Id: I550fa41feb3bc04b9cc686bcfb4acf2a7b651a88
This commit is contained in:
Chris Freehill
2024-09-24 11:23:55 -05:00
committato da Chris Freehill
parent 80da7d5ee4
commit 9b13bcd0ac
36 ha cambiato i file con 323 aggiunte e 233 eliminazioni
@@ -272,14 +272,17 @@ class InterceptQueue : public QueueProxy, private LocalSignal, public DoorbellSi
/// @brief Provide information about the queue
hsa_status_t GetInfo(hsa_queue_info_attribute_t attribute, void* value) override;
static __forceinline bool IsType(core::Signal* signal) { return signal->IsType(&rtti_id_); }
static __forceinline bool IsType(core::Queue* queue) { return queue->IsType(&rtti_id_); }
static __forceinline bool IsType(core::Signal* signal) { return signal->IsType(&rtti_id()); }
static __forceinline bool IsType(core::Queue* queue) { return queue->IsType(&rtti_id()); }
protected:
bool _IsA(Queue::rtti_t id) const override { return id == &rtti_id_; }
bool _IsA(Queue::rtti_t id) const override { return id == &rtti_id(); }
private:
static int rtti_id_;
static __forceinline int& rtti_id() {
static int rtti_id_ = 0;
return rtti_id_;
}
};
} // namespace core