int validate_freq(void) { struct timex tx; int ret, pass = 0; int i; clear_time_state(); memset(&tx, 0, sizeof(struct timex)); /* Set the leap second insert flag */ printf("Testing ADJ_FREQ... "); fflush(stdout); for (i = 0; i < NUM_FREQ_VALID; i++) { tx.modes = ADJ_FREQUENCY; tx.freq = valid_freq[i]; ret = adjtimex(&tx); if (ret < 0) { printf("[FAIL]\n"); printf("Error: adjtimex(ADJ_FREQ, %ld - %ld ppm\n", valid_freq[i], valid_freq[i]>>16); pass = -1; goto out; } tx.modes = 0; ret = adjtimex(&tx); if (tx.freq != valid_freq[i]) { printf("Warning: freq value %ld not what we set it (%ld)!\n", tx.freq, valid_freq[i]); } }
int main(int argc, char** argv) { struct timex tx; int ret; int i; clear_time_state(); /* Set the leap second insert flag */ tx.modes = ADJ_SETOFFSET | ADJ_NANO; printf("Testing ADJ_SETOFFSET: "); for (i=0; i < NUM_VALID; i++) { tx.time.tv_sec = valid_vals[i].tv_sec; tx.time.tv_usec = valid_vals[i].tv_nsec; ret = adjtimex(&tx); if (ret < 0 ) { printf("FAIL\n"); printf("Error: adjtimex(ADJ_SETOFFSET, %ld:%ld)\n", valid_vals[i].tv_sec,valid_vals[i].tv_nsec); return -1; } } for (i=0; i < NUM_INVALID; i++) { tx.time.tv_sec = invalid_vals[i].tv_sec; tx.time.tv_usec = invalid_vals[i].tv_nsec; ret = adjtimex(&tx); if (ret >= 0 ) { printf("FAIL\n"); printf("Error: invalid adjtimex(ADJ_SETOFFSET, %ld:%ld)\n", invalid_vals[i].tv_sec,invalid_vals[i].tv_nsec); return -1; } } printf("PASS\n"); return 0; }