AuroraRuntime/Source/Threading/AuWakeInternal.hpp

38 lines
1.5 KiB
C++
Raw Normal View History

/***
Copyright (C) 2023 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: AuWakeInternal.hpp
Date: 2023-6-15
Author: Reece
Note: Defines a LTS prototype for nanosecond-resolution WoA API for Desktop class Win32 primitives
***/
#pragma once
namespace Aurora::Threading
{
// Buttered up native high-res wait for change API:
bool InternalLTSWaitOnAddressHighRes(const void *pTargetAddress,
2023-09-02 03:55:43 +00:00
const void *pCompareAddress,
AuUInt8 uWordSize,
AuUInt64 qwNanosecondsAbs);
2023-09-02 03:55:43 +00:00
// ...cont
void InternalLTSWakeAll(const void *pTargetAddress);
// ...cont
void InternalLTSWakeOne(const void *pTargetAddress);
// ...cont
void InternalLTSWakeCount(const void *pTargetAddress, AuUInt32 uCount);
// extra wrapping for use with primitives when expecting less scheduler indirection
// (its good to avoid the emulation layer in the slow paths of high level primitives)
static bool InternalLTSWaitOnAddressHighRes(volatile const void *pTargetAddress,
2023-09-02 03:55:43 +00:00
const void *pCompareAddress,
AuUInt8 uWordSize,
AuUInt64 qwNanosecondsAbs)
{
return InternalLTSWaitOnAddressHighRes((const void *)pTargetAddress, pCompareAddress, uWordSize, qwNanosecondsAbs);
2023-09-02 03:55:43 +00:00
}
}