spin_lock_bh使用

news/2024/11/27 22:22:38/

spin_lock_bh作用:

1.保护临界区

2.禁止抢占

3.禁止软中断

在软中执行函数_do_softirq()中已经使用__local_bh_disable_ip(_RET_IP_, SOFTIRQ_OFFSET)来禁止软中断了,所以CPU上执行软中断是串行执行的。

软中断的执行:

1.irq_exit()退出时可能会执行softirq

2.softirq的内核线程

软中断和进程B共享链表A,软中断修改链表A,进程B读链表A。

情况1 未使用spin_lock保护链表A:

进程B读链表A的数据。硬件中断来的时候会中断进程B,当进程B正在读取链表A的时候,硬件中断来了,此时硬件中断退出时执行irq_exit,并调用了_do_softirq()执行软中断,修改了链表A,执行完成返回进程B,进程B再次读取链表A,可能访问到NULL的数据,出现崩溃。

情况2 使用spin_lock保护链表A:

spin_lock()无法禁止软中断执行。进程B先执行spin_lock(),进入临界区,读链表A,在临界区硬件中断到来,硬件中断执行完成,执行irq_exit(),然后执行_do_softirq()进入软中断执行,软中断处理函数也去执行spin_lock(),出现死锁。

情况3 使用spin_lock_bh保护链表A:

进程B先执行spin_lock_bh(),进入临界区,读链表A,在临界区硬件中断到来,硬件中断执行完成,执行irq_exit(), 然后执行in_interrupt()判断是否禁止了软中断,由于spin_lock_bh()禁止了软中断,所有不会去执行软中断函数,返回到进程B继续执行,正常。

总结:

1、spin_lock_bh()主要用于保护其他进程上下文访问软中断函数共享的变量。

2、在软中断中其实可以用spin_lock即可,可以不用spin_lock_bh


http://www.ppmy.cn/news/907655.html

相关文章

STM32驱动BH1750模块

模块描述 BH1750FVI是一款用于I2C总线接口的数字环境光传感器IC。该集成电路最适合获取环境光数据,用于调整手机的 LCD和键盘背光功率。可以在高分辨率下检测宽范围(1-65535 lx) 引脚说明 VCC5VGNDGNDSCLPB6SDAPB7ADDRVCC/GND ADDR引脚等…

bh1750采集流程图_基于BH1750光照强度数据采集系统的设计

基于 BH1750 光照强度数据采集系统的设计 刘博 【摘 要】 摘 要:光照度传感器是一种常用的检测装置,在多个行业中都有一 定的应用。 BH1750 是一种用于两线式串行总线接口的数字型光强度传感器集 成电路,利用这种集成电路制成的传感器可以采集…

bh1750采集流程图_基于BH1750的光照度检测)报告方案.doc

成绩评定: 传感器技术 课程设计 题 目 基于BH1750光照度检测 摘要 传统的光照主要采用光敏电阻,光敏电阻的光电流与光照度之间的关系称为光电特性。光敏电阻的光电特性呈非线性,因此不适宜作检测元件,在自动控制中它常被用作丌关式光电传感器。光敏电阻需要用A/D转换器将其…

BH1750 光照传感器文档详解 及 驱动设计

前言 最近接触到一个应用,需要在低功耗的产品上加上光照度采集,正好最近有接触到一款光照传感器 BH1750 ,性能价格都合适,那么今天就抽空来好好测试一下。 那么要写一篇测试文章,我会尽量以新手的角度从资料的获取&a…

BH1750 传感器实战教学 —— 硬件设计篇

前言 前面刚写了一篇 《BH1750 光照传感器文档详解 及 驱动设计》,今天来写一篇简单的传感器实战教学。 文章如下:BH1750 光照传感器文档详解 及 驱动设计 那有些朋友就疑惑了,在上一篇文章其实我们基本都测试成功了,驱动也写了…

树莓派集成BH1750光敏传感器配置

树莓派集成BH1750光敏传感器配置 我是代码小白,一个正在做毕设的秃头少年。鄙人拙作,有不当之处,还请指教。 今天介绍的是在树莓派上集成BH1750光照传感器并收集信息的配置过程。 1.硬件 树莓派PI3BRS GY-302 BH1750 FVI模块 2.树莓派环境 可以执行 cmake、ma…

【NLP】一项NER实体提取任务

一、说明 从文本中提取实体是一项主要的自然语言处理 (NLP) 任务。由于深度学习(DL)的最新进展使我们能够将它们用于NLP任务,并且与传统方法相比,在准确性上产生了巨大的差异。 我试图使用深度学习和传统方法从文章中提取信息。结果是惊人的,因为DL方法…

Deep Residual Learning for Image Recognition

2015-ResNet 关键词: residual connection CV论文:一般在第一页就放一个很“好看”的图 从图可以得到的结论:深的网络更难训练 ( 不仅因为过拟合,因为训练时误差都很难降低 ) 网络结构图 1*1卷积作用:改变通道数 ,提出维度匹配方法:1)补零;2)投影projection…