tasklet在很多地方类似于内核定时器,如它们始终在中断期间运行,始终会在调度它们的同一CPU上运行,在“软件中断”上下文以原子模式执行。和内核定时器不同的是,不能要求tasklet在某个给定时间执行,调度一个tasklet,内核会选择某个其后的时间来执行给定的函数。

特性:

一个tasklet可在稍后被禁止或者重新启用;只有启用的次数和禁用的次数相同时,tasklet才会被执行。

tasklet可以注册自身。

tasklet可被调度以在通常的优先级或者高优先级执行;高优先级的tasklet总会首先执行。

如果系统负荷不重,tasklet会立即执行,始终不会晚于下一个定时器滴答。

一个tasklet可以和其它tasklet并发,但对自身来讲是严格串行处理的,即同一tasklet不会在多个处理器上同时运行。

基本API:

void tasklet_init(struct tasklet_struct *t, void (*func)(unsigned long), unsigned long data);

void tasklet_disable(struct tasklet_struct *t); //禁用指定的tasklet

void tasklet_disable_nosync(struct tasklet_struct *t);//禁用指定的tasklet,但不会等待任何正在运行的tasklet退出

void tasklet_enable(struct tasklet_struct *t);//启用一个先前被禁用的tasklet

void tasklet_schedule(struct tasklet_struct *t);//调度执行指定的tasklet

void tasklet_hi_schedule(struct tasklet_struct *t);//以高优先级调度执行指定的tasklet

void tasklet_kill(struct tasklet_struct *t);//指定的tasklet不会被再次调度,在设备关闭或模块移除时调用

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/time.h>
#include <linux/interrupt.h>static struct timeval lastTime;
static struct tasklet_struct myTasklet;
static char data[] = "hello";
int cnt = 0;//不能在tasklet_callback中调用tasklet_disable、tasklet_enable
void tasklet_callback(long unsigned int data)
{struct timeval curTime;char *p = (char *)data;printk("%s:%s\n", __func__, p);do_gettimeofday(&curTime);printk("interval: %ld s, %ld us\n",curTime.tv_sec - lastTime.tv_sec, curTime.tv_usec - lastTime.tv_usec);lastTime = curTime;if (cnt <= 5){tasklet_schedule(&myTasklet);}cnt++;
}static int __init hello_init(void)
{printk("hello_init. \n");do_gettimeofday(&lastTime);tasklet_init(&myTasklet, tasklet_callback, (long unsigned int)data);tasklet_disable(&myTasklet);tasklet_enable(&myTasklet);tasklet_schedule(&myTasklet);return 0;
}static void __exit hello_exit(void)
{printk("hello_exit. \n");tasklet_kill(&myTasklet);
}MODULE_LICENSE("GPL");
module_init(hello_init);
module_exit(hello_exit);

linux驱动34:tasklet小任务机制相关推荐

  1. Linux驱动——mmc card热插拔检测机制(十)

    Linux驱动--mmc card热插拔检测机制(十) 备注:   1. Kernel版本:5.4   2. 使用工具:Source Insight 4.0   3. 参考博客: [sd card] ...

  2. linux驱动开发音频设备驱动,linux驱动开发—基于Device tree机制的驱动编写

    摘要:媒介 Device Tree是一种用去描绘硬件的数据布局,类似板级描绘说话,发源于OpenFirmware(OF).正在现在遍及应用的kernel 2.6.x版本中,对分歧仄台.分歧硬件,往] ...

  3. macbook air linux驱动安装教程,小编教你macbook air如何安装win7

    不管是游戏玩家还是工作人员,都喜欢使用win7系统.有些朋友购买MacBook Air后因为工作原因需要安装win7系统.可是该如何安装呢?对此,我给大家整理了MacBook Air安装win7系统的 ...

  4. (十三)linux中断底半部分处理机制

    这篇文章介绍一下linux中断的底半部分的tasklet和workquene两种处理机制,其中tasklet中不能有延时函数,workquene的处理函数可以加入延时操作 目录 (一)tasklet小 ...

  5. linux中的tasklet机制【转】

    转自:http://blog.csdn.net/yasin_lee/article/details/12999099 转自: http://www.kerneltravel.net/?p=143 中断 ...

  6. linux platform匹配机制,Linux驱动中的platform总线详解

    platform总线是学习linux驱动必须要掌握的一个知识点. 一.概念 嵌入式系统中有很多的物理总线:I2c.SPI.USB.uart.PCIE.APB.AHB linux从2.6起就加入了一套新 ...

  7. linux 内核驱动的poll,嵌入式Linux驱动开发(五)——poll机制原理以及驱动实现...

    前情回顾: 再开始今天的内容之前,先简单review一下,我们都用了什么方案来获取按键值,他们的特点都是什么.只有不断地理清了思路,我们才能够更好的理解,为何会出现如此多的解决方案,当遇到问题的时候, ...

  8. 《Linux总线、设备与驱动》USB设备发现机制

    http://blog.csdn.net/tankai19880619/article/details/11639185 说明:本分析基于mstar801平台Linux2.6.35.11内核,其他内核 ...

  9. linux驱动面试题整理

    1.字符型驱动设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件? 答:mknod命令结合设备的主设备号和次设备号,可创建一个设备文件. 评:这只是其中一种方式,也 ...

最新文章

  1. Linux下各文件夹的结构说明及用途介绍(转载)
  2. unity shader 纹理透明效果
  3. 修建道路 贪心,思维(女赛)
  4. VTK:Filtering之ContoursFromPolyData
  5. mySQL教程 第1章 数据库设计
  6. 处理SAP Netweaver gateway service使用过程中遇到的404 error
  7. 去掉网页上链接或按钮的虚线框
  8. IDEA 访问Maven私服与上传组件
  9. VC++ COMBO BOX控件的使用
  10. Mac---使用tree生成目录结构
  11. python 的库如何开发_Python开发者必备6个基本库
  12. 新版GitHub客户端上传文件夹教程笔记
  13. 【错误记录】Kotlin 报错 ( Some kotlin libraries attached to this project were compiled with a newer kotlin )
  14. 美团App用户界面分析
  15. 将链接转成base64格式生成二维码和把页面生成图片
  16. iOS各版本发布时间和特点
  17. 世界上第一台通用计算机是多少年诞生的,世界上第一台通用计算机ENIAC是( )年诞生的。...
  18. Windows10关机时出现 等待应用程序响应 / ETDCtrlHelper 影响关机
  19. 柳州高级中学2021年高考成绩查询,2021年柳州所有高中排名一览表
  20. 局部非饱和性的含义_范里安-微观经济学现代观点讲义(new)

热门文章

  1. 2020-05-03
  2. 细节决定成败,数据中心标签管理的重要性
  3. LuaPlus的编译和引用
  4. 【诗视野文学社】五一特刊|本期诗人:胭脂茉莉 李本 薛宏 文爱艺 唐根金 王宁 迪夫 东楠灵
  5. sql语句中查重复数据
  6. float子元素超出父元素解决办法
  7. 盛世昊通顺利登陆美国纳斯达克,产业链布局加速
  8. 立即拥有自己的商城APP,这个功能简直了
  9. 汇票,本票,抵押,质押,核押
  10. 基于人脸识别和图像分割技术制作证件照