Linux系統下核心定時器的用法

2021-04-21 20:18:17 字數 1912 閱讀 3298

總的來說,timer的用法還是很簡單的。主要需要定義乙個timer_list變數timer、先初始化timer

init_timer(&timer);

timer.function = fun;

timer.expires = jiffies + timer_delay;

add_timer(&timer);

在定時器時間到的時候,會執行fun,如果繼續定時,可以通過

在fun中執行

mod_timer(&timer, jiffies + timer_delay);

在不需要的時候通過呼叫

del_timer(&timer);

刪除定時器。

簡單吧。這樣乙個簡單的定時器就完成了。

呵呵。附程式:

#include /module.h>

#include /types.h>

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define second_major 0

static int second_major = second_major;

struct second_dev

;struct second_dev *second_devp;

static void second_timer_handle(unsigned long arg)

int second_open(struct inode *inode, struct file *filp)

int second_release(struct inode *inode, struct file *filp)

static ssize_t second_read(struct file *filp, char __user *buf, size_t count,

loff_t *ppos)

else

}static const struct file_operations second_fops =

;static void second_setup_cdev(struct second_dev *dev, int index)

}int second_init(void)

else

if (ret < 0)

second_devp = kmalloc(sizeof(struct second_dev), gfp_kernel);

if (!second_devp)

memset(second_devp, 0, sizeof(struct second_dev));

second_setup_cdev(second_devp, 0);

return 0;

fail_malloc:

unregister_chrdev_region(devno, 1);

}void second_exit(void)

module_author("song baohua");

module_license("dual bsd/gpl");

module_param(second_major, int, s_irugo);

module_init(second_init);

module_exit(second_exit);

附上使用者端的測試程式:

#include

#include

#include

int main(void)

for(i = 0; i < 20; i++)

close(fd);} 

linux 核心 核心定時器

一.時鐘中斷概念 1.時鐘中斷由系統的定時硬體以週期性的時間間隔產生,這個間隔 即頻率 由核心根據hz來確定,hz是乙個與體系結構無關的常數,可配置 50 1200 在x86平台上預設值是1000 2.每當時鐘中斷發生的時候,全域性變數jiffies unsigned long 就加1,所以jiff...

linux核心定時器

度量時間差 時鐘中斷由系統的定時硬體以週期性的時間間隔產生,這個間隔 頻率 由核心根據hz來確定,hz是乙個與體系結構無關的常數,可配置 50 1200 在x86平台,預設值為1000.每秒鐘產生1000次時鐘中斷 每當時鐘中斷發生時,全域性變數jiffies就加1,因此其記錄了自linux啟動後時...

Linux 核心定時器

include include include include struct timer list my timer void func unsigned long data printk time out n data ld,pid ld n data,current pid mod timer ...