博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
in_interrupt()和 in_irq、in_softirq介绍
阅读量:3641 次
发布时间:2019-05-21

本文共 723 字,大约阅读时间需要 2 分钟。

先分别看定义:

#define hardirq_count()        (preempt_count() & HARDIRQ_MASK)#define softirq_count()        (preempt_count() & SOFTIRQ_MASK)#define irq_count()            (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK  | NMI_MASK))#define in_irq()        (hardirq_count())  // 判断当前是否在硬件中断上下文#define in_softirq()    (softirq_count())  // 判断当前是否在软件中断上下文#define in_interrupt()  (irq_count())      // 判断当前是否在中断状态(硬中断或软中断、上下半部)

 

/*Linux源码中的注释* PREEMPT_MASK: 0x000000ff* SOFTIRQ_MASK: 0x0000ff00* HARDIRQ_MASK: 0x03ff0000* NMI_MASK: 0x04000000*/这里其实把preempt_count划分成了四部分:抢占计数器、软中断计数、硬件中断计数、NMI计数。抢占计数器:0-7位软中断计数器:8-15位硬中断计数器:16-25位NMI标识:26位基于上面的信息,实现了上面Linux内核中判断各个上下文的宏:

 in_interrupt 判断中断计数和底半部计数是否大于0

如果只希望判断是否在硬件中断上下文,则可以使用:in_irq()

转载地址:http://gauyn.baihongyu.com/

你可能感兴趣的文章
Vue学习之二(vue指令)
查看>>
人力资源项目-角色模块
查看>>
Matrixport首席执行官葛越晟:区块链市场具有充足的流动性及高溢价
查看>>
量子链创始人帅初:平台和应用需要具备区块链特征,但不一定需要去中心化...
查看>>
印度加密交易所解禁:交易量暴增6倍,全球Buy in了吗?
查看>>
明年3月实施!韩国通过特别金融法案,加密货币完全合法化
查看>>
7种启动Spring Boot项目的方式,一次性打包说给你听
查看>>
Js动态生成Div、带属性。append()和appendChild()
查看>>
整合trtc遇到的坑:<ERROR> navigator.mediaDevices is undefined
查看>>
前端实现视频在线预览插件之video.js上手
查看>>
【Unity】删除所有子物体保留父物体的2种方式
查看>>
基本组件操作
查看>>
Time模块
查看>>
InputModule
查看>>
Unity3D Waypoint (路点)
查看>>
同步延时问题解决方案
查看>>
面试题总结
查看>>
简易小地图制作重点
查看>>
Lua中的元表元方法
查看>>
第九章 质量与变更管理
查看>>