timer_getverrun , timer_gettime 和 timer_settime 子例程
用途
每个进程的计时器。
库
标准 C 库 (libc.a)
语法
#include <time.h>
int timer_getoverrun (timerid)
timer_t timerid;
int timer_gettime (timerid, value)
timer_t timerid;
struct itimerspec *value;
int timer_settime (timerid, flags, value, ovalue)
timer_t timerid;
int flags;
const struct itimerspec *value;
struct itimerspec *ovalue;描述
timer_gettime 子例程存储指定计时器 蒂梅里德到期之前的时间量,并将该计时器的重新装入值存储到 值 参数指向的空间中。 结构的 it_value 成员包含计时器到期前的时间量,或者如果计时器已解除,那么值为零。 此值将作为计时器到期之前的时间间隔返回,即使计时器已使用绝对时间进行武装也是如此。 值 参数的 时间间隔 成员包含由 timer_settime 子例程最后设置的重新装入值。
timer_settime 子例程将时间设置为直到 蒂梅里德 参数指定的计时器下一次到期为止,并且如果 值 参数的 it_value 成员为非零值,那么控制计时器。 如果调用 timer_settime 子例程时指定的计时器被武装起来,那么调用会将时间重置为指定值的下一个到期时间。 如果 值 参数的 it_value 成员为零,那么将解除计时器的状态。
如果在 标志 参数中未设置 TIMER_ABSTIME 标志,那么 timer_settime 子例程的行为就好像下一次到期之前的时间设置为等于 值 参数的 it_value 成员指定的时间间隔一样。 即,计时器在进行调用后将在 it_value 纳秒内到期。 如果在 标志 参数中设置了 TIMER_ABSTIME 标志,那么 timer_settime 子例程的行为就如同将下一次到期之前的时间设置为等于 it_value 成员指定的绝对时间与与 蒂梅里德 参数关联的时钟的当前值之间的差值一样。 即,当时钟达到 it_value 成员指定的值时,计时器将到期。 如果指定的时间已过,那么子例程将成功并发出到期通知。
计时器的重新装入值设置为由 值 参数的 时间间隔 成员指定的值。 使用非零 时间间隔来提供计时器时,将指定周期性 (或重复) 计时器。
在指定计时器的分辨率的两个连续非负整数倍之间的时间值将向上舍入为该分辨率的较大倍数。 量化错误不会导致计时器在经过舍入的时间值之前到期。
如果 奥值 参数不为 NULL ,那么 timer_settime 子例程将存储一个值,该值表示计时器到期之前的先前时间量,如果计时器已被解除,那么该值与先前的计时器重新装入值一起使用。 计时器不会在其预定时间之前到期。
在任何时间点,对于给定计时器,只有一个信号会排队等待进程。 当某个信号仍处于暂挂状态的计时器到期时,不会对任何信号进行排队,并且会发生计时器过速。
关于基于线程 CPU 时间时钟的计时器, timer_gettime 和 timer_settime 子例程只能在 蒂梅里德 引用基于调用线程的线程 CPU 时间时钟的计时器的情况下进行调用。 换言之,线程无法处理由同一进程中的其他线程创建的线程 CPU 时间计时器。
参数
| 项 | 描述 |
|---|---|
| 蒂梅里德 | 指定计时器标识。 |
| value | 指向包含该时间值的 伊季默 spec 结构。 |
| 标志 | 指定已设置的标志。 |
| 奥值 | 指定值的位置,该值表示计时器到期之前的先前时间量,或者如果计时器已解除,那么为零。 |
返回值
如果 timer_getoverrun 子例程成功,那么它将返回计时器到期过速计数。
如果 timer_gettime 或 timer_settime 子例程成功,那么返回 0。
如果这些子程序中的任何一个发生错误,将返回-1并设置errno以指示错误。
错误代码
| 项 | 描述 |
|---|---|
| EINVAL | 蒂梅里德 参数与 timer_create 子例程返回的标识不对应,但 timer_delete 子例程尚未删除该标识。 |
| ENOTSUP | 检查点重新启动进程不支持该功能。 |
| 项 | 描述 |
|---|---|
| EINVAL | 蒂梅里德 参数对应于基于与调用 timer_gettime 或 timer_settime的线程不同的线程的线程 CPU 时间时钟的计时器。 此线程尚未创建该计时器。 |
| 项 | 描述 |
|---|---|
| EINVAL | 值 参数指定了小于 0 或大于或等于 10 亿的纳秒值,并且结构的 it_value 成员未指定 0 秒和纳秒。 |