Subject: CVS commit: src/lib/libpthread
To: None <source-changes@netbsd.org>
From: Nathan J Williams <nathanw@netbsd.org>
List: source-changes
Date: 01/25/2003 02:43:39
Module Name:	src
Committed By:	nathanw
Date:		Sat Jan 25 00:43:39 UTC 2003

Modified Files:
	src/lib/libpthread: pthread_int.h pthread_sa.c pthread_sig.c

Log Message:
More signal rearranging:

 - Signal handlers now simply continue executing the current thread,
   rather than trying to put themselves back on the queue that they came
   from, which was rather fragile. As a result, all callers of
   pthread__block() must be prepared to handle spurious wakeups.

 - When a signal arrives for a thread that is blocked in the kernel,
   note this in another field in pthread_st and set a flag. Process the
   signal and set up the trampoline for the handler *after* the thread
   unblocks, so that both the trampoline and the returned state from
   the kernel are preserved.

 - Factor out some code into a pthread__deliver_signal() routine;
   the signal-taking code in pthread_sigmask() should be able to use this
   soon.

This is still gross, and there are still some terrible MP issues lurking here,
but progress crawls along.


To generate a diff of this commit:
cvs rdiff -r1.3 -r1.4 src/lib/libpthread/pthread_int.h \
    src/lib/libpthread/pthread_sa.c
cvs rdiff -r1.4 -r1.5 src/lib/libpthread/pthread_sig.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.