Aros/开发者/文档/设备/计时器
中断和陷阱通过直接函数调用传递。不同的中断级别调用不同的中断向量(存储在 IntVects[i] 中)。陷阱通过调用当前任务的 tc_TrapCode 向量来引发(通常这会导致 Alert() - exec 的内核崩溃等效项)。
如果希望将处理延迟到更低级别,硬件中断中的软件中断很有用。它们还可以在设备 I/O 的某些特殊情况下使用。timer.device 和 audio.device 分别允许软件中断驱动的计时和音频输出。
函数 BeginIO() 将执行 timer.device 命令。它通常从 DoIO() 和 SendIO() 内部调用。输入 timereq - 要处理的请求。
void AddTime(
struct timeval * dest, struct timeval * src );
函数
将两个 timeval 加在一起。结果将是 dest + src --> dest 的总和。
A0 和 A1 的值不会改变。
输入
dest - 目标 timeval。src - 源 timeval。
结果
dest 将包含 (src + dest)。
备注
此函数可以从中断中调用。
另请参阅
SubTime() CmpTime()
void BeginIO(
struct timerequest * timereq );
函数
BeginIO() will perform a timer.device command. It is normally called from within DoIO() and SendIO().
输入
timereq - The request to process.
结果
将处理请求的消息。
备注
此函数可以安全地从中断中调用。
另请参阅
exec.library/AbortIO() exec.library/SendIO() exec.library/DoIO()
LONG CmpTime(
struct timeval * dest, struct timeval * src );
函数
CmpTime() 将比较两个 timeval 的大小,并返回哪个更大。
输入
dest - 目标 timeval src - 源 timeval
结果
-1 如果 dest 比 src 有更多时间(即 dest > src)
0 if dest and src are the same (i.e. dest == src)
+1 如果 dest 比 src 有更少时间(即 dest < src)
备注
此函数可以安全地从中断中调用。
错误
寄存器 A0 和 A1 可能不会被保留。
另请参阅
AddTime() SubTime()
void GetSysTime(
struct timeval * dest );
函数
GetSysTime() 将使用当前系统时间填充提供的 timeval。
输入
dest - 指向要存储时间的 timeval 的指针。
结果
timeval "dest" 将被当前系统时间填充。
备注
此函数可以安全地从中断中调用。
另请参阅
`TR_GETSYSTIME`_ `TR_SETSYSTIME`_
void GetUpTime(
struct timeval * dest );
函数
GetUpTime() 将使用当前运行时间填充提供的 timeval。
输入
dest - 指向要存储时间的 timeval 的指针。
结果
timeval "dest" 将被当前运行时间填充。此计时器无法通过软件更改,因此可以被认为是单调时钟。
备注
此函数可以安全地从中断中调用。
另请参阅
`TR_GETSYSTIME`_ `TR_SETSYSTIME`_ `GetSysTime`_
ULONG ReadEClock(
struct EClockVal * dest );
函数
ReadEClock() 读取 E-Clock 的当前值并将其存储在作为参数传递的目的地 EClockVal 结构中。它还返回系统 E-Clock 的频率。
此调用应该非常快。
输入
dest - 目标 EClockVal
结果
E-Clock 频率(次/秒)
备注
此函数可以安全地从中断中调用。
void SubTime(
struct timeval * dest, struct timeval * src );
函数
SubTime() 将从目标 timeval 中减去 src timeval,即“dest - src --> dest”。
输入
dest - 目标 timeval src - 源 timeval
结果
timeval dest 将包含总和 (dest - src)。
备注
此函数可以安全地从中断中调用。
错误
可能不会保留寄存器。
另请参阅
AddTime() CmpTime()