定时器使用 笔记

INIT_DELAYED_WORK 定时器中断函数的调用

定义全局变量:

 #ifdef TPD_ESD_PROTECT
#define TPD_ESD_CHECK_CIRCLE       2000
static struct delayed_work gsl_esd_check_work;
static struct workqueue_struct *gsl_esd_check_workqueue = NULL;
 #endif

初始化:

#ifdef TPD_ESD_PROTECT
INIT_DELAYED_WORK(&gsl_esd_check_work, gsl_esd_check_func);
    gsl_esd_check_workqueue = create_workqueue("gsl_esd_check");
#endif

开启定时:

 queue_delayed_work(gsl_esd_check_workqueue, &gsl_esd_check_work, TPD_ESD_CHECK_CIRCLE);

关闭定时:

 cancel_delayed_work_sync(&gsl_esd_check_work);

中断函数:

static void gsl_esd_check_func(struct work *work)
{
*************************************************
}

Linux内核定时器和工作队列的总结和实例

https://www.jianshu.com/p/a3ad64ddbd89
写的非常详细完整

发布了66 篇原创文章 · 获赞 112 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/qq_44710568/article/details/105572948