/* * $Header: /home/ubuntu/mnt/e9_copy/MITgcm/eesupp/src/sigreg.c,v 1.7 2011/08/10 22:33:32 jahn Exp $ * $Name: checkpoint64x $ //BOP // !ROUTINE: sigreg // !INTERFACE: sigreg() // !DESCRIPTION: // Register a signal handler //EOP */ #ifdef HAVE_SIGREG /* Here, we get the definition of the FC_NAMEMANGLE() macro. */ #include "FC_NAMEMANGLE.h" /* #define FC_NAMEMANGLE(X) X ## _ */ #ifdef HAVE_SIGREG #include #include #include #include #include int * sigreg_ip; static void killhandler( unsigned int sn, siginfo_t si, struct ucontext *sc ) { *sigreg_ip = *sigreg_ip + 1; return; } #endif /* int main( int argc, char ** argv ) */ void FC_NAMEMANGLE(sigreg) (int * aip) { #ifdef HAVE_SIGREG struct sigaction s; sigreg_ip = aip; s.sa_flags = SA_SIGINFO; s.sa_sigaction = (void *)killhandler; if(sigaction (SIGTERM,&s,(struct sigaction *)NULL)) { printf("Sigaction returned error = %d\n", errno); exit(0); } #endif return; } #endif