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

海外网站如何做用户实名认证专业的培训行业网站模板

海外网站如何做用户实名认证,专业的培训行业网站模板,Add-ons wordpress,桂林房价《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录tasklet 简介tasklet 结构体tasklet 初始化使能 tasklet失能 tasklettasklet 调度函数tasklet 取消调度函数tasklet 实验tasklet 简介 Tasklets 机制是linux中断处理机制中的软中断延迟机制。在linux中存在着…

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记

文章目录

  • tasklet 简介
  • tasklet 结构体
  • tasklet 初始化
  • 使能 tasklet
  • 失能 tasklet
  • tasklet 调度函数
  • 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 结构体指针
  • func:tasklet 处理函数
  • data:tasklet 处理函数的参数

静态初始化

静态初始和动态初始化功能相同,实际上就是动态初始化的宏函数,

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.h>int 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.yayakq.cn/news/371050/

相关文章:

  • 做店铺首页的网站建设工程交易服务中心
  • 舒城做网站西安大雁塔的来历
  • 怎么敲代码做网站在线crm厂商
  • 返利网站做鹊桥推广中国建筑官网采购平台
  • 合肥做网站的公司讯登百度关键词搜索排名多少钱
  • 企业网站建设需要注意什么个人公益网站怎么制作
  • 网站维护的主要工作专业网站建设服务报价
  • 一等一网站手机网站制作报价表
  • 网站 怎么做百度才能搜索出来查询友情链接
  • 怎么推广公司网站个人公众号做电影网站吗
  • 万网做网站给网站源码拓者设计室内设计官网首页
  • 163企业邮箱服务器信息流优化师职业规划
  • 专门做素菜的网站商城网站建设建议
  • 购物网站建设建站石家庄市环保局网站建设项目备案系统
  • c2c网站建设需求分析百度app推广方法
  • 广州手机模板建站高端品牌鞋子有哪些牌子
  • 网站建设 找vx cp5173谷歌可以绑定wordpress
  • 花店网站建设课程设计论文中山百度seo排名优化
  • 中国建设人才服务信息网是不是正规网站上海公司网站
  • 制作网站协议wordpress淘宝客模板下载
  • 一浪网站建设个人注册公司需要多少费用
  • 北京网站优化推广效果商务互联 网站
  • 沧州网站建设cztj电商网站开发公司哪家好
  • 开发网站私活简历制作网站免费
  • 网站怎么做音乐外链电影天堂网站用什么程序做的
  • 旅游电子商务网站规划书重庆有哪些科技骗子公司
  • 做网站创业怎么样网站制作费用价格表
  • 拱墅区做网站建设网站需要的安全设备
  • 门户网站百度百科建设有限公司
  • discuz!网站模板网络公司网站源码下载