linux内核--定时器API
/**<linux/timer.h> 定时器结构体
struct timer_list {
........
unsigned long expires; --内核希望定时器执行的jiffies值
void (*function)(unsigned long); --定时器到时时执行的函数
unsigned long data; --传入执行函数的参数
*/
/**<linux/time.h> 该函数将墙钟时间转换为jiffies值
extern unsigned long mktime(const unsigned int year, const unsigned
int mon, const unsigned int day,
const unsigned int hour,
const unsigned int min,
const unsigned int sec)
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/timer.h>
#include <linux/time.h>
#include <linux/moduleparam.h>
#include <linux/stat.h>
#include <linux/sched.h>
static int year;
static int mon;
static int day;
static int hour;
static int min;
static int sec;
static long data;
static int flag = 0;
static int time;
static struct timer_list timer;
module_param(year, int, S_IRUGO);
module_param(mon, int, S_IRUGO);
module_param(day, int, S_IRUGO);
module_param(hour, int, S_IRUGO);
module_param(min, int, S_IRUGO);
module_param(sec, int, S_IRUGO);
module_param(data, long, S_IRUGO);
module_param(time, int, S_IRUGO);
module_param(flag, int, S_IRUGO);
void handler(unsigned long data)
{
int i=0;
for (i=0; i<10; i++)
{
printk(KERN_ALERT "%d ", i);
}
printk(KERN_ALERT "\n");
}
static int __init Example_init(void)
{
unsigned long j = jiffies;
printk(KERN_ALERT "Example_init.\n");
init_timer(&timer); //初始化结构体
if (flag)
timer.expires = mktime(year, mon, day, hour, min, sec);
else
timer.expires = j + time;
timer.function = handler;
timer.data = data;
add_timer(&timer); //向内核添加定时器
return 0;
}
static void __exit Example_exit(void)
{
printk(KERN_ALERT "Example_exit.\n");
del_timer(&timer); //删除定时器
/**以下函数确保在函数返回时没有其他cpu在运行此定时器函数
int del_timer_sync(struct timer_list *timer)
*/
return;
}
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("Flying");
module_init(Example_init);
module_exit(Example_exit);
linux内核--定时器API的更多相关文章
- 芯灵思Sinlinx A64开发板Linux内核定时器编程
开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 开发板详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 Linux 内核定时器是内 ...
- 全志A33开发板Linux内核定时器编程
开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Linux 内核定时器是内核 ...
- 芯灵思SinlinxA33开发板Linux内核定时器编程
开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Linux 内核定时器是内核 ...
- 模仿linux内核定时器代码,用python语言实现定时器
大学无聊的时候看过linux内核的定时器,如今已经想不起来了,也不知道当时有没有看懂,如今想要模仿linux内核的定时器.用python写一个定时器,已经想不起来它的设计原理了.找了一篇blog,li ...
- Linux内核定时器struct timer_list
1.前言 Linux内核中的定时器是一个很常用的功能,某些需要周期性处理的工作都需要用到定时器.在Linux内核中,使用定时器功能比较简单,需要提供定时器的超时时间和超时后需要执行的处理函数. 2.常 ...
- Linux内核——定时器和时间管理
定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理 ...
- Linux内核 - 定时器
#include <linux/timer.h> //头文件 struct timer_list mytimer; //定义变量 static void my_timer(unsigned ...
- linux 内核定时器
无论何时你需要调度一个动作以后发生, 而不阻塞当前进程直到到时, 内核定时器是给你 的工具. 这些定时器用来调度一个函数在将来一个特定的时间执行, 基于时钟嘀哒, 并且 可用作各类任务; 例如, 当硬 ...
- linux 内核定时器的实现
为了使用它们, 尽管你不会需要知道内核定时器如何实现, 这个实现是有趣的, 并且值得 看一下它们的内部. 定时器的实现被设计来符合下列要求和假设: 定时器管理必须尽可能简化. 设计应当随着激活的定时器 ...
随机推荐
- 将GPT转换成MBR
准备一个pe启动盘 1.单击”运行“在弹出来的窗口输入cmd回车 2.在输入“diskpart”回车 3.在输入“list disk”显示硬盘信息,查看那个盘是gpt分区类型 4.输入“select ...
- LeetCode 046 Permutations 全排列
Given a collection of distinct numbers, return all possible permutations.For example,[1,2,3] have th ...
- MySQL存储引擎InnoDB,MyISAM
MySQL存储引擎InnoDB,MyISAM1.区别:(1)InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语 ...
- MySQL复制机制原理
背景介绍 复制,就是对数据的完整拷贝,说到为什么要复制,首先能想到的是怕数据意外丢失,使得用户蒙受损失. 当完成了数据复制之后,会发现它的优势不止这一点,假如一台机器宕机了,可以启用备份在另一台机器的 ...
- HDU 5505——GT and numbers——————【素数】
GT and numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 白话SpringCloud | 第二章:服务注册与发现(Eureka)-上
前言 从本章节开始,正式进入SpringCloud的基础教程.从第一章<什么是SpringCloud>中我们可以知道,一个微服务框架覆盖的东西是很多的,而如何去管理这些服务或者说API接口 ...
- C 碎片七 指针
一.地址和指针 程序在编译过程中,系统会根据变量类型分配一定长度的内存单元.内存区中的每个字节都有一个编号,该内存单元的初始编号就是变量的"地址/指针",该内存单元的长度就是变量的 ...
- 对CSRF的理解及防范
对CSRF的理解: 假定a是一个银行网站, b是一个危险网站. 当用户在访问a, 并且session并未结束的情况下, 去访问b网站, b网站就可以通过隐藏的url或者是表单来伪造用户对a的get或者 ...
- C#中Dictionary泛型集合7种常见的用法
要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) Dictionary的描述1.从一组键(Key)到一组值( ...
- iOS .Crash文件分析处理办法 (利用symbolicatecrash工具处理)
崩溃分析方式:命令行解析Crash文件 通过Mac自带的命令行工具解析Crash文件需要具备三个文件 symbolicatecrash,Xcode自带的崩溃分析工具,使用这个工具可以更精确的定位崩溃所 ...