* syscalls.cc (gethostid): Set thread affinity so that results are predictable.

This commit is contained in:
Christopher Faylor
2003-07-06 20:08:42 +00:00
parent e2723b750a
commit b671715358
2 changed files with 19 additions and 6 deletions

View File

@@ -2787,6 +2787,11 @@ long gethostid(void)
0x00290012};
bool has_cpuid = false;
sigframe thisframe (mainthread);
DWORD opmask = SetThreadAffinityMask (GetCurrentThread (), 1);
if (!opmask)
debug_printf ("SetThreadAffinityMask to 1 failed, %E");
if (!can_set_flag (0x00040000))
debug_printf ("386 processor - no cpuid");
@@ -2870,6 +2875,9 @@ long gethostid(void)
for (int i=0;i<13;i++)
hostid ^= ((data[i] << (i << 2)) | (data[i] >> (32 - (i << 2))));
if (opmask && !SetThreadAffinityMask (GetCurrentThread (), opmask))
debug_printf ("SetThreadAffinityMask to %p failed, %E", opmask);
debug_printf ("hostid: %08x", hostid);
return hostid;