#include #include #include #define MAXLOOP 25 #include double dosomething(double x); void main(void) { int loop; double x = 1.0; HPCxAlarmSet(); /* Set up the alarm */ for (loop=0; loop < MAXLOOP; loop++) { x = dosomething(x); printf("Finished loop %d\n", loop+1); if ( HPCxAlarm() ) /* Has the alarm gone off yet? */ { printf("WARNING: Alarm Call Received!\n"); loop++; break; } } printf("Checkpointing after completing %d iterations\n", loop); } double dosomething(double x) { int i; int nrepeat = 12500000; /* Takes about 1 second to do this many sqrts */ /* providing no compiler optimisation is used */ for (i=0; i < nrepeat; i++) { x = sqrt(x); } return(x); }