49 lines
922 B
C
49 lines
922 B
C
#include <nwthread.h>
|
|
#include <nwerrno.h>
|
|
|
|
/*******************************/
|
|
/* Interupt handler */
|
|
/*******************************/
|
|
|
|
int NLM_mainThreadGroupID;
|
|
int NLM_threadCnt = 0;
|
|
int NLM_exiting = FALSE;
|
|
|
|
#pragma off(unreferenced);
|
|
void NLM_SignalHandler(int sig)
|
|
#pragma on(unreferenced);
|
|
{
|
|
int handlerThreadGroupID;
|
|
|
|
switch(sig)
|
|
{
|
|
case SIGTERM:
|
|
NLM_exiting = TRUE;
|
|
handlerThreadGroupID = GetThreadGroupID();
|
|
SetThreadGroupID(NLM_mainThreadGroupID);
|
|
|
|
/* NLM SDK functions may be called here */
|
|
|
|
while (NLM_threadCnt != 0)
|
|
ThreadSwitchWithDelay();
|
|
SetThreadGroupID(handlerThreadGroupID);
|
|
break;
|
|
case SIGINT:
|
|
signal(SIGINT, NLM_SignalHandler);
|
|
break;
|
|
}
|
|
return;
|
|
}
|
|
|
|
void NLMsignals(void)
|
|
{
|
|
++NLM_threadCnt;
|
|
NLM_mainThreadGroupID = GetThreadGroupID();
|
|
signal(SIGTERM, NLM_SignalHandler);
|
|
signal(SIGINT, NLM_SignalHandler);
|
|
}
|
|
|
|
void NLMexit(void)
|
|
{
|
|
--NLM_threadCnt;
|
|
}
|