Remove CPU groups handling from the gc.cpp
authorJan Vorlicek <janvorli@microsoft.com>
Mon, 25 Mar 2019 19:52:07 +0000 (20:52 +0100)
committerJan Vorlicek <janvorli@microsoft.com>
Wed, 3 Apr 2019 19:12:02 +0000 (21:12 +0200)
commit67f1116cea421ebbe516fafc963e213cc6f0e117
tree671983515e49105c60ba376a79bbd28020ce766c
parent17add60f708fa55a5447a67851783ab98e01f0cf
Remove CPU groups handling from the gc.cpp

This change removes all explicit manipulation and handling of CPU groups
from the gc.cpp and hides it behind the GCToOSInterface. This is a step
to prepare for removing the CPU groups emulation on Unix. In fact, I've
already updated the standalone Unix GC to be able to affinitize GC
threads to any subset of CPUs and added previously missing support for
the affinity setting itself. The NUMA support still remains missing there.

It also adds a new way to specify GC thread affinitization that is not
limited to 64 threads. Instead of affinity mask stored in 64 bit
integer, we now use a bitset that can contain as many processors as
GC can support. And there is a new GC config to specify the affinity in
a form of a range list.
13 files changed:
src/gc/env/gcenv.base.h
src/gc/env/gcenv.os.h
src/gc/gc.cpp
src/gc/gcconfig.h
src/gc/unix/config.h.in
src/gc/unix/configure.cmake
src/gc/unix/gcenv.unix.cpp
src/gc/windows/gcenv.windows.cpp
src/inc/corerror.xml
src/pal/prebuilt/corerror/mscorurt.rc
src/pal/prebuilt/inc/corerror.h
src/vm/gcenv.ee.cpp
src/vm/gcenv.os.cpp