brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 8345014 Raw
76 lines · c
1/* ADJ_FREQ Skew consistency test2 *		by: john stultz (johnstul@us.ibm.com)3 *		(C) Copyright IBM 20124 *		Licensed under the GPLv25 *6 *  NOTE: This is a meta-test which cranks the ADJ_FREQ knob back7 *  and forth and watches for consistency problems. Thus this test requires8 *  that the inconsistency-check tests be present in the same directory it9 *  is run from.10 *11 *  To build:12 *	$ gcc skew_consistency.c -o skew_consistency -lrt13 *14 *   This program is free software: you can redistribute it and/or modify15 *   it under the terms of the GNU General Public License as published by16 *   the Free Software Foundation, either version 2 of the License, or17 *   (at your option) any later version.18 *19 *   This program is distributed in the hope that it will be useful,20 *   but WITHOUT ANY WARRANTY; without even the implied warranty of21 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the22 *   GNU General Public License for more details.23 */24 25 26#include <stdio.h>27#include <stdlib.h>28#include <unistd.h>29#include <sys/time.h>30#include <sys/timex.h>31#include <time.h>32#include <sys/types.h>33#include <sys/stat.h>34#include <fcntl.h>35#include <string.h>36#include <sys/wait.h>37#include "../kselftest.h"38 39int main(int argc, char **argv)40{41	struct timex tx;42	int ret, ppm;43	pid_t pid;44 45 46	printf("Running Asynchronous Frequency Changing Tests...\n");47 48	pid = fork();49	if (!pid)50		return system("./inconsistency-check -c 1 -t 600");51 52	ppm = 500;53	ret = 0;54 55	while (pid != waitpid(pid, &ret, WNOHANG)) {56		ppm = -ppm;57		tx.modes = ADJ_FREQUENCY;58		tx.freq = ppm << 16;59		adjtimex(&tx);60		usleep(500000);61	}62 63	/* Set things back */64	tx.modes = ADJ_FREQUENCY;65	tx.offset = 0;66	adjtimex(&tx);67 68 69	if (ret) {70		printf("[FAILED]\n");71		ksft_exit_fail();72	}73	printf("[OK]\n");74	ksft_exit_pass();75}76