可以举例一个简单的demo嘛
时间: 2023-08-01 17:13:22 浏览: 76
一个单例Demo
好的,下面是一个简单的demo:
```c
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/workqueue.h>
MODULE_LICENSE("GPL");
// 定义延迟工作结构体
static struct delayed_work my_work;
// 延迟工作函数
static void work_handler(struct work_struct *work)
{
printk(KERN_INFO "Delayed work executed!\n");
}
// 模块加载函数
static int __init my_module_init(void)
{
printk(KERN_INFO "Module loaded!\n");
// 初始化延迟工作结构体
INIT_DELAYED_WORK(&my_work, work_handler);
// 延迟5秒执行工作
schedule_delayed_work(&my_work, msecs_to_jiffies(5000));
return 0;
}
// 模块卸载函数
static void __exit my_module_exit(void)
{
// 取消延迟工作
cancel_delayed_work(&my_work);
printk(KERN_INFO "Module unloaded!\n");
}
module_init(my_module_init);
module_exit(my_module_exit);
```
在这个demo中,我们定义了一个名为my_work的延迟工作结构体,并且定义了一个工作函数work_handler。在模块加载函数中,我们使用INIT_DELAYED_WORK函数初始化my_work,并且使用schedule_delayed_work函数将my_work延迟5秒后执行。在模块卸载函数中,我们使用cancel_delayed_work函数取消my_work的执行。当模块加载时,内核会输出"Delayed work executed!",表示延迟工作已经被执行。
阅读全文