跳轉到內容

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

華夏公益教科書