Commit [783805] Maximize Restore History

0.8.5.37.resistance-is-futex.1
Let's have some of this stuff in CVS before I completely
forget what it does. Highlights:

We rewrote the locking around GC again. This time I think I
understand it, so it stands an outside chance of being correct

Support the "futex" fast userspace locking in Linux 2.6, for
mutexes and condition variables. This is not in the default
build: to enable, add :sb-futex to the target features.
Requires 2.6 or an NPTL backport at build time, but an
SBCL built with the feature should be able to fall back to the
signals-based locking if futexes are not available at runtime

The *session-lock* stuff is presently broken, because we
can't introspect on kernel queues from user space. Chopped
out the *background-threads-wait-for-debugger* switch as
it can now be done with *invoke-debugger-hook* anyway

Cut out much of the never-actually-worked cruft from
target-thread.lisp

search_{static,read_only}_space now external functions like
search_dynamic_space, mostly so I can debug in gdb more easily

os_init in linux-os.c rearranged a bit and test for sys_futex
call added, but should be otherwise functionally identical

signal_thread_to_dequeue wrapper function means we don't need
to grovel SIGRTMIN (patch from Andreas Fuchs)

Fix for changes in Linux 2.6 SIGTRAP handling:
trap_PendingInterrupt now removes SIGTRAP from the signal mask
before executing the pending handler, otherwise any
pseudoatomic in the pending handler will lead to process
death in short order

small amount of spring-cleaning in the threads.impure.lisp test

Incorporated parts of the thread patch in 0.8.5's contrib/

... stop_the_world now uses a slot in the thread structure to
work out what needs stopping and what has been stopped,
instead of just counting them

... threads are created in STOPPED state and only set RUNNING
in new_thread_trampoline

Daniel Barlow Daniel Barlow 2003-11-23

changed src/code/cold-init.lisp
changed src/code/gc.lisp
changed src/code/target-thread.lisp
changed src/runtime/gencgc.c
changed src/runtime/linux-os.c
changed src/runtime/linux-os.h
changed src/runtime/thread.c
changed src/runtime/x86-arch.c
changed src/runtime/x86-linux-os.c
changed tests/threads.impure.lisp
changed tools-for-build/grovel-headers.c
changed CREDITS
changed base-target-features.lisp-expr
changed package-data-list.lisp-expr
changed version.lisp-expr
src/code/cold-init.lisp Diff Switch to side-by-side view
Loading...
src/code/gc.lisp Diff Switch to side-by-side view
Loading...
src/code/target-thread.lisp Diff Switch to side-by-side view
Loading...
src/runtime/gencgc.c Diff Switch to side-by-side view
Loading...
src/runtime/linux-os.c Diff Switch to side-by-side view
Loading...
src/runtime/linux-os.h Diff Switch to side-by-side view
Loading...
src/runtime/thread.c Diff Switch to side-by-side view
Loading...
src/runtime/x86-arch.c Diff Switch to side-by-side view
Loading...
src/runtime/x86-linux-os.c Diff Switch to side-by-side view
Loading...
tests/threads.impure.lisp Diff Switch to side-by-side view
Loading...
tools-for-build/grovel-headers.c Diff Switch to side-by-side view
Loading...
CREDITS Diff Switch to side-by-side view
Loading...
base-target-features.lisp-expr Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...
version.lisp-expr Diff Switch to side-by-side view
Loading...