[*] Windows Vista, UWP, and Windows 11: Move Windows 7 and 8 SetThreadGroupAffinity symbol from the IAT to AuProcAddresses.NT.[c/h]pps object
[*] Update the READMEs support table
This commit is contained in:
parent
654cc8fe04
commit
788dde684b
@ -59,6 +59,8 @@ Discord: [Invite](https://discord.gg/XYjCGWWa4J)
|
|||||||
| Platform | Support |
|
| Platform | Support |
|
||||||
| ----------- | ------- |
|
| ----------- | ------- |
|
||||||
| NT/XP | ❌ |
|
| NT/XP | ❌ |
|
||||||
|
| NT/Vista | ⚠️⚠️️ |
|
||||||
|
| NT/Server 2008 | ⚠️⚠️ |
|
||||||
| NT/Win7 | ⚠️ |
|
| NT/Win7 | ⚠️ |
|
||||||
| NT/Win8.1+ | ⚠️ |
|
| NT/Win8.1+ | ⚠️ |
|
||||||
| NT/Win10 RS4+ | ✅ |
|
| NT/Win10 RS4+ | ✅ |
|
||||||
@ -73,7 +75,9 @@ Discord: [Invite](https://discord.gg/XYjCGWWa4J)
|
|||||||
|
|
||||||
Win7/8: memory management (AuProcess) is limited. \
|
Win7/8: memory management (AuProcess) is limited. \
|
||||||
Applications that don't need ::mmap-like functionality **with pre-reserved address allocations** should put your minimum requirements into the Vista era of NTs. \
|
Applications that don't need ::mmap-like functionality **with pre-reserved address allocations** should put your minimum requirements into the Vista era of NTs. \
|
||||||
See: [Windows 7 defects](https://gitea.reece.sx/AuroraSupport/AuroraRuntime/src/branch/master/Media/Windows%207%20Defects.txt)
|
See: [Windows 7 defects](https://gitea.reece.sx/AuroraSupport/AuroraRuntime/src/branch/master/Media/Windows%207%20Defects.txt) \
|
||||||
|
Earlier NT revisions could be supported; however, there is creep across various subsystems and libraries for XP to not work. In addition, anything older than a fully patched Windows 7 system is untested.
|
||||||
|
|
||||||
## Performance
|
## Performance
|
||||||
|
|
||||||
Performance of each system should ideally be that of the best implementation on the platform,
|
Performance of each system should ideally be that of the best implementation on the platform,
|
||||||
|
@ -79,6 +79,7 @@ namespace Aurora
|
|||||||
ADD_GET_PROC(Kernel32, SetThreadInformation)
|
ADD_GET_PROC(Kernel32, SetThreadInformation)
|
||||||
ADD_GET_PROC(Kernel32, SetThreadSelectedCpuSets)
|
ADD_GET_PROC(Kernel32, SetThreadSelectedCpuSets)
|
||||||
ADD_GET_PROC(Kernel32, PrefetchVirtualMemory)
|
ADD_GET_PROC(Kernel32, PrefetchVirtualMemory)
|
||||||
|
ADD_GET_PROC(Kernel32, SetThreadGroupAffinity)
|
||||||
|
|
||||||
ADD_GET_PROC(Sync, WaitOnAddress)
|
ADD_GET_PROC(Sync, WaitOnAddress)
|
||||||
ADD_GET_PROC(Sync, WakeByAddressSingle)
|
ADD_GET_PROC(Sync, WakeByAddressSingle)
|
||||||
|
@ -153,6 +153,14 @@ namespace Aurora
|
|||||||
ULONG CpuSetIdCount
|
ULONG CpuSetIdCount
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#if defined(AURORA_PLATFORM_WIN32)
|
||||||
|
inline BOOL(__stdcall *pSetThreadGroupAffinity)(
|
||||||
|
HANDLE hThread,
|
||||||
|
GROUP_AFFINITY * GroupAffinity,
|
||||||
|
PGROUP_AFFINITY PreviousGroupAffinity
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
inline INT(__stdcall *pGetAddrInfoExCancel)(
|
inline INT(__stdcall *pGetAddrInfoExCancel)(
|
||||||
LPHANDLE lpHandle
|
LPHANDLE lpHandle
|
||||||
);
|
);
|
||||||
|
@ -980,12 +980,17 @@ namespace Aurora::Threading::Threads
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(AURORA_PLATFORM_WIN32)
|
#if defined(AURORA_PLATFORM_WIN32)
|
||||||
GROUP_AFFINITY affinityGroup {0};
|
if (pSetThreadGroupAffinity)
|
||||||
mask.ToMsWin7GroupAffinity(&affinityGroup);
|
|
||||||
if (SetThreadGroupAffinity(this->handle_, &affinityGroup, nullptr))
|
|
||||||
{
|
{
|
||||||
return;
|
GROUP_AFFINITY affinityGroup { 0 };
|
||||||
|
mask.ToMsWin7GroupAffinity(&affinityGroup);
|
||||||
|
if (pSetThreadGroupAffinity(this->handle_, &affinityGroup, nullptr))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetThreadAffinityMask(this->handle_, mask.lower);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SysPushErrorUnavailableError("Couldn't set thread affinity");
|
SysPushErrorUnavailableError("Couldn't set thread affinity");
|
||||||
|
Loading…
Reference in New Issue
Block a user