当前位置:百问十五>百科知识>adjtimex(adjtimex)_飞外

adjtimex(adjtimex)_飞外

2024-06-06 03:46:16 编辑:join 浏览量:596

adjtimex(adjtimex)_飞外

adjtimex是一个计算机算法。Linux 使用 David L. Mill 的时钟调整算法系统调用 adjtimex() 读取和可选地设置该算法的调整参数。

头文件#include

函数原型int adjtimex(struct timex *buf);

说明Linux 以一个指向结构体 timex 指针为参数,更新内核参数相应的值,并且通过相同的结构体来返回内核当前的值。这个结构体被声明为如下:

struct timex {

int modes; /* 模式选择符 */

long offset; /* 时间偏移 (微秒) */

long freq; /* 频率偏移 (由 ppm 缩放) */

long maxerror; /* 最大错误 (微秒) */

long esterror; /* 估计的错误 (微秒) */

int status; /* 时钟 命令/状态 */

long constant; /* pll time constant */

long precision; /* clock precision (usec) (read-only) */

long tolerance; /* clock frequency tolerance (ppm) (read-only) */

struct timeval time; /* current time (read-only) */

long tick; /* 时钟滴答之间的微秒 */

};

modes 域用来指定哪个参数用于设置,如果需要的话。它可能包含下面值的位-或的组合:

#define ADJ_OFFSET 0x0001 /* 时间利偏移 */

#define ADJ_FREQUENCY 0x0002 /* 频率偏移 */

#define ADJ_MAXERROR 0x0004 /* 最大错误值 */

#define ADJ_ESTERROR 0x0008 /* 估计的错误值 */

#define ADJ_STATUS 0x0010 /* 时钟状态 */

#define ADJ_TIMECONST 0x0020 /* pll time constant */

#define ADJ_TICK 0x4000 /* 时钟滴答值 */

#define ADJ_OFFSET_SINGLESHOT 0x8001 /* old-fashioned adjtime() */

一般用户严格要求把 mode 的值设置为零,只有超级用户可以设置某些参数。

注意:adjtimex() 是 Linux 定义并不应该出现在可移植的程序里。参看 adjtime(3) 来获得更好移植性,但却缺少灵活性的调整系统时钟的方法。

返回值成功时,adjtimex() 返回时钟状态:

#define TIME_OK 0 /* 时钟已同步 */

#define TIME_INS 1 /* 插入调整值 */

#define TIME_DEL 2 /* 删除调整值 */

#define TIME_OOP 3 /* 调整正进行 */

#define TIME_WAIT 4 (5月份有什么节日?5月份的节日包括:劳动节、青年节、日本儿童节、母亲节、德国父亲节等重大的节日。)/* 调整已经发生 */

#define TIME_BAD 5 /* 时钟没有同步 */

失败时,adjtimex() 返回 -1 并把 errno 设置为合适的值。

错误EFAULT

buf 没有指向一个可写的内存。

EINVAL

试图设置,但是 buf.offset 超过从 -131071 到 +131071 范围,或者 buf.status 不是上面列出的值,或者 buf.tick 值超出从 900000/HZ 到 1100000/HZ,此处的 HZ 是系统时钟中断频率。

EPERM

buf.mode 不是零但调用者没有足够的权限。在 Linux 下至少需要要 CAP_SYS_TIME 权限。

adjtimex相关的文章巴比伦天文学(巴比伦天文学)

标签:adjtimex,飞外

版权声明:文章由 百问十五 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.baiwen15.com/article/135451.html
热门文章