Copyright (c) 1993 Xerox Corporation.  All rights reserved.
This is a list of things to do to make PPCR multiprocessor-ready.

The idea is for it to be able to use some lwp-like facility.

1. Some per-lwp data.  It must include:

    current thread
    lwp id (for Lamport algorithm (?), signalling other lwps, etc)

2.  System call interface:

    - which system calls are thread-safe?  should partition into (at least)
      - string (presumed safe)
      - i/o (r/w/s)
      - sockets
      - streams (?)
      - ...
    - need at least a per-lwp errno;
      We can't in general copy errno on thread switch even if there is
      a per-lwp errno: a thread may move between lwp's while in the
      process of reading errno.
    - note we need to put the errno value into the standard place
      as well as the per-thread one, if we're going to be able to
      use library code.
    

PCR←VD←WriteProtect{Enable,Disable} !  must keep enable count, but I think it
  already does that ...

   ... e.g. getcwd .. is that a library routine, or a system call.  If library,
   what other things could mess with it?

   lock on shared wd?
   
PCR←IOWDirImpl.c

    so we need to have a lock on the shared wd;
    this shows through in the interface -- we need to unlock it at the end.

    In general, library procs that deal with errno are special.