Also, I don't know if cp behaves well if some of the read/write
syscalls return EINTR, or if it just gives up. It is unclear to me
how and to what extent a good program is supposed to cope with this
and retry.
Yep. When I designed the scsh syscall interface, I decreed that syscalls never
return EINTR -- they loop & resume. Want to bail out on an interrupt? Scheme
has exceptions, so have your signal handler throw out to a handler. EINTR is,
in my opinion, very bogus. If I missed something important here, OS wizards
are welcome to set me straight.
On BSD, grok sys/coda/*.c, the VFS rules, and signal delivery. After
several weeks of just reading code, you will be enlightened and able
to fix any issues that are present :-)
UTSL!
-Olin