⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timetrim.c

📁 网络时间协议NTP 源码 版本v4.2.0b 该源码用于linux平台下
💻 C
字号:
#if defined(sgi) || defined(_UNICOSMP)/* * timetrim.c *  * "timetrim" allows setting and adjustment of the system clock frequency * trim parameter on Silicon Graphics machines.  The trim value native * units are nanoseconds per second (10**-9), so a trim value of 1 makes * the system clock step ahead 1 nanosecond more per second than a value * of zero.  Xntpd currently uses units of 2**-20 secs for its frequency * offset (drift) values; to convert to a timetrim value, multiply by * 1E9 / 2**20 (about 954). *  * "timetrim" with no arguments just prints out the current kernel value. * With a numeric argument, the kernel value is set to the supplied value. * The "-i" flag causes the supplied value to be added to the kernel value. * The "-n" option causes all input and output to be in xntpd units rather * than timetrim native units. * * Note that there is a limit of +-3000000 (0.3%) on the timetrim value * which is (silently?) enforced by the kernel. *  */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <stdio.h>#include <ctype.h>#include <stdlib.h>#ifdef HAVE_SYS_SYSSGI_H# include <sys/syssgi.h>#endif#ifdef HAVE_SYS_SYSTUNE_H# include <sys/systune.h>#endif#define abs(X) (((X) < 0) ? -(X) : (X))#define USAGE "usage: timetrim [-n] [[-i] value]\n"#define SGITONTP(X) ((double)(X) * 1048576.0/1.0e9)#define NTPTOSGI(X) ((long)((X) * 1.0e9/1048576.0))intmain(	int argc,	char *argv[]	){	char *rem;	int incremental = 0, ntpunits = 0;	long timetrim;	double value;		while (--argc && **++argv == '-' && isalpha((int)argv[0][1])) {		switch (argv[0][1]) {		    case 'i':			incremental++;			break;		    case 'n':			ntpunits++;			break;		    default:			fprintf(stderr, USAGE);			exit(1);		}	}#ifdef HAVE_SYS_SYSSGI_H	if (syssgi(SGI_GETTIMETRIM, &timetrim) < 0) {		perror("syssgi");		exit(2);	}#endif#ifdef HAVE_SYS_SYSTUNE_H	if (systune(SYSTUNE_GET, "timetrim", &timetrim) < 0) {		perror("systune");		exit(2);	}#endif	if (argc == 0) {		if (ntpunits)		    fprintf(stdout, "%0.5f\n", SGITONTP(timetrim));		else		    fprintf(stdout, "%ld\n", timetrim);	} else if (argc != 1) {		fprintf(stderr, USAGE);		exit(1);	} else {		value = strtod(argv[0], &rem);		if (*rem != '\0') {			fprintf(stderr, USAGE);			exit(1);		}		if (ntpunits)		    value = NTPTOSGI(value);		if (incremental)		    timetrim += value;		else		    timetrim = value;#ifdef HAVE_SYS_SYSSGI_H		if (syssgi(SGI_SETTIMETRIM, timetrim) < 0) {			perror("syssgi");			exit(2);		}#endif#ifdef HAVE_SYS_SYSTUNE_H		if (systune(SYSTUNE_SET, "timer", "timetrim", &timetrim) < 0) {			perror("systune");			exit(2);		}#endif	}	return 0;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -