一个内核定时器模块

/*  内核定时器测试模块  */
#include <linux/kernel.h>        //内核
#include <linux/module.h>        //内核模块
#include <linux/init.h>            //模块初始化和注销
#include <linux/slab.h>            //屋里内存分配管理
#include <linux/list.h>         //内核链表
#include <linux/timer.h>        //内核定时器 

//内核模块声明
MODULE_LICENSE("GPL");
MODULE_AUTHOR("EDISON REN");
MODULE_DESCRIPTION("KERNEL TIMER TEST");
MODULE_ALIAS("KERNEL TIMER TEST"); 

struct timer_list timer;        //内核定时器

void timer_function(int para)
{
    printk("Timer Expired and para is:%d\n",para);
} 

int timer_init(void)
{
    init_timer(&timer);                //初始化内核定时器
    timer.data=10;                    //参数
    timer.expires=jiffies+ (3*HZ);    //延时3秒
    timer.function=timer_function;    //定时器的执行函数
    add_timer(&timer);                //将定时器加入到系统定时器链表中
    printk("Create Timer Success!\n");
    return 0;
}

int timer_exit(void)
{
    del_timer(&timer);                //删除该定时器
    printk("Delete Timer!\n");

    return 0;
}

module_init(timer_init);
module_exit(timer_exit);

Makefile

obj-m := ktimer.o

KDIR := /usr/src/linux-headers-3.13.0-32-generic/

all:
    make -C $(KDIR) M=$(PWD) modules #ARCH=arm CROSS_COMPILE=arm-linux-
clean:
    rm -f *.ko *.o *.mod *.symvers *.order *.mod.c
时间: 2024-09-28 22:00:09

一个内核定时器模块的相关文章

linux 内核定时器详解

原文摘自:http://www.linux-cn.com/html/linux/kernel/20070412/1886.shtml Linux内核2.4版中去掉了老版本内核中的静态定时器机制,而只留下动态定时器.相应地在timer_bh()函数中也不再通过run_old_timers()函数来运行老式的静态定时器.动态定时器与静态定时器这二个概念是相对于Linux内核定时器机制的可扩展功能而言的,动态定时器是指内核的定时器队列是可以动态变化的,然而就定时器本身而言,二者并无本质的区别.考虑到静

Golang中使用heap编写一个简单高效的定时器模块

定时器模块在服务端开发中非常重要,一个高性能的定时器模块能够大幅度提升引擎的运行效率.使用Golang和heap实现一个通用的定时器模块,代码来自:https://github.com/xiaonanln/goTimer 也可以查看文档:http://godoc.org/github.com/xiaonanln/goTimer,下面是完整的代码,并进行适当的注释和分析. 从性能测试结果来看,基于heap的定时器模块在效率上并不会比时间轮(TimeWheel)的实现慢多少,但是逻辑上要简单很多.

分享一个简单易用的软件定时器模块——基于keil+stm32f103zet+hal库(裸机实现)

公众号上看到一个比较好的一个github项目:https://github.com/0x1abin/MultiTimer 今天看了看,简单的,就移植了- 且看文档的说明, ================================= 分享一个简单易用的软件定时器模块——MultiTimer.源码地址: https://github.com/0x1abin/MultiTimer 简介 MultiTimer 是一个软件定时器扩展模块,可无限扩展你所需的定时器任务,取代传统的标志位判断方式, 更

把握linux内核设计(七):内核定时器和定时执行

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 前面章节说到了把工作推后到除现在以外的时间执行的机制是下半部机制,但是当你需要将工作推后到某个确定的时间段之后执行,使用定时器是很好的选择. 上一节内核时间管理中讲到内核在始终中断发生执行定时器,定时器作为软中断在下半部上下文中执行.时钟中断处理程序会执行update_process_times函数,在该函数中运行run_local_timers()函数来标记一个软中断去处理

thttpd源代码解析 定时器模块

thttpd源代码解析 定时器模块 thttpd是很轻量级的httpserver,可运行文件仅50kB.名称中的第一个t表示tiny, turbo, 或throttling 与lighttpd.memcached.redis相比很小巧,仅有不到8k行,而后三者大小分别为:60k,13k,86k 支持HTTP/1.1和CGI:採用IO复用实现,单线程,可移植:实现了基于URL的文件流量限制功能 特别适用于大量静态数据訪问的场景,如图片存储 2004年已经停止维护,有一个关于X-Forwarded-

Linux内核——定时器和时间管理

定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理程序是Linux系统内核管理机制中的中枢. 另外一个关注的焦点是动态定时器--一种用来推迟运行程序的工具. 比方说.假设软驱马达在一定时间内都未活动,那么软盘驱动程序会使用动态定时器关闭软驱马达. 内核能够动态创建或销毁动态定时器. 内核中的时间观念 内核在硬件的帮助下计算和管理时间. 硬件为内核提

模仿linux内核定时器代码,用python语言实现定时器

大学无聊的时候看过linux内核的定时器,现在已经想不起来了,也不知道当时有没有看懂,现在想要模仿linux内核的定时器,用python写一个定时器,已经想不起来它的设计原理了,找了一篇blog,linux 内核定时器 timer_list详解. 看了好一会才有些明白,开始参照着用python写了一个.如果在设计服务器的时候,有大量需要精确到秒和秒以下的事件,自己写一个定时器,维护一个类似与内核timer_vec的数据结构,处理服务的定时事件,还是蛮高效的. 附上python代码,github:

4.内核定时器的使用

下面代码是本人在项目中遇到使用定时器的一个例子,可以编译运行正确的结果 1 #include <linux/timer.h> 2 3 struct timer_list timer; //内核定时器全局变量 4 5 void timer_init() //放在适当的地方,以便被正确地调用 6 { 7 timer.data = 0; 8 timer.expires = jiffies + 1*HZ; 9 timer.function = (int* )timer_handler; 10 add_

Linux系统启动流程、内核及模块管理

Linux系统启动流程.内核及模块管理 Linux系统的组成部分组成:内核+根文件系统(kernel+rootfs)内核(kernel): 进程管理(创建.调度.销毁等).内存管理.网络管理(网络协议栈).驱动程序.文件系统.安全功能IPC:Inter Process Communication机制本地进程间通信机制:消息队列.semerphor.shm(共享内存)跨主机进程间通信机制:socket等运行中的系统环境可分为两层:内核空间.用户空间内核空间(模式):内核代码(特权级操作-->系统调