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