~ chicken-core (chicken-5) 85146d48834bb9557f05037f47dcb7b12b3cb371
commit 85146d48834bb9557f05037f47dcb7b12b3cb371 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Thu Aug 26 17:18:08 2010 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Thu Aug 26 17:18:08 2010 +0200 refactored removal of thread from fd-list diff --git a/scheduler.scm b/scheduler.scm index 93697522..e085d9e2 100644 --- a/scheduler.scm +++ b/scheduler.scm @@ -120,7 +120,6 @@ EOF (begin (##sys#setislot tto 13 #t) ; mark as being unblocked by timeout (##sys#clear-i/o-state-for-thread! tto) - ;;(pp `(CLEARED: ,tto ,@##sys#fd-list) ##sys#standard-error) ;*** (##sys#thread-basic-unblock! tto) (loop (cdr lst)) ) (begin @@ -427,15 +426,14 @@ EOF (when (pair? (##sys#slot t 11)) (let ((fd (car (##sys#slot t 11)))) (set! ##sys#fd-list - (let loop ([lst ##sys#fd-list]) + (let loop ((lst ##sys#fd-list)) (if (null? lst) '() - (let* ([a (car lst)] - [fd2 (car a)] ) + (let* ((a (car lst)) + (fd2 (car a)) ) (if (eq? fd fd2) (let ((ts (##sys#delq t (cdr a)))) ; remove from fd-list entry - (cond ((null? ts) - (cdr lst) ) + (cond ((null? ts) (cdr lst)) (else (##sys#setslot a 1 ts) ; fd-list entry is list with t removed lst) ) ) @@ -492,13 +490,5 @@ EOF (when (or (eq? 'blocked (##sys#slot t 3)) (eq? 'sleeping (##sys#slot t 3))) (##sys#remove-from-timeout-list t) - (set! ##sys#fd-list - (let loop ([fdl ##sys#fd-list]) - (if (null? fdl) - '() - (let ([a (##sys#slot fdl 0)]) - (cons - (cons (##sys#slot a 0) - (##sys#delq t (##sys#slot a 1)) ) - (loop (##sys#slot fdl 1)) ) ) ) ) ) + (##sys#clear-i/o-state-for-thread! t) (##sys#thread-basic-unblock! t) ) )Trap