- works on stock 2.4 kernels, but the scheduler loop must poll
- works on RH9 2.4.20-18.9 kernel, but doesn't seem quite as stable 
  as 2.5/2.6
  for pending signals rather than relying on the kernel delivering them
  to the right place.
- most tested on 2.6.0-test1 and up

- running job-control programs (ie, bash) under Valgrind won't work
  properly without a kernel patch (as of 2.6.0-test2-mm2).  This is because
  threads in a thread group don't follow the thread group leader's changes
  in process group ID, and they can't change it for themselves.

- SA_NOCLDWAIT doesn't work properly if the program is actually blocked
  in wait4() when SIGCHLD arrives; the wait4() will return details for
  the exiting child.  In other circumstances children should be quietly reaped.
  [ This may be fixable when running under RH2.4 and 2.6, since we can
    set NOCLDWAIT in the kernel's state without risk of losing our child
    threads. ]

- 2.4 has somewhat disfunctional thread/signal interactions, so many test
  do not work as well under 2.4.  In general, it should be no worse than
  the old signal code.  I don't intend spending a lot of time fixing this
  because 2.6 is nearly ready for widespread use.

TODO:

- support application use of clone().  Interesting question is which
  options do we support?  Do we need to implement futex as well, or can
  we just use the kernel's implementation?

========================================
Testing

I've been testing with the Posix test suite:
http://sourceforge.net/projects/posixtest/, version 1.2.0.  

----------------------------------------
Expected failures:

conformance/interfaces/sigwaitinfo/6-1.test
	pthread_kill() calls the tkill syscall, which causes a code of
	SI_TKILL rather than the SI_USER which this test expects.

conformance/interfaces/sigrelse/3-*.test
	glibc bug in sigrelse(), which fails without Valgrind too.

conformance/interfaces/pthread_barrier_*/*
	Valgrind's libpthreads doesn't implement pthread_barrier_*.
	(There are some passes, but I don't know why.)

conformance/interfaces/pthread_cond_timedwait/2-3
	This test is just completely broken.  It does expose a problem
	in Valgrind's mutex implementation - it is too dependent on
	the client code not doing stupid stuff.  This test makes
	Valgrind have an assertion failure.

conformance/interfaces/pthread_condattr_getpshared/*
	pthread_condattr_getpshared not implemented

conformance/interfaces/pthread_condattr_setpshared/*
	pthread_condattr_setpshared not implemented

conformance/interfaces/pthread_key_create/speculative/5-1
	Valgrind should cope with key overload

conformance/interfaces/pthread_mutex_timedlock/*
	not implemented

conformance/interfaces/pthread_rwlock_rdlock/2-1:
	relies on pthread_setschedparam

conformance/interfaces/pthread_rwlock_timedrdlock/*
	valgrind's libpthread.so: UNIMPLEMENTED FUNCTION: pthread_rwlock_timedrdlock

conformance/interfaces/pthread_rwlockattr_getpshared/*
	pthread_rwlockattr_getpshared not implemented

conformance/interfaces/pthread_rwlockattr_setpshared/*
	pthread_rwlockattr_setpshared not implemented

conformance/interfaces/sched_rr_get_interval/*
	syscall 161 (sched_rr_get_interval) not implemented

conformance/interfaces/sigaction/21-1
	Subtle problem: if app specifies SA_NOCLDWAIT on their SIGCHLD
	signal handler, Valgrind will attempt to catch the SIGCHLD and
	wait4() on all the children before returning to the app.
	However, if the app was running a wait4() at the time the
	SIGCHLD arrives, it will get the child's status.  Quite what
	the app is doing running wait4() when it explicitly asked for
	it to be useless, I'm not sure...

conformance/interfaces/sigaction/17-{3,6,8,12}
	(2.4) These fail under 2.4 because they deal with SIGSEGV, SIGBUS
	and SIGILL.  These signals can only be delivered if there's a
	thread immediately ready to handle them, but cannot be left
	pending indefinitely.  These tests hang forever because the
	signal is discarded rather than delivered.

conformance/interfaces/sigqueue/{1,4,8}-1
	(2.4) Signals that we route manually do not have queued data
	associated with them - they are routed with tkill.  Also
	pending signals are only kept in a mask, not in a queue, so
	there can only be one at a time.

----------------------------------------

Still to investigate:

conformance/interfaces/pthread_detach/4-1

+conformance/interfaces/pthread_rwlock_rdlock/4-1: execution: FAILED: Output:
+main: attempt write lock
+main: acquired write lock
+sig_thread: attemp read lock
+main: fire SIGUSR1 to sig_thread
+SIGUSR1 was not caught by sig_thread


+conformance/interfaces/pthread_rwlock_unlock/4-1: execution: FAILED: Output:
+Test FAILED: Incorrect error code, expected 0 or EINVAL, got 1

+conformance/interfaces/pthread_rwlock_wrlock/2-1: execution: FAILED: Output:
+main: attempt write lock
+sig_thread: attempt write lock
+main: fire SIGUSR1 to sig_thread
+The signal handler did not get called.

+conformance/interfaces/pthread_rwlock_wrlock/3-1: execution: FAILED: Output:
+
+sched status:
+
+Thread 1: status = WaitCV, associated_mx = 0x40115910, associated_cv = 0x401158E0
+==11243==    at 0x40102962: pthread_cond_wait (vg_libpthread.c:1093)
+==11243==    by 0x40104976: __pthread_rwlock_wrlock (vg_libpthread.c:2619)
+==11243==    by 0x8048588: main (3-1.c:53)
+==11243==    by 0x4013DA46: __libc_start_main (in /lib/libc-2.3.2.so)
+
+==11243== Warning: pthread scheduler exited due to deadlock
+
+valgrind: vg_main.c:1619 (vgPlain_main): Assertion `vgPlain_threads[vgPlain_last_run_tid].status == VgTs_Runnable' failed.
+
+sched status:
+
+Thread 1: status = WaitCV, associated_mx = 0x40115910, associated_cv = 0x401158E0
+==11243==    at 0x40102962: pthread_cond_wait (vg_libpthread.c:1093)
+==11243==    by 0x40104976: __pthread_rwlock_wrlock (vg_libpthread.c:2619)
+==11243==    by 0x8048588: main (3-1.c:53)
+==11243==    by 0x4013DA46: __libc_start_main (in /lib/libc-2.3.2.so)


+conformance/interfaces/sem_close/1-1.test:
/home/jeremy/bk/valgrind/syscalls/coregrind/.in_place/libpthread.so.0:
version `GLIBC_2.1.1' not found (required by
conformance/interfaces/sem_close/1-1.test)

+conformance/interfaces/sem_timedwait/6-1: execution: FAILED: Output:
+TEST FAILED
+conformance/interfaces/sem_timedwait/6-2: execution: FAILED: Output:
+TEST FAILED

+conformance/interfaces/sem_timedwait/9-1: execution: FAILED: Output:
+In handler
+TEST FAILED: errno != EINTR


conformance/interfaces/sigaction/10-1: 
	Used to work.  Mysterious.  Works everywhere except in the test harness...


+conformance/interfaces/sigpause/1-2: execution: FAILED: Output:
+
+valgrind: vg_mylibc.c:1324 (vgPlain_read_millisecond_timer): Assertion `rdtsc_now > rdtsc_cal_end_raw' failed.
+
+sched status:
+
+Thread 1: status = Sleeping, associated_mx = 0x0, associated_cv = 0x0
+==19929==    at 0x401D6765: __GI___libc_nanosleep (in /lib/libc-2.3.2.so)
+==19929==    by 0x80485C1: main (1-2.c:65)
+==19929==    by 0x4013DA46: __libc_start_main (in /lib/libc-2.3.2.so)
+==19929==    by 0x8048494: ??? (start.S:81)
+
+Thread 2: status = WaitSys, associated_mx = 0x0, associated_cv = 0x0
+==19929==    at 0x40150796: __libc_sigsuspend (in /lib/libc-2.3.2.so)
+==19929==    by 0x401509B3: __GI___sigpause (in /lib/libc-2.3.2.so)
+==19929==    by 0x804857C: a_thread_func (1-2.c:48)
+==19929==    by 0x40102099: thread_wrapper (vg_libpthread.c:667)



----------------------------------------

Fixes:
conformance/interfaces/pthread_detach/4-2
	This fails under NPTL, but passes under Valgrind
