12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #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;
- }
|