linux内核:定时器

一、Linux内核定时器

1.1 代码

#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/kernel.h>
#include <linux/inetdevice.h>
#include <linux/string.h>
#include <linux/inet.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#include <net/checksum.h>
#include <net/ip.h>
#include <linux/tcp.h>
#include <net/udp.h>
#include <linux/time.h>
#include <linux/timer.h>


MODULE_LICENSE("GPL");

struct timer_list g_timer;

void timer_handler(unsigned long data)
{
    struct timespec ts;
    ts = current_kernel_time();
    printk(KERN_DEBUG"time_handler time: %ld", ts.tv_sec);

    printk(KERN_DEBUG"data:%ld", data);

    g_timer.expires = jiffies + 5*HZ;
    add_timer(&g_timer);
    //mod_timer(&g_timer, jiffies + 5*HZ);
}



static int init_marker(void)
{
    struct timespec ts;
    ts = current_kernel_time();
    printk(KERN_DEBUG"setup_timer time:%ld", ts.tv_sec);

    setup_timer(&g_timer, timer_handler, 8);
    g_timer.expires = jiffies + 10*HZ;
    add_timer(&g_timer);

    return 0;
}

static void exit_marker(void)
{
    del_timer(&g_timer);
}

module_init(init_marker);
module_exit(exit_marker);
1.2 代码说明

      setup_timer() 初始化定时器,设置定时器回调函数,参数。

      add_timer()添加定时器到系统。 回调函数只调用一次。

      add_timer()修改定时器参数,让定时器继续执行。

      del_timer()删除定时器。

上面函数代码意义:启动10秒后执行回调函数,之后每隔5秒再执行一次回调函数。

1.3 执行结果



参考资料:

      定时器:http://blog.sina.com.cn/s/blog_6abf2c040101a9ky.html

      linux内核中的计时器:http://blog.sina.com.cn/s/blog_69ed493701017b2o.html

      jiffies与HZ:http://blog.chinaunix.net/uid-10221131-id-355087.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值