当前位置: 首页 > news >正文

衡水网站建设知识呼市做网站

衡水网站建设知识,呼市做网站,百度小程序开发者平台,四川建设学习网官网《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录tasklet 简介tasklet 结构体tasklet 初始化使能 tasklet失能 tasklettasklet 调度函数tasklet 取消调度函数tasklet 实验tasklet 简介 Tasklets 机制是linux中断处理机制中的软中断延迟机制。在linux中存在着… 《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录tasklet 简介tasklet 结构体tasklet 初始化使能 tasklet失能 tasklettasklet 调度函数tasklet 取消调度函数tasklet 实验tasklet 简介 Tasklets 机制是linux中断处理机制中的软中断延迟机制。在linux中存在着硬中断和软中断的概念区分。 机制流程当linux接收到硬件中断之后通过tasklet函数来设定软中断被执行的优先程度从而导致软中断处理函数被优先执行的差异性。 特点tasklet的优先级别较低而且中断处理过程中可以被打断。但被打断之后还能进行自我恢复断点续运行。 ——百度百科 在 Linux 内核中一般使用 tasklet 机制来实现中断下文tasklet 任务在同一时间只能在一个 CPU 上运行所以在多核系统上不会存在并发问题但正因如此它的执行优先级会比硬中断低。另外tasklet 任务函数不能调用任何可能会引起休眠的函数否则会导致内核异常。 tasklet 结构体 tasklet 结构体定义在内核 include/linux/interrupt.h 头文件中 struct tasklet_struct {struct tasklet_struct *next; // 链表中的下一个 tasklet 结构体节点unsigned long state; // tasklet 状态 atomic_t count; // 原子类型计数器void(*func) (unsigned long data); // tasklet 处理函数 unsigned long data; // tasklet 处理函数的参数 }tasklet 初始化 动态初始化 void tasklet_init(struct tasklet_struct *t, void (*func)(unsigned long), unsigned long data)功能动态初始化 tasklet_struct 结构体将计数器 count 和状态 state 置 0。 参数 t tasklet_struct 结构体指针functasklet 处理函数datatasklet 处理函数的参数 静态初始化 静态初始和动态初始化功能相同实际上就是动态初始化的宏函数 DECLARE_TASKLET(name, func, data); DECLARE_TASKLET_DISABLED(name, func, data);name 参数对应 tasklet_struct 结构体名其他参数与动态初始化相同。 DECLARE_TASKLET 和 DECLARE_TASKLET_DISABLED 的区别在于初始化时 tasklet_struct 结构体变量中 count 的值不同当 count 为 0 时表示 tasklet 使能当 count 为 1 时表示 tasklet 失能。 这里的 count 值会影响 tasklet 任务的调度只有 count 为 0 时tasklet 任务才会被调度。 使能 tasklet tasklet 使能实际就是把 t-count 减 1。 void tasklet_enable (struct tasklet_struct *t)失能 tasklet tasklet 失能实际就是把 t-count 加 1。 void tasklet_disable(struct tasklet_struct *t)tasklet 调度函数 tasklet_schedule() 会让 t-func() 执行前提是 t-count 为 0。 void tasklet_schedule (struct tasklet_struct *t)由于 tasklet 任务执行优先级并不高所以连续多次调用调度函数可能只会执行一次。 tasklet 取消调度函数 tasklet_kill() 会将已经调度的 tasklet 停止调度。 void tasklet_kill(struct tasklet_struct *t)如果 tasklet 任务正在被调度执行tasklet_kill() 将会等待其退出tasklet_kill() 完成前应避免再次调度。另外不能在 tasklet 处理函数里调用 tasklet_kill()。 tasklet 实验 在上一个中断实验的代码上添加中断下文处理函数即 tasklet 任务。 #include linux/module.h #include linux/init.h #include linux/interrupt.h #include linux/gpio.hint irq; struct tasklet_struct mytasklet;//tasklet 处理函数 void my_tasklet(unsigned long data) {printk(data is %ld.\n, data); }//静态初始化 tasklet DECLARE_TASKLET(mytasklet, my_tasklet, 6);//中断服务函数 irqreturn_t my_interrupt(int irq, void *args) {printk(my interrupt handler.\n); // tasklet 调度tasklet_schedule(mytasklet);return IRQ_RETVAL(IRQ_HANDLED); }static int interrupt_irq_init(void) {int ret 0;// 获取中断号irq gpio_to_irq(101);printk(irq is %d\n, irq);// 申请中断ret request_irq(irq, my_interrupt, IRQF_TRIGGER_RISING, inttrupt_test, NULL);if(ret 0){printk(request irq error.\n);return 0;}return 0; }static void interrupt_irq_exit(void) {printk(interrupt irq exit.\n);// 注销中断free_irq(irq, NULL);// 摧毁 tasklettasklet_kill(mytasklet); }module_init(interrupt_irq_init); module_exit(interrupt_irq_exit);MODULE_LICENSE(GPL); MODULE_AUTHOR(xiaohui);实验结果 触碰触摸屏中断被触发先执行中断服务函数然后再执行 tasklet 处理函数。
http://www.hkea.cn/news/14400539/

相关文章:

  • 临邑建设局网站冠县网站制作
  • wordpress怎样做单页网站不用域名做自己的网站
  • 局域网内部网站建设app做旅游游客产品的网站
  • 关于网页设计的教育网站设计软件 开发 公司
  • 南山网站 建设seo信科网站运营代理
  • 网站优化毕业设计网站建设的法律依据
  • 网站设计示例湖北企业网站建设公司
  • 网站文章突然不收录完全自建网站
  • 舟山市建设工程质量监督站网站网站可信查验
  • 专业直播网站开发淘宝网站建设的缺点
  • 在哪里可以做网站wordpress4.5发布模块
  • 网站建设费的分录怎么写电子商务网站建设的定义
  • 苏州网站制作施工企业怎样报考a证
  • 教育网站图片wordpress显示阅读量
  • 网站制作方案专业乐云seo关于网站建设的文案
  • 学了3个月ui好找工作吗东莞百度快照优化排名
  • 网站如何做下载链接如何建开发手机网站
  • 龙岗做网站的建设法规 课程网站
  • 上海自助建站上海网站建设网站搭建工作怎么样
  • 晋中建设集团网站大型网站系统
  • 新型门窗网站模板商河做网站多少钱
  • 网站开发推荐一本书免费电商网站建设平台
  • 企业网站建设一般考虑哪些因素?h5制作免费素材
  • 网站开发要考什么证wordpress 删除作者
  • 手机免费制作网站深圳网站建设网站制作公司
  • 网站的页头页脚怎么做玩具外贸好做吗
  • 网站名称格式卡一卡二卡四老狼
  • 金融网站建设银行python做网站多少钱
  • 怎么做网站的后台做进化树的在线网站
  • 做网站的公司为什么人少了单位网站建设费算无形资产吗