: signal-pipe-loop ( port -- )
'[
int heap-size _ io:stream-read
- dup [ int deref dispatch-signal-hook get call( x -- ) ] when*
+ dup [ int deref dispatch-signal-hook get-global call( x -- ) ] when*
] loop ;
: start-signal-pipe-thread ( -- )
[ 1 ] [
sigusr1-count get-global
- SIGUSR1 raise drop
+ SIGUSR1 raise yield drop
1.0 seconds sleep
sigusr1-count get-global
swap -
{ 0 } [
sigusr1-count get-global
- SIGUSR1 raise drop
+ SIGUSR1 raise yield drop
1.0 seconds sleep
sigusr1-count get-global swap -
] unit-test
: signal-name. ( n -- )
signal-name [ " (" ")" surround write ] when* ;
-SYMBOL: dispatch-signal-hook
-
-dispatch-signal-hook [ [ drop ] ] initialize
-
<PRIVATE
SYMBOL: signal-handlers
: remove-signal-handler ( handler sig -- )
signal-handlers get-global at [ remove-eq! ] when* drop ;
+SYMBOL: dispatch-signal-hook
+
[ dispatch-signal ] dispatch-signal-hook set-global