version 1.6, 2001/12/21 02:32:11 |
version 1.10, 2003/08/22 16:08:23 |
|
|
/* $OpenXM: OpenXM/src/kxx/oxserver00.c,v 1.5 2001/05/06 07:53:01 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kxx/oxserver00.c,v 1.9 2002/11/04 11:09:00 takayama Exp $ */ |
/* nullserver01 */ |
/* nullserver01 */ |
#include <stdio.h> |
#include <stdio.h> |
#include <sys/types.h> |
#include <sys/types.h> |
Line 20 extern int SerialOX; /* Serial number of the packets |
|
Line 20 extern int SerialOX; /* Serial number of the packets |
|
extern int SerialCurrent; /* Current Serial number of the recieved packet. */ |
extern int SerialCurrent; /* Current Serial number of the recieved packet. */ |
extern int OXprintMessage; /* print oxmessages? */ |
extern int OXprintMessage; /* print oxmessages? */ |
|
|
|
#if defined(__CYGWIN__) |
|
sigjmp_buf EnvOfChildServer; |
|
#else |
jmp_buf EnvOfChildServer; |
jmp_buf EnvOfChildServer; |
|
#endif |
|
|
int JmpMessage = 0; |
int JmpMessage = 0; |
|
|
Line 84 nullserver(int fdStream) { |
|
Line 88 nullserver(int fdStream) { |
|
ox_stream ostream; |
ox_stream ostream; |
char sreason[1024]; |
char sreason[1024]; |
extern void controlResetHandler(); |
extern void controlResetHandler(); |
|
#if defined(__CYGWIN__) |
|
extern sigjmp_buf EnvOfStackMachine; |
|
#else |
extern jmp_buf EnvOfStackMachine; |
extern jmp_buf EnvOfStackMachine; |
|
#endif |
int engineByteOrder; |
int engineByteOrder; |
|
|
fflush(NULL); |
fflush(NULL); |
Line 101 nullserver(int fdStream) { |
|
Line 109 nullserver(int fdStream) { |
|
if (PacketMonitor) fp2watch(ostream,stdout); |
if (PacketMonitor) fp2watch(ostream,stdout); |
} |
} |
aaa : ; |
aaa : ; |
|
#if defined(__CYGWIN__) |
|
if (sigsetjmp(EnvOfChildServer,1)) { |
|
#else |
if (setjmp(EnvOfChildServer)) { |
if (setjmp(EnvOfChildServer)) { |
|
#endif |
fprintf(stderr,"childServerMain: jump here.\n"); |
fprintf(stderr,"childServerMain: jump here.\n"); |
if (OxInterruptFlag == 0) { |
if (OxInterruptFlag == 0) { |
fprintf(stderr," ?! \n"); fflush(NULL); |
fprintf(stderr," ?! \n"); fflush(NULL); |
} |
} |
|
KSexecuteString(" ctrlC-hook "); /* Execute User Defined functions. */ |
|
KSexecuteString(" (Computation is interrupted.) "); |
signal(SIGUSR1,controlResetHandler); goto aaa; |
signal(SIGUSR1,controlResetHandler); goto aaa; |
} else { |
} else { |
if (JmpMessage) fprintf(stderr,"Set EnvOfChildServer.\n"); |
if (JmpMessage) fprintf(stderr,"Set EnvOfChildServer.\n"); |
signal(SIGUSR1,controlResetHandler); |
signal(SIGUSR1,controlResetHandler); |
} |
} |
|
#if defined(__CYGWIN__) |
|
if (sigsetjmp(EnvOfStackMachine,1)) { |
|
#else |
if (setjmp(EnvOfStackMachine)) { |
if (setjmp(EnvOfStackMachine)) { |
fprintf(stderr,"childServerMain: jump here by EnvOfStackMachine.\n"); |
#endif |
|
fprintf(stderr,"childServerMain: jump here by EnvOfStackMachine or timeout.\n"); |
if (OxInterruptFlag == 0) { |
if (OxInterruptFlag == 0) { |
fprintf(stderr," ?! \n"); fflush(NULL); |
fprintf(stderr," ?! \n"); fflush(NULL); |
} |
} |
Line 127 nullserver(int fdStream) { |
|
Line 144 nullserver(int fdStream) { |
|
*/ |
*/ |
Sm1_pushError2(SerialCurrent,-1,"Global jump by sm1 error"); |
Sm1_pushError2(SerialCurrent,-1,"Global jump by sm1 error"); |
|
|
|
KSexecuteString(" ctrlC-hook "); /* Execute User Defined functions. */ |
signal(SIGUSR1,controlResetHandler); goto aaa ; |
signal(SIGUSR1,controlResetHandler); goto aaa ; |
} else { |
} else { |
if (JmpMessage) fprintf(stderr,"Set EnvOfStackMachine.\n"); |
if (JmpMessage) fprintf(stderr,"Set EnvOfStackMachine.\n"); |
Line 168 nullserver(int fdStream) { |
|
Line 186 nullserver(int fdStream) { |
|
case OX_DATA: fprintf(stderr," OX_DATA \n"); break; |
case OX_DATA: fprintf(stderr," OX_DATA \n"); break; |
case OX_SYNC_BALL: fprintf(stderr," OX_SYNC_BALL \n"); break; |
case OX_SYNC_BALL: fprintf(stderr," OX_SYNC_BALL \n"); break; |
case -1: fprintf(stderr," End of file. Exiting the server child.\n"); |
case -1: fprintf(stderr," End of file. Exiting the server child.\n"); |
exit(); break; |
exit(0); break; |
default: fprintf(stderr," ?! \n"); break; |
default: fprintf(stderr," ?! \n"); break; |
} |
} |
} |
} |
Line 312 void controlResetHandler(sig) |
|
Line 330 void controlResetHandler(sig) |
|
int sig; |
int sig; |
{ |
{ |
signal(sig,SIG_IGN); |
signal(sig,SIG_IGN); |
|
cancelAlarm(); |
fprintf(stderr,"From controlResetHandler. OxCritical = %d\n",OxCritical); |
fprintf(stderr,"From controlResetHandler. OxCritical = %d\n",OxCritical); |
OxInterruptFlag = 1; |
OxInterruptFlag = 1; |
if (OxCritical) { |
if (OxCritical) { |
return; |
return; |
}else{ |
}else{ |
|
#if defined(__CYGWIN__) |
|
siglongjmp(EnvOfChildServer,2); /* returns 2 for ctrl-C */ |
|
#else |
longjmp(EnvOfChildServer,2); /* returns 2 for ctrl-C */ |
longjmp(EnvOfChildServer,2); /* returns 2 for ctrl-C */ |
|
#endif |
} |
} |
} |
} |
|
|