Linux 定時器程式設計小解

2021-08-20 21:51:08 字數 1136 閱讀 5006

基礎知識:全域性變數 jiffies 記錄時鐘中斷的次數,也就是system clk的節拍數

全域性變數 hz      記錄1秒鐘系統來幾個節拍,系統節拍頻率

很容易得到公式 系統執行的秒數 second = jiffies / hz

static struct timer_list my_timer;//定義乙個軟體定時器

struct timer_list ;  

void my_timer_function(...);//定義自己的軟體定時器函式

init_timer(&my_timer);

my_timer.function=my_timer_function;

add_timer(my_timer);

mod_timer(my_timer , new_expires);//修改為新的到點時間

/*************使用定時器的步驟*********************/

struct timer_list  my_timer;//定義乙個定時器,可以把它放在你的裝置結構中

init_timer(&my_timer);      //初始化乙個定時器

my_timer.expire=jiffies+x*hz; //定時器【x】秒後執行服務程式

my_timer.function=my_timer_function;//定時器服務函式

add_timer(&my_timer);        //新增定時器

void my_timer_function(unsigned long)//寫定時器服務函式

del_timer(&my_timer);        //當定時器不再需要時刪除定時器

del_timer_sync(&my_timer);   //基本和del_timer一樣,比較適合在多核處理器使用,

//一般推薦使用del_timer_sync

其他定時方法:

sleep() nanosleep() msleep() usleep()

static void msleep(int ms)

sigalrm + alarm()//精度達到1秒

使用rtc機制 

//需要由rtc裝置

使用select()

//能精確到 1us

linux 定時器程式設計

在編寫應用程式的時候,經常需要用到定時器。根據使用情況,定時器的基本行為分為2種 single shot timer和repeating timer single shot timer 從註冊到終止只執行一次。repeating timer每次終止後自動執行。linux 在定時程式設計有以下幾種介面...

linux程式設計之定時器

建立乙個定時器 int timer create clockid t clock id,struct sigevent evp,timer t timerid 程序可以通過呼叫timer create 建立特定的定時器,定時器是每個程序自己的,不是在fork時繼承的。clock id說明定時器是基於...

LINUX驅動程式設計 核心定時器

timer list結構體 struct timer list 1,定義乙個timer list定時器 struct timer list my timer 2,初始化定時器 1 void init timer struct timer list timer 上述init timer 函式初始化ti...