I've got the system calls which will support the kernel side
of user-level thread synchronization (twait(lock_t*) and
tsignal(pid_t)) working, although they're definitely not
done. User-level spinlocks are also implemented. Now I just
need to do some more checking in the system calls and implement
the pid queue for libc. The scary part is not really understanding
why p_sema sets the flags it does (since that's where I stole the
code...). I left out the flag-sets I don't understand :)
Small comfort to future users!
I tested the syscalls with a program that tforks and then starts
counting to 10, sleeping between counts. The child does pretty
much the same thing. They both print out what number they're on.
On its 3 the parent calls twait(); on the child's 8
it calls tsignal(). The child exits on 10. The parent is only
at 6 or so, and it dies, the message "no child" appearing. There's
no signal involved (I think I'm catching them all!). I see that
ECHILD is defined in libc/errno.c but it doesn't seem to be used
anywhere in the kernel (cd /vsta/os; grep ECHILD */*.c).
Somebody please explain what's happening?
Gary
Received on Sun Nov 13 14:19:09 1994
This archive was generated by hypermail 2.1.8 : Thu Sep 22 2005 - 15:12:10 PDT