Commit bdf83bc5 authored by Alexandre Julliard's avatar Alexandre Julliard

Removed SIGNAL_MaskAsyncEvents and cleaned up signal handling.

parent beb8fabf
...@@ -690,15 +690,15 @@ static HANDLER_DEF(EXC_int) ...@@ -690,15 +690,15 @@ static HANDLER_DEF(EXC_int)
*/ */
void EXC_InitHandlers(void) void EXC_InitHandlers(void)
{ {
SIGNAL_SetHandler( SIGINT, (void (*)())EXC_int, 1 ); SIGNAL_SetHandler( SIGINT, (void (*)())EXC_int );
SIGNAL_SetHandler( SIGFPE, (void (*)())EXC_fpe, 1 ); SIGNAL_SetHandler( SIGFPE, (void (*)())EXC_fpe );
SIGNAL_SetHandler( SIGSEGV, (void (*)())EXC_segv, 1 ); SIGNAL_SetHandler( SIGSEGV, (void (*)())EXC_segv );
SIGNAL_SetHandler( SIGILL, (void (*)())EXC_segv, 1 ); SIGNAL_SetHandler( SIGILL, (void (*)())EXC_segv );
#ifdef SIGBUS #ifdef SIGBUS
SIGNAL_SetHandler( SIGBUS, (void (*)())EXC_segv, 1 ); SIGNAL_SetHandler( SIGBUS, (void (*)())EXC_segv );
#endif #endif
#ifdef SIGTRAP #ifdef SIGTRAP
SIGNAL_SetHandler( SIGTRAP, (void (*)())EXC_trap, 1 ); SIGNAL_SetHandler( SIGTRAP, (void (*)())EXC_trap );
#endif #endif
return; return;
} }
...@@ -186,8 +186,7 @@ extern void WINAPI XMS_Handler(CONTEXT86*); ...@@ -186,8 +186,7 @@ extern void WINAPI XMS_Handler(CONTEXT86*);
/* loader/signal.c */ /* loader/signal.c */
extern BOOL SIGNAL_Init(void); extern BOOL SIGNAL_Init(void);
extern void SIGNAL_SetHandler( int sig, void (*func)(), int flags ); extern void SIGNAL_SetHandler( int sig, void (*func)() );
extern void SIGNAL_MaskAsyncEvents( BOOL flag );
/* misc/aspi.c */ /* misc/aspi.c */
extern void ASPI_DOS_HandleInt(CONTEXT86 *context); extern void ASPI_DOS_HandleInt(CONTEXT86 *context);
......
...@@ -423,8 +423,6 @@ BOOL MZ_InitTask( LPDOSTASK lpDosTask ) ...@@ -423,8 +423,6 @@ BOOL MZ_InitTask( LPDOSTASK lpDosTask )
/* put our pipes somewhere dosmod can find them */ /* put our pipes somewhere dosmod can find them */
dup2(write_fd[0],0); /* stdin */ dup2(write_fd[0],0); /* stdin */
dup2(x_fd,1); /* stdout */ dup2(x_fd,1); /* stdout */
/* enable signals */
SIGNAL_MaskAsyncEvents(FALSE);
/* now load dosmod */ /* now load dosmod */
/* check argv[0]-derived paths first, since the newest dosmod is most likely there /* check argv[0]-derived paths first, since the newest dosmod is most likely there
* (at least it was once for Andreas Mohr, so I decided to make it easier for him) */ * (at least it was once for Andreas Mohr, so I decided to make it easier for him) */
......
...@@ -87,31 +87,12 @@ static inline int wine_sigaction( int sig, struct kernel_sigaction *new, ...@@ -87,31 +87,12 @@ static inline int wine_sigaction( int sig, struct kernel_sigaction *new,
/* Signal stack */ /* Signal stack */
static char SIGNAL_Stack[16384]; static char SIGNAL_Stack[16384];
static sigset_t async_signal_set;
/**********************************************************************
* SIGNAL_child
*
* wait4 terminated child processes
*/
static HANDLER_DEF(SIGNAL_child)
{
HANDLER_INIT();
#ifdef HAVE_WAIT4
wait4( 0, NULL, WNOHANG, NULL);
#elif defined (HAVE_WAITPID)
/* I am sort-of guessing that this is the same as the wait4 call. */
waitpid (0, NULL, WNOHANG);
#else
wait(NULL);
#endif
}
/********************************************************************** /**********************************************************************
* SIGNAL_SetHandler * SIGNAL_SetHandler
*/ */
void SIGNAL_SetHandler( int sig, void (*func)(), int flags ) void SIGNAL_SetHandler( int sig, void (*func)() )
{ {
int ret; int ret;
...@@ -119,7 +100,7 @@ void SIGNAL_SetHandler( int sig, void (*func)(), int flags ) ...@@ -119,7 +100,7 @@ void SIGNAL_SetHandler( int sig, void (*func)(), int flags )
struct kernel_sigaction sig_act; struct kernel_sigaction sig_act;
sig_act.sa_handler = func; sig_act.sa_handler = func;
sig_act.sa_flags = SA_RESTART | (flags) ? SA_NOMASK : 0; sig_act.sa_flags = SA_RESTART | SA_NOMASK;
sig_act.sa_mask = 0; sig_act.sa_mask = 0;
/* Point to the top of the stack, minus 4 just in case, and make /* Point to the top of the stack, minus 4 just in case, and make
it aligned */ it aligned */
...@@ -153,19 +134,6 @@ void SIGNAL_SetHandler( int sig, void (*func)(), int flags ) ...@@ -153,19 +134,6 @@ void SIGNAL_SetHandler( int sig, void (*func)(), int flags )
} }
} }
extern void stop_wait(int a);
extern void WINSOCK_sigio(int a);
extern void ASYNC_sigio(int a);
/**********************************************************************
* SIGNAL_MaskAsyncEvents
*/
void SIGNAL_MaskAsyncEvents( BOOL flag )
{
sigprocmask( (flag) ? SIG_BLOCK : SIG_UNBLOCK , &async_signal_set, NULL);
}
/********************************************************************** /**********************************************************************
* SIGNAL_Init * SIGNAL_Init
...@@ -184,18 +152,10 @@ BOOL SIGNAL_Init(void) ...@@ -184,18 +152,10 @@ BOOL SIGNAL_Init(void)
} }
#endif /* HAVE_SIGALTSTACK */ #endif /* HAVE_SIGALTSTACK */
sigemptyset(&async_signal_set);
SIGNAL_SetHandler( SIGCHLD, (void (*)())SIGNAL_child, 1);
#ifdef SIGIO
sigaddset(&async_signal_set, SIGIO);
/* SIGNAL_SetHandler( SIGIO, (void (*)())WINSOCK_sigio, 0); */
SIGNAL_SetHandler( SIGIO, (void (*)())ASYNC_sigio, 0);
#endif
sigaddset(&async_signal_set, SIGALRM);
/* ignore SIGPIPE so that WINSOCK can get a EPIPE error instead */ /* ignore SIGPIPE so that WINSOCK can get a EPIPE error instead */
signal (SIGPIPE, SIG_IGN); signal (SIGPIPE, SIG_IGN);
/* automatic child reaping to avoid zombies */
signal (SIGCHLD, SIG_IGN);
EXC_InitHandlers(); EXC_InitHandlers();
return TRUE; return TRUE;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment