smp: without-interrupts: intrpt.scm
authorMatt Birkholz <puck@birchwood-abbey.net>
Wed, 25 Feb 2015 15:49:08 +0000 (08:49 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Wed, 25 Feb 2015 15:49:08 +0000 (08:49 -0700)
README.txt
src/runtime/intrpt.scm

index 8564a84e0344ee4a75256b8c9688fae71851e699..62a48632819b5f010e10feb377160fe2cbe4d4e8 100644 (file)
@@ -1224,13 +1224,28 @@ The hits with accompanying analysis:
        The latter is hopefully unnecessary on modern machinery.
 
   intrpt.scm:60:  (clear-interrupts! 1)
+       Definition.
   intrpt.scm:88:  (clear-interrupts! interrupt-bit/timer)
+       Caller: timer-interrupt-handler
   intrpt.scm:96:  (clear-interrupts! interrupt-bit/suspend)
+       Caller: suspend-interrupt-handler
   intrpt.scm:124:  (clear-interrupts! interrupt-bit/after-gc))
+       Caller: after-gc-interrupt-handler
   intrpt.scm:133:  (clear-interrupts! interrupt-bit/global-3)
+       Caller: console-resize-handler
   intrpt.scm:142:  (clear-interrupts! interrupt-bit)
+       Caller: value of illegal-interrupt-handler
   intrpt.scm:157:  (clear-interrupts! interrupt-bit/kbd)
+       Caller: external-interrupt-handler
   intrpt.scm:200:  (without-interrupts
+       Caller: install
+                 initialize-package!
+
+       OK.  Clear-interrupts! is used during the servicing of each
+       interrupt.  Without-interrupts is used for atomic access when
+       installing the handlers but is unnecessary assuming
+       initialize-package! is called during a single-threaded cold
+       load.
 
   io.scm:96:  (without-interrupts
   io.scm:176:    (let ((n (without-interrupts
index f8eddfc66dddc2e5afda7a7af1ad7956f4305643..622ee7688c4c6bd3781f4a907bad95077936ff64 100644 (file)
@@ -197,8 +197,6 @@ USA.
                (interrupt)))))))
 \f
 (define (install)
-  (without-interrupts
-   (lambda ()
      (let ((system-interrupt-vector
            (vector-ref (get-fixed-objects-vector) index:interrupt-vector))
           (old-interrupt-mask-vector
@@ -280,4 +278,4 @@ USA.
                      index:termination-vector
                      termination-vector)
 
-        (set-fixed-objects-vector! (get-fixed-objects-vector)))))))
\ No newline at end of file
+        (set-fixed-objects-vector! (get-fixed-objects-vector)))))
\ No newline at end of file