Linux内核中工作队列的使用work_struct,delayed_work
初始化工作队列调度工作队列取消工作队列#include#include#include#include#includestatic struct work_struct test_work;static struct delayed_work test_delayed_work;static void test_func(struct work_st
·
初始化工作队列
调度工作队列
取消工作队列
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/kthread.h>
#include <linux/err.h>
#include <linux/delay.h>
static struct work_struct test_work;
static struct delayed_work test_delayed_work;
static void test_func(struct work_struct *work)
{
printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);
}
static void test_delayed_func(struct work_struct *work)
{
printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);
}
static int __init test_init(void)
{
int ret;
printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);
INIT_WORK(&test_work, test_func);
ret = schedule_work(&test_work);
INIT_DELAYED_WORK(&test_delayed_work, test_delayed_func);
ret = schedule_delayed_work(&test_delayed_work, 5 * HZ);
printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);
return 0;
}
static void __exit test_exit(void)
{
printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);
cancel_work_sync(&test_work);
printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);
cancel_delayed_work_sync(&test_delayed_work);
printk("%s, %d, %ld\n", __func__, __LINE__, jiffies);
}
module_init(test_init);
module_exit(test_exit);
MODULE_AUTHOR("tony");
MODULE_DESCRIPTION("test");
MODULE_LICENSE("GPL");
MODULE_ALIAS("test");
更多推荐
已为社区贡献5条内容
所有评论(0)