File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / util / testrs6000.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:38 2012 UTC (12 years, 3 months ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    1: /* Checks for the RS/6000 AIX adjtime() bug, in which if a negative
    2:  * offset is given, the system gets messed up and never completes the
    3:  * adjustment.  If the problem is fixed, this program will print the
    4:  * time, sit there for 10 seconds, and exit.  If the problem isn't fixed,
    5:  * the program will print an occasional "result=nnnnnn" (the residual
    6:  * slew from adjtime()).
    7:  *
    8:  * Compile this with bsdcc and run it as root!
    9:  */
   10: #include <signal.h>
   11: #include <sys/time.h>
   12: #include <time.h>
   13: #include <stdio.h>
   14: 
   15: int timeout();
   16: struct timeval adjustment, result;
   17: 
   18: int
   19: main (
   20: 	int argc,
   21: 	char *argv[]
   22: 	)
   23: {
   24: 	struct itimerval value, oldvalue;
   25: 	int i;
   26: 	time_t curtime;
   27: 
   28: 	curtime = time(0);
   29: 	printf("Starting: %s", ctime(&curtime));
   30: 	value.it_interval.tv_sec = value.it_value.tv_sec = 1;
   31: 	value.it_interval.tv_usec = value.it_value.tv_usec = 0;
   32: 	adjustment.tv_sec = 0;
   33: 	adjustment.tv_usec = -2000;
   34: 	signal(SIGALRM, timeout);
   35: 	setitimer(ITIMER_REAL, &value, &oldvalue);
   36: 	for (i=0; i<10; i++) {
   37: 		pause();
   38: 	}
   39: }
   40: 
   41: int
   42: timeout(
   43: 	int sig,
   44: 	int code,
   45: 	struct sigcontext *scp
   46: 	)
   47: {
   48: 	signal (SIGALRM, timeout);
   49: 	if (adjtime(&adjustment, &result)) 
   50: 	    printf("adjtime call failed\n");
   51: 	if (result.tv_sec != 0 || result.tv_usec != 0) {
   52: 		printf("result.u = %d.%06.6d  ", (int) result.tv_sec,
   53: 		       (int) result.tv_usec);
   54: 	}
   55: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>