chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] Safe interrupt handlers?


From: Tony Sidaway
Subject: [Chicken-users] Safe interrupt handlers?
Date: Mon, 26 Feb 2007 15:43:34 +0000

An interrupt handler written in Chicken Scheme probably can't do a lot
without knocking over a heap of dominoes.

Nevertheless, would a simple lambda that only changes a top level flag
variable be stable enough to be useful?  This is often all that posix
interrupt handlers written in C do anyway.

This is the sort of thing I'm thinking of.  When the interrupt is
fired, procedure sigX is executed irrespective of the current state of
Chicken.  The following should be read as pseudocode rather than a
skeleton for actual implementation.

(define (sigX-flag #f)

(procedure (sigX-handler)
 (set! sigX-flag #t))

(procedure (handle-sigX)
 (with-interrupts-disabled
   (lambda ()
     (do-some-stuff)
     (set! sigX-flag #f))))

(set-sigX-handler-to-handle-sigX)
(let loop ((...))
 (if sigX-flag
   (handle-sigX)
   (begin
     (do-something-else)
     (loop ...)))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]