Linux 延時工作隊列的簡單使用

先上代碼,代碼如下:

#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/gpio.h>
#include <linux/fs.h>
#include <asm/uaccess.h>
#include <linux/platform_device.h>
#include <linux/of_gpio.h>
#include <linux/device.h>
#include <linux/ioctl.h>
#include <linux/err.h>
#include <linux/list.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/compat.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/irq.h>
#include <linux/of_irq.h>
#include <linux/interrupt.h>
#include <linux/clk-provider.h>
#include <linux/clk/ti.h>
#include <linux/clk.h>
#include <linux/io.h>
#include <linux/of_address.h>
#include <linux/delay.h>
#include <linux/sched.h>
#include <linux/timer.h>
#include <linux/workqueue.h>


#define WORK_DELAY_VALUE	1
static struct delayed_work delay_work1;

//延時時間到時,開始執行下面的函數
static void delay_work_func(struct work_struct *work)
{
    printk("this is delay_work_func !\n");
    //自己再啓動自己,也可以在其他地方啓動
	schedule_delayed_work(&delay_work1, msecs_to_jiffies(WORK_DELAY_VALUE));	
}


static int __init mod_init(void)
{
    //初始化delay_work1,綁定執行函數
	INIT_DELAYED_WORK(&delay_work1, delay_work_func);
    //調用啓動延時工作隊列
	schedule_delayed_work(&delay_work1, msecs_to_jiffies(WORK_DELAY_VALUE));	
	return 0; 
}
module_init(mod_init);

static void __exit mod_exit(void)
{
	cancel_delayed_work_sync(&delay_work1);
	printk("############### %s  %s !kernel\n", __FILE__, __func__);
}
module_exit(mod_exit);


MODULE_AUTHOR("lqd");
MODULE_LICENSE("GPL");

延時工作隊列裏面用到的延時msecs_to_jiffies時間設置,和之前介紹的 Linux 定時器的簡單使用 裏面的HZ是類似的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章