/**<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的更多相关文章

  1. 芯灵思Sinlinx A64开发板Linux内核定时器编程

    开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 开发板详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 Linux 内核定时器是内 ...

  2. 全志A33开发板Linux内核定时器编程

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Linux 内核定时器是内核 ...

  3. 芯灵思SinlinxA33开发板Linux内核定时器编程

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 Linux 内核定时器是内核 ...

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

    大学无聊的时候看过linux内核的定时器,如今已经想不起来了,也不知道当时有没有看懂,如今想要模仿linux内核的定时器.用python写一个定时器,已经想不起来它的设计原理了.找了一篇blog,li ...

  5. Linux内核定时器struct timer_list

    1.前言 Linux内核中的定时器是一个很常用的功能,某些需要周期性处理的工作都需要用到定时器.在Linux内核中,使用定时器功能比较简单,需要提供定时器的超时时间和超时后需要执行的处理函数. 2.常 ...

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

    定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理 ...

  7. Linux内核 - 定时器

    #include <linux/timer.h> //头文件 struct timer_list mytimer; //定义变量 static void my_timer(unsigned ...

  8. linux 内核定时器

    无论何时你需要调度一个动作以后发生, 而不阻塞当前进程直到到时, 内核定时器是给你 的工具. 这些定时器用来调度一个函数在将来一个特定的时间执行, 基于时钟嘀哒, 并且 可用作各类任务; 例如, 当硬 ...

  9. linux 内核定时器的实现

    为了使用它们, 尽管你不会需要知道内核定时器如何实现, 这个实现是有趣的, 并且值得 看一下它们的内部. 定时器的实现被设计来符合下列要求和假设: 定时器管理必须尽可能简化. 设计应当随着激活的定时器 ...

随机推荐

  1. Codeforces Round #129 (Div. 2) C

    Description The Little Elephant very much loves sums on intervals. This time he has a pair of intege ...

  2. 导入别的类中的bean

    @Configuration class CommonContext { @Bean public MyBolt myBolt() { return new MyBolt(); } } ... @Co ...

  3. Hystrix使用小结

    通过服务熔断实现服务降级 @HystrixCommand(fallbackMethod = "reliable", commandProperties = { @HystrixPr ...

  4. 你一直在用的 Spring Boot Starters 究竟是怎么回事

    Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置.不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置 ...

  5. asp.net 子域跨域 带cookie

    先来一个老外的解决方案: http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api ...

  6. OpenStack Ocata Telemetry 数据收集服务

    1 安装配置计算服务 在所有计算节点上: 1.1 安装配置组件 安装包: # yum install -y openstack-ceilometer-compute 编辑配置文件/etc/ceilom ...

  7. 锁丶threading.local丶线程池丶生产者消费者模型

    一丶锁 线程安全: 线程安全能够保证多个线程同时执行时程序依旧运行正确, 而且要保证对于共享的数据,可以由多个线程存取,但是同一时刻只能有一个线程进行存取. import threading v = ...

  8. 巧用前端神器,fakerjs生成json文件

    安装 cnpm install faker json-serve --save-dev 在目录下创建一个模板文件 示例 makeJson.js var faker = require('faker') ...

  9. 构建第一个Spring Boot2.0应用之RequestMapping(四)

    在学习controller的时候,测试了在RequestMapping中,value参数中配置集合,实现不同的URL访问同一方法. 本章继续学习和测试RequestMapping的其他特性. 一.Pa ...

  10. ArcGIS中Features与JSON的互相转化

    实际操作过程非常简单,这里就简单记录下转换工具的位置: