tstop 内核服务

用途

取消暂挂计时器请求。

语法

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/timer.h>
int tstop ( t)
struct trb *t;

参数

描述
t 指定要取消的暂挂计时器请求。

描述

tstop内核服务会取消一个待处理的定时器请求。 在使用 "tfree内核服务释放 "定时器请求块之前,必须调用 "内核服务。

在多处理器环境中,当调用tstop内核服务时,与定时器请求块相关的定时器函数可能在另一个处理器上处于活动状态。 在此情况下,无法取消该计时器请求。 因此,多处理器安全驱动程序必须检查返回码,并在取消请求失败时执行相应操作。

在单处理器环境中,调用始终成功。 在多处理器环境中,这种情况是不正确的,如果定时器由其他处理器处理,调用就会失败。 因此,函数现在有了返回值,如果成功,返回值设为 0,否则设为 -1 。 Funnelled 设备驱动程序不需要检查返回值,因为它们在逻辑单处理器环境中运行。 多处理器安全,多处理器高效的设备驱动程序需要在一个回路中检查返回值。 此外,如果驱动程序使用锁定,那么它必须在此循环中释放并重新获取其锁定。 在释放和重新获取锁之间应使用延迟,如下所示:
while (tstop(&trp)) {
       release_any_lock;
       delay_some_time;
       reacquire_the_lock;
} /* null while loop if locks not used */

执行环境

tstop内核服务可从进程中断环境中调用。

返回值

描述
重大安全事件数量 指示已成功取消该请求。
-1 表示无法取消请求。