From: Nikodemus Siivola Date: Sat, 12 Feb 2011 15:38:32 +0000 (+0000) Subject: 1.0.45.24: minor MAKE-TIMER cleanups X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=b96ec9c06831fd5b3cee650196681663f0fed7ad;p=sbcl.git 1.0.45.24: minor MAKE-TIMER cleanups Patch by Brit Butler, lp#672252. * Improve the docstring for SB-EXT:MAKE-TIMER. * Add a minor comment to unschedule-timer. ...with minor edits by yours truly, including dropping the bogus SCHEDULE-TIMER change from the original patch. --- diff --git a/src/code/timer.lisp b/src/code/timer.lisp index 381e363..88b9c1d 100644 --- a/src/code/timer.lisp +++ b/src/code/timer.lisp @@ -156,14 +156,15 @@ future versions." (defun make-timer (function &key name (thread sb!thread:*current-thread*)) #!+sb-doc - "Create a timer object that's when scheduled runs FUNCTION. If -THREAD is a thread then that thread is to be interrupted with -FUNCTION. If THREAD is T then a new thread is created each timer -FUNCTION is run. If THREAD is NIL then FUNCTION can be run in any -thread. When THREAD is not T, INTERRUPT-THREAD is used to run FUNCTION -and the ordering guarantees of INTERRUPT-THREAD also apply here. -FUNCTION always runs with interrupts disabled but WITH-INTERRUPTS is -allowed." + "Create a timer that runs FUNCTION when triggered. + +If a THREAD is supplied, FUNCTION is run in that thread. If THREAD is +T, a new thread is created for FUNCTION each time the timer is +triggered. If THREAD is NIL, FUNCTION is run in an unspecified thread. + +When THREAD is not T, INTERRUPT-THREAD is used to run FUNCTION and the +ordering guarantees of INTERRUPT-THREAD apply. FUNCTION runs with +interrupts disabled but WITH-INTERRUPTS is allowed." (%make-timer :name name :function function :thread thread)) (defun timer-name (timer) @@ -285,6 +286,8 @@ triggers." (setf (%timer-expire-time timer) nil (%timer-repeat-interval timer) nil) (let ((old-position (priority-queue-remove *schedule* timer))) + ;; Don't use cancel-function as the %timer-cancel-function + ;; may have changed before we got the scheduler lock. (when old-position (funcall (%timer-cancel-function timer))) (when (eql 0 old-position) diff --git a/version.lisp-expr b/version.lisp-expr index 463d926..f2d9ca2 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -20,4 +20,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.45.23" +"1.0.45.24"