linux 工作队列之schedule_delayed_work

       一、 schedule_delay_work 示例:

        struct  wdt_t {

                spinlock_t                               lock;

                void __iomem                      *base;

                struct platform_device        *pdev;

                struct delayed_work             wdt_delayed_work;

                struct workqueue_struct      wdt_workqueue;

                unsigned long                       timeout;

        };

       

        static void wdt_mond(struct work_struct *work)

        {

                struct wdt_t *wdt  = container_of(work, struct wdt_t, wdt_delayed_work.work);

                ........

                schedule_delayed_work(&wdt->wdt_delayed_work, msecs_to_jifies(wdt->timeout*HZ));

        }

 

        static int __devinit   wdt_probe(struct platform_device *pdev)

        {

                struct wdt_t *wdt  = container_of(pdev, struct wdt_t, pdev);

                 ......

                INIT_DELAYED_WORK(&wdt->wdt_delayed_work, wdt_mond);

                schedule_delayed_work(&wdt->wdt_delayed_work, 0);

        }

 

        二、函数原形与使用顺序

         1、定义一个新的数据结构delayed_work用于处理延迟执行:

               struct delayed_work {

                        struct work_struct work;

                        struct timer_list timer;

               };

        2、在工作队列中被调用的函数原形如下:

               typedef void (*work_func_t)(struct work_struct *work);

        3、初始化数据结构

               INIT_DELAYED_WORK(struct delayed_work *work, work_func_t func)

        4、提交任务到工作队列

              int schedule_delayed_work(struct delayed_work *work, unsigned long delay);

        5、删除提交到工作队列的任务

              int cancel_delayed_work(strcut delayed_work *work);

        6、刷新默认工作队列(常跟cancle_delayed_work一起使用)

              void flush_schedlue_work(void);

 

       

 

 

       

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值