 4b84c69b5f
			
		
	
	
	4b84c69b5f
	
	
	
		
			
			Have most signals go through an arch-provided handler which recovers the sigcontext and then calls a generic handler. This replaces the ARCH_GET_SIGCONTEXT macro, which was somewhat fragile. On x86_64, recovering %rdx (which holds the sigcontext pointer) must be the first thing that happens. sig_handler duly invokes that first, but there is no guarantee that I can see that instructions won't be reordered such that %rdx is used before that. Having the arch provide the handler seems much more robust. Some signals in some parts of UML require their own handlers - these places don't call set_handler any more. They call sigaction or signal themselves. Signed-off-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
		
			
				
	
	
		
			15 lines
		
	
	
	
		
			286 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			15 lines
		
	
	
	
		
			286 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2006 Jeff Dike (jdike@addtoit.com)
 | |
|  * Licensed under the GPL
 | |
|  */
 | |
| 
 | |
| #include <signal.h>
 | |
| 
 | |
| extern void (*handlers[])(int sig, struct sigcontext *sc);
 | |
| 
 | |
| void hard_handler(int sig)
 | |
| {
 | |
| 	struct sigcontext *sc = (struct sigcontext *) (&sig + 1);
 | |
| 
 | |
| 	(*handlers[sig])(sig, sc);
 | |
| }
 |