跳转到内容

Aros/开发者/文档/设备/计时器

来自维基教科书,开放世界中的开放书籍
Aros 维基教科书的导航栏
Aros 用户
Aros 用户文档
Aros 用户常见问题解答
Aros 用户应用程序
Aros 用户 DOS Shell
Aros/用户/AmigaLegacy
Aros 开发文档
Aros 开发者文档
从 AmigaOS/SDL 移植软件
面向 Zune 初学者
Zune .MUI 类
面向 SDL 初学者
Aros 开发者构建系统
特定平台
Aros x86 完整系统 HCL
Aros x86 音频/视频支持
Aros x86 网络支持
Aros 英特尔 AMD x86 安装
Aros 存储支持 IDE SATA 等
Aros Poseidon USB 支持
x86-64 支持
摩托罗拉 68k Amiga 支持
Linux 和 FreeBSD 支持
Windows Mingw 和 MacOSX 支持
Android 支持
Arm 覆盆子派支持
PPC Power Architecture
其他
Aros 公共许可证

中断和陷阱通过直接函数调用传递。不同的中断级别调用不同的中断向量(存储在 IntVects[i] 中)。陷阱通过调用当前任务的 tc_TrapCode 向量来引发(通常这会导致 Alert() - exec 的内核崩溃等效项)。

如果希望将处理延迟到更低级别,硬件中断中的软件中断很有用。它们还可以在设备 I/O 的某些特殊情况下使用。timer.device 和 audio.device 分别允许软件中断驱动的计时和音频输出。

函数 BeginIO() 将执行 timer.device 命令。它通常从 DoIO() 和 SendIO() 内部调用。输入 timereq - 要处理的请求。


AddTime()

[编辑 | 编辑源代码]

void AddTime(

        struct timeval * dest,
        struct timeval * src );

函数

将两个 timeval 加在一起。结果将是 dest + src --> dest 的总和。

A0 和 A1 的值不会改变。

输入

dest - 目标 timeval。src - 源 timeval。

结果

dest 将包含 (src + dest)。

备注

此函数可以从中断中调用。

另请参阅

SubTime() CmpTime()


BeginIO()

[编辑 | 编辑源代码]

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()


CmpTime()

[编辑 | 编辑源代码]

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()


GetSysTime()

[编辑 | 编辑源代码]

void GetSysTime(

        struct timeval * dest );

函数

GetSysTime() 将使用当前系统时间填充提供的 timeval。

输入

dest - 指向要存储时间的 timeval 的指针。

结果

timeval "dest" 将被当前系统时间填充。

备注

此函数可以安全地从中断中调用。

另请参阅

`TR_GETSYSTIME`_ `TR_SETSYSTIME`_


GetUpTime()

[编辑 | 编辑源代码]

void GetUpTime(

        struct timeval * dest );

函数

GetUpTime() 将使用当前运行时间填充提供的 timeval。

输入

dest - 指向要存储时间的 timeval 的指针。

结果

timeval "dest" 将被当前运行时间填充。此计时器无法通过软件更改,因此可以被认为是单调时钟。

备注

此函数可以安全地从中断中调用。

另请参阅

`TR_GETSYSTIME`_ `TR_SETSYSTIME`_ `GetSysTime`_


ReadEClock()

[编辑 | 编辑源代码]

ULONG ReadEClock(

        struct EClockVal * dest );

函数

ReadEClock() 读取 E-Clock 的当前值并将其存储在作为参数传递的目的地 EClockVal 结构中。它还返回系统 E-Clock 的频率。

此调用应该非常快。

输入

dest - 目标 EClockVal

结果

E-Clock 频率(次/秒)

备注

此函数可以安全地从中断中调用。


SubTime()

[编辑 | 编辑源代码]

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()

华夏公益教科书