| 
									
										
										
										
											2011-11-08 13:15:44 -05:00
										 |  |  | ! (c)2011 Joe Groff bsd license | 
					
						
							|  |  |  | USING: assocs io.backend.unix kernel namespaces sequences | 
					
						
							|  |  |  | threads ;
 | 
					
						
							|  |  |  | IN: unix.signals | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <PRIVATE
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SYMBOL: signal-handlers | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | signal-handlers [ H{ } ] initialize
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : dispatch-signal ( sig -- )
 | 
					
						
							|  |  |  |     signal-handlers get-global at [ in-thread ] each ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-09 02:12:10 -05:00
										 |  |  | PRIVATE>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-08 13:15:44 -05:00
										 |  |  | : add-signal-handler ( handler: ( -- ) sig -- )
 | 
					
						
							|  |  |  |     signal-handlers get-global push-at ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : remove-signal-handler ( handler sig -- )
 | 
					
						
							|  |  |  |     signal-handlers get-global at [ remove! drop ] [ drop ] if* ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [ dispatch-signal ] dispatch-signal-hook set-global
 |