From: Gabor M. <me...@us...> - 2009-03-22 21:44:16
|
Update of /cvsroot/sbcl/sbcl/src/code In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv10535/src/code Modified Files: target-signal.lisp target-thread.lisp Log Message: 1.0.26.15: interrupt.c refactoring - check that all or none of the deferrable signals are blocked - make passing NULL for sigset in the right context mean the current sigmask: there is only a single block_signals() function that can performs sigset arithmetic or change the current mask. - print pc and sp on memory faults to ease debugging Index: target-signal.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/target-signal.lisp,v retrieving revision 1.50 retrieving revision 1.51 diff -u -d -r1.50 -r1.51 --- target-signal.lisp 16 Feb 2009 22:27:07 -0000 1.50 +++ target-signal.lisp 22 Mar 2009 21:44:07 -0000 1.51 @@ -99,8 +99,22 @@ ;;; doing things the SBCL way and moving this kind of C-level work ;;; down to C wrapper functions.) -(sb!alien:define-alien-routine "unblock_deferrable_signals" sb!alien:void) -(sb!alien:define-alien-routine "unblock_gc_signals" sb!alien:void) +(declaim (inline %unblock-deferrable-signals %unblock-gc-signals)) +(sb!alien:define-alien-routine ("unblock_deferrable_signals" + %unblock-deferrable-signals) + sb!alien:void + (where sb!alien:unsigned-long) + (old sb!alien:unsigned-long)) +(sb!alien:define-alien-routine ("unblock_gc_signals" %unblock-gc-signals) + sb!alien:void + (where sb!alien:unsigned-long) + (old sb!alien:unsigned-long)) + +(defun unblock-deferrable-signals () + (%unblock-deferrable-signals 0 0)) + +(defun unblock-gc-signals () + (%unblock-gc-signals 0 0)) ;;;; C routines that actually do all the work of establishing signal handlers Index: target-thread.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/target-thread.lisp,v retrieving revision 1.112 retrieving revision 1.113 diff -u -d -r1.112 -r1.113 --- target-thread.lisp 16 Mar 2009 16:00:07 -0000 1.112 +++ target-thread.lisp 22 Mar 2009 21:44:07 -0000 1.113 @@ -120,8 +120,14 @@ (define-alien-routine ("create_thread" %create-thread) unsigned-long (lisp-fun-address unsigned-long)) - (define-alien-routine "block_deferrable_signals" - void) + (declaim (inline %block-deferrable-signals)) + (define-alien-routine ("block_deferrable_signals" %block-deferrable-signals) + void + (where sb!alien:unsigned-long) + (old sb!alien:unsigned-long)) + + (defun block-deferrable-signals () + (%block-deferrable-signals 0 0)) #!+sb-lutex (progn |