- 論壇徽章:
- 0
|
回復(fù) 4# blake326
內(nèi)核在用戶態(tài)提供了POSIX TIMER API:
基于 2.6 版本內(nèi)核定時器的實現(xiàn) (Posix 實時定時器 )
Linux 自 2.6 開始,已經(jīng)開始支持 POSIX timer [ 2 ]所定義的定時器,它主要由下面的接口構(gòu)成 :
清單 8. POSIX timer 接口
#include <signal.h>
#include <time.h>
int timer_create(clockid_t clockid, struct sigevent *evp,
timer_t *timerid);
int timer_settime(timer_t timerid, int flags,
const struct itimerspec *new_value,
struct itimerspec * old_value);
int timer_gettime(timer_t timerid, struct itimerspec *curr_value);
int timer_getoverrun(timer_t timerid);
int timer_delete(timer_t timerid);
這套接口是為了讓操作系統(tǒng)對實時有更好的支持,在鏈接時需要指定 -lrt 。
timer_create(2): 創(chuàng)建了一個定時器。
timer_settime(2): 啟動或者停止一個定時器。
timer_gettime(2): 返回到下一次到期的剩余時間值和定時器定義的時間間隔。出現(xiàn)該接口的原因是,如果用戶定義了一個 1ms 的定時器,可能當時系統(tǒng)負荷很重,導(dǎo)致該定時器實際山 10ms 后才超時,這種情況下,overrun=9ms 。
timer_getoverrun(2): 返回上次定時器到期時超限值。
timer_delete(2): 停止并刪除一個定時器
詳見https://www.ibm.com/developerworks/cn/linux/l-cn-timers/
|
|