Annotation of embedaddon/ntp/util/testrs6000.c, revision 1.1

1.1     ! misho       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>