Changes to the Windows 3.1/95/NT version: auto-configuration and
authorStephen Adams <edu/mit/csail/zurich/adams>
Sat, 23 Mar 1996 19:25:23 +0000 (19:25 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Sat, 23 Mar 1996 19:25:23 +0000 (19:25 +0000)
commit9689a3239ba2885e9d9cb7f587b2a0ca23b9d76b
treeabd4739e579ccc0d668787ce80438e62a0cb7ec2
parent8416c631b068581b688beb7ae034c617160b7827
Changes to the Windows 3.1/95/NT version: auto-configuration and
better virtual memory behaviour.

There used to be two version of the library NTSCMLIB.DLL, one version
for WIN32S, and another version for NT (and '95).  The WIN32S version
had a partner, NTW16LIB.DLL, to handle the 16-bit side of things.
The system was configured for Windows 3.1 or NT by copying the
appropriate version of NTSCMLIB.DLL into the same directory as
SCHEME.EXE, or putting an appropriate directory in the PATH.

The new scheme is that instead of two NTSCMLIB.DLL files and a
NTW16LIB.DLL file there will be three files:

  SCHEME32.DLL The true 32 bit version (NT & '95)
  SCHEME31.DLL  The windows 3.1 (win32s) version
  SCHEME16.DLL    and its 16 bit buddy

These are no longer bound at link time.  Instead, nttop.c now detects
WIN32S vs. NT and explicitly loads the appropriate version.  To
support this dynamic linking, the utilities referenced via a
WIN32_SYSTEM_UTILITIES structure.

Now both SCHEME31.DLL and SCHEME32.DLL use VirtualAlloc, so the
garbage collector has been changed to de-commit and re-commit the
pages in the old half-space.  Toy experiments show that roughly 30-50%
of the working set is in the old half-space.

The allocation code *could* be changed to reserve the virtual address
space of the whole heap as this would allow an extensible heap.
16 files changed:
v7/src/microcode/cmpint.c
v7/src/microcode/memmag.c
v7/src/microcode/memmag.h
v7/src/microcode/ntio.c
v7/src/microcode/ntscmlib.h
v7/src/microcode/ntsig.c
v7/src/microcode/ntsys.h
v7/src/microcode/nttop.c
v7/src/microcode/ntutl/makefile
v7/src/microcode/ntutl/scheme16.c
v7/src/microcode/ntutl/scheme16.def
v7/src/microcode/ntutl/scheme16.mak
v7/src/microcode/ntutl/scheme31.c
v7/src/microcode/ntutl/scheme31.def
v7/src/microcode/ntutl/scheme32.c
v7/src/microcode/ntutl/scheme32.def