/*** Copyright (C) 2023 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: SMTYield.cpp Date: 2023-3-12 Author: Reece ***/ #include #include "SMTYield.hpp" namespace Aurora::Threading { AUKN_SYM void SetSpinCountTimeout(AuUInt8 uTimeout) { gRuntimeConfig.threadingConfig.uSpinLoopPowerA = uTimeout; } AUKN_SYM AuUInt8 GetSpinCountTimeout() { return gRuntimeConfig.threadingConfig.uSpinLoopPowerA; } AUKN_SYM void SetThreadLocalAdditionalSpinCountTimeout(AuUInt8 uTimeout) { gHasThreadLocalTimeout = 1; tlSpinCountLocal = uTimeout; } AUKN_SYM AuUInt32 GetTotalSpinCountTimeout() { AuUInt32 uCount {}; uCount = 1u << AuUInt32(gRuntimeConfig.threadingConfig.uSpinLoopPowerA); if (gHasThreadLocalTimeout) { uCount += 1u << AuUInt32(tlSpinCountLocal); } return uCount; } } namespace Aurora::Threading::Primitives { }