tstart 内核服务
用途
提交计时器请求。
语法
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/timer.h> struct trb *t;
参数
| 项 | 描述 |
|---|---|
| t | 指向一个计时器请求结构。 |
描述
开始 内核服务提交一个计时器请求,并将 特 参数指定的计时器请求块作为输入。 开始 内核服务的调用程序必须首先调用 塔洛克 内核服务以分配 计时器请求结构。 然后,调用者必须先初始化结构的字段,然后才能调用 开始 内核服务。
一旦提交了请求,内核就会调用t->func指定的时间量时的计时器功能。t->timeout.it值已过。 该t->func在中断级别调用计时器函数。 因此,此例程的代码必须遵循中断处理程序的约定。
开始 内核服务会检查t->flags字段,以确定正在提交的计时器请求是表示绝对请求还是递增请求。 绝对请求是指在 it_value 结构中所表示的时间发生超时的请求。 递增请求是指在当前表示的时间发生超时的请求,加上 it_value 结构中的时间。
调用者应将绝对计时器和增量计时器的时间信息放在 itimerstruc_t t.it 值子结构中。 T_ABSOLUTE 绝对请求标志在 /usr/include/sys/timer.h 文件中定义,应该在t->flag字段 (如果需要绝对计时器请求)。
如果设置了 _MOVE_OK 标志,那么当拥有的处理器被折叠时,关联的计时器将移动到另一个处理器。
如果设置了 T_LATE_OK 标志,那么当拥有的处理器进入休眠 (折叠) 方式时,关联的计时器将进入休眠状态。 如果调度的到期时间已过,那么当拥有的处理器被唤醒 (已展开) 时,将调用计时器到期处理程序。 因此,就到期时间而言,计算了睡眠时间。 如果设置了此标志,那么无法保证计时器何时可能到期。
对系统时间的修改将添加到递增计时器请求中,但不会添加到绝对计时器请求中。 请考虑已提交绝对计时器请求的用户在 12/25/88 的中午。 如果特权用户随后通过向其添加 4 个小时来修改系统时间,那么用户提交的计时器请求仍会在 12/25/88 的中午发生。
相反,假设现在是中午 12 点,用户从现在开始提交 6 小时的递增计时器请求 (将在 6 p.m.)。 如果在计时器到期之前,特权用户通过向其添加四个小时来修改系统时间,那么用户的计时器请求将在 2200 (10 p.m) 到期。
执行环境
返回值
开始 服务没有任何返回值。