* 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

@ -1,3 +1,8 @@
2003-07-06 Christopher Faylor <cgf@redhat.com>
* syscalls.cc (gethostid): Set thread affinity so that results are
predictable.
2003-07-05 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (list::match): Add parameters to return valid address and

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;