git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Kernel - Added assert() macro (same as ASSERT)
[tpg/acess2.git]
/
KernelLand
/
Kernel
/
threads.c
diff --git
a/KernelLand/Kernel/threads.c
b/KernelLand/Kernel/threads.c
index
50889bf
..
280f7f2
100644
(file)
--- a/
KernelLand/Kernel/threads.c
+++ b/
KernelLand/Kernel/threads.c
@@
-1116,22
+1116,41
@@
void Threads_SetSignalHandler(int SignalNum, void *Handler)
}
/**
}
/**
- * \return 0 Ignore
+ * \brief Gets the registered (or default, if none set) handler for a signal.
+ * \return Handler function pointer, OR NULL if no signal to be ignored
*/
void *Threads_GetSignalHandler(int SignalNum)
{
*/
void *Threads_GetSignalHandler(int SignalNum)
{
+ // TODO: Core dump
+ void *User_Signal_Core = User_Signal_Kill;
+
if( SignalNum <= 0 || SignalNum >= NSIGNALS )
return NULL;
void *ret = Proc_GetCurThread()->Process->SignalHandlers[SignalNum];
if( SignalNum <= 0 || SignalNum >= NSIGNALS )
return NULL;
void *ret = Proc_GetCurThread()->Process->SignalHandlers[SignalNum];
- if( !ret )
+ if( !ret
|| (SignalNum == SIGKILL || SignalNum == SIGSTOP)
)
{
// Defaults
switch(SignalNum)
{
{
// Defaults
switch(SignalNum)
{
+ case SIGHUP:
case SIGINT:
case SIGINT:
+ ret = User_Signal_Kill;
+ break;
+ case SIGQUIT:
+ case SIGILL:
+ case SIGABRT:
+ case SIGFPE:
+ ret = User_Signal_Core;
+ break;
case SIGKILL:
case SIGKILL:
+ ret = User_Signal_Kill;
+ break;
case SIGSEGV:
case SIGSEGV:
- case SIGHUP:
+ ret = User_Signal_Core;
+ break;
+ case SIGPIPE:
+ case SIGALRM:
+ case SIGTERM:
ret = User_Signal_Kill;
break;
default:
ret = User_Signal_Kill;
break;
default:
UCC
git Repository :: git.ucc.asn.au