超时内核服务

注意: 由于此服务不是多处理器安全服务,因此不得使用此服务。 必须改为使用基本内核计时器和看守程序服务。

用途

调度在指定时间间隔后调用的函数。

语法

#include <sys/types.h>
#include <sys/errno.h>
void timeout ( func,  arg,  ticks)
void (*func)();
caddr_t *arg;
int ticks;

参数

描述
函数 指示要调用的函数。
arg 指示要提供给由 丰克 参数指定的函数的参数。
信号 指定在调用由 丰克 参数指定的函数之前必须发生的计时器刻度标记数。 每秒可能发生许多计时器刻度标记。 可以使用 /usr/include/sys/m_param.h 文件中的 HZ 标签来确定每秒的刻度标记数。

描述

超时 服务未包含在内核中。 但是,它是 libsys.a 库中提供的兼容性服务。 要使用 timeout 服务,内核扩展必须与 libsys.a 库绑定。 超时 服务 (例如,相关联的内核服务 取消超时timeoutcf) 只能在内核扩展的固定部分或设备驱动程序的下半部分中进行绑定和使用,因为这些服务使用中断禁用进行序列化。

超时 服务将 丰克 参数所指向的函数调度为在 蒂克斯 参数指定的计时器刻度标记数之后使用 阿尔格 参数进行调用。 使用 timeoutcf 例程来分配足够的调出元素,以满足您期望的最大同时活动超时数。

注: 必须先调用 timeoutcf 例程,然后才能调用 超时 服务。

在未分配足够的调出表条目的情况下调用 超时 服务可能会由于缺少固定的调出表元素而导致内核恐慌。 计时器刻度标记的值取决于硬件的功能。 您可以使用 重新计时器 子例程来确定最小粒度。

不允许多个具有相同 丰克阿尔格 参数的暂挂 超时 请求。

func 参数

必须将 丰克 参数指定的函数声明为如下所示:

void func (arg)
void *arg;

执行环境

可从 流程中断 环境中调用 超时 例程。

丰克 参数指定的函数在中断环境中进行调用。 因此,它必须遵循中断处理程序的约定。

返回值

超时 服务没有任何返回值。