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.