Linux定时器的应用(创建和使用进程延时)
源代码:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/timer.h>
#include <linux/jiffies.h>
#include <linux/sched.h>
unsigned long timeout;
unsigned remaining;
void process_timeout(unsigned long data)
{
struct task_struct *p = (struct task_struct *)data;
wake_up_process(p);
}
// 驱动接口
int __init chr_init(void)
{
timeout = 2 *HZ; /* 1Hz等于1000,因此为2000ms*/
set_current_state(TASK_INTERRUPTIBLE); /*或者 TASK_UNINTERRUPTIBLE*/
remaining = schedule_timeout(timeout);
printk("schedule Success! \n");
}
void __exit chr_exit(void)
{
/*if(timer_pending(&timer))
{
del_timer(&timer); // 3.释放定时器
}*/
printk("exit Success! \n");
}
module_init(chr_init);
module_exit(chr_exit);
MODULE_LICENSE("GPL");
实验截图:


本文探讨了Linux系统中定时器的使用,通过示例代码展示了如何创建和应用定时器来实现进程的延时操作。实验截图提供了直观的验证过程。
834

被折叠的 条评论
为什么被折叠?



