local_irq_save和 local_irq_disable

2023-11-07

如果你要禁止所有的中断该怎么办? 在2.6内核中,可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理,这两个函数定义在 <asm/system.h>中:
    void local_irq_save(unsigned long flags);
    void local_irq_disable(void);
   local_irq_save的调用把当前中断状态保存到flags中,然后禁用当前处理器上的中断发送。注意, flags 被直接传递, 而不是通过指针来传递。

   local_irq_disable不保存状态而关闭本地处理器上的中断发送; 只有我们知道中断并未在其他地方被禁用的情况下,才能使用这个版本。

    可通过如下函数打开中断:

    void local_irq_restore(unsigned long flags); 
    void local_irq_enable(void);
    第一个版本将local_irq_save保存的flags状态值恢复, 而local_irq_enable则无条件打开中断。与 disable_irq不同, local_irq_disable不会维护对多次的调用的跟踪。 如果调用链中有多个函数需要禁止中断, 应该使用local_irq_save.
    在2.6内核, 没有方法全局禁用整个系统的所有中断。 内核开发者认为关闭所有中断的代价太高,因此没有必要提供这个能力。如果读者使用的老驱动程序调用了类似cli和sti这样的函数,为了该驱动程序能够在2.6下使用,则需要进行修改而使用正确的锁。

    in_interrupt()是判断当前进程是否处于中断上下文,这个中断上下文包括底半部和硬件中断处理过程,

函数实现:

     #define in_interrupt() ({ const int __cpu = smp_processor_id(); /
          (local_irq_count(__cpu) + local_bh_count(__cpu) != 0); })

判断中断计数和底半部计数是否〉0,如果只希望判断是否在硬件中断上下文,则可以使用:in_irq()。


http://wmzjzwlzs.blog.163.com/blog/static/205014196201310174725996/


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

local_irq_save和 local_irq_disable 的相关文章

  • IUnknown—COM和MFC

    转自 http hi baidu com zhangqiuxi blog item 6d9603ad9c8fe5084b36d6a0 html 问题 我用MFC编写COM程序有一段时间了 知道如何使用宏和嵌套类 以及如何在嵌套类中处理IUn
  • 范围for语句

    C 新标准提供的范围for语句 这种语句遍历给定序列中个元素并对序列中每一个值执行某种操作 其语法形式是 for declaration expression statement 其中 expression 部分是一个对象 用于表示一个序列
  • 五. python面向对象(多态 和metaclass=abc.ABCMeta)

    一 多态 多肽 一种事物的多种形态 叫多肽 例如 动物 animal 猫 狗 animal py 文件 动物类 都有名字这个属性 和吃这个方法 class Animal object def init self name self name
  • c/c++入门教程 - 1.基础c/c++ - 1.0 Visual Studio 2019安装环境搭建

    推荐视频课程 https www bilibili com video BV1et411b73Z p 2 已投币三连 b站果然是个学习的网站 本来是想在linux环境下运行QT 于是先学了几个月linux嵌入式驱动开发 后来发现太底层了 与
  • JNA模拟复杂的C类型——Java映射char*、int*、float*、double*

    文章目录 引言 Java Native Type Conversions Java和C基本类型指针对应关系 Pointer的具体用法 引言 最近项目在用Java调用C写的一些三方库 没办法直接调 用Java封装一下C的接口 这就少不了要用到
  • typedef struct 用法详解

    typedef为C语言的关键字 作用是为一种数据类型定义一个新名字 当typedef与结构结合使用时 会有一些比较复杂的情况 而且在C语言和C 里面有略有差别 本文将详细讲解typedef struct的用法 第一篇 typedef str
  • C/C++中浮点数格式学习——以IEEE75432位单精度为例

    这是浮点数的通常表示形式 在IEEE754中 单精度浮点数有如下形式 32位单精度 单精度二进制小数 使用32个比特存储 1 8 23位长 S Exp Fraction 31 30至23偏正值 实际的指数大小 127 22至0位编号 从右边
  • 大端模式和小端模式转化

    在工作中遇到一个问题 数据是以大端模式存储的 而机器是小端模式 必须进行转换 否则使用时会出问题 一 定义 大端模式 Big Endian 数据的高字节 保存在内存的低地址中 数据的低字节 保存在内存的高地址中 小端模式 Little En
  • GDAL多光谱与全色图像融合简单使用

    目录 简述 C 代码 效果对比 GDAL融合效果和原始多光谱波段对比 GDAL融合效果和原始全色波段对比 ARCGIS融合效果与原始全色和多光谱对比 GDAL融合效果与ArcGIS融合效果对比 简述 最近在GDAL的代码中看见了gdalpa
  • 树莓派内核开发准备(内核源码获取、启动过程、源码目录树)

    目录 1 交叉编译工具的安装 2 内核源码获取 3 嵌入式设备带操作系统的启动过程扫盲 4 Linux内核源码树扫盲 1 内核源码简介 2 Linux内核源代码目录树结构 tree指令查看 内核源码目录树 1 交叉编译工具的安装 参照我之前
  • vector,list,deque区别

    http blog csdn net renkaihao article details 6803866 vector和built in数组类似 它拥有一段连续的内存空间 并且起始地址不变 因此它能非常好的支持随即存取 即 操作符 但由于它
  • dev-c++官网位置和源码/库位置

    1 http devpaks org 2 http www bloodshed net 3 http www bloodshed net dev 转载于 https www cnblogs com vilyLei articles 1812
  • R----dplyr包介绍学习

    dplyr包 plyr包的替代者 专门面对数据框 将ddplyr转变为更易用的接口 gt 来自dplyr包的管道函数 其作用是将前一步的结果直接传参给下一步的函数 从而省略了中间的赋值步骤 可以大量减少内存中的对象 节省内存 可惜的是应用范
  • 模板的完全特例化和部分特例化

    介绍 完全特例化就是类型完全明确的版本 而部分特例化指的是 只知道是几个参数的函数而不知道参数的类型 或者是只知道是引用或者是指针类型 而不知道具体是char 还是 int 模板特例化实例1 template
  • mfc窗口创建的create与oncreate

    在view类中 create 是虚函数由框架调用 是用来 生成一个窗口的子窗口 oncreate 消息响应函数 是用来 表示一个窗口正在生成 某个CWnd的Create函数由当前CWnd的Owner调用 而在CWnd Create中 又会调
  • C++学习笔记12:输入输出流实例整理(文本文件读写,二进制文件读写,一组数据的文件读写,随机访问文件实例

    这也太难记了555老阔疼 文件读写示例 include
  • Public Private Protect Inheritance and access specifiers

    In the previous lessons on inheritance we ve been making all of our data members public in order to simplify the example
  • 【C/C++】 - Linux下查找函数头文件 以及 man命令拓展

    背景 比如现在需要找C语言 sleep函数的头文件 使用man来查找 可以先man sleep 可以发现出来的默认是sleep 1 是一个User Commands 明显不是我们需要的 这里提示了 看sleep 3 那我们查看下sleep
  • 一个简单的参数帮助框架,c实现

    文章目录 具体实现如下 include
  • C/C++编程:令人印象深刻的高级技巧案例

    C C 编程语言在软件开发领域有着悠久的历史 由于其高效 灵活和底层访问能力 至今仍然被广泛应用 本文将介绍一些在C C 编程中令人印象深刻的高级技巧 帮助读者提升编程水平 更加高效地使用这两种强大的编程语言 一 指针运算与内存管理 C C

随机推荐

  • 睿智的智能优化算法3——利用遗传算法实现字符串配对

    睿智的智能优化算法3 利用遗传算法实现字符串配对 字符串配对 求解过程 1 编码方式 2 计算适应度 3 自然选择 4 基因突变 5 个体杂交 实现代码 GITHUB下载连接 好久都没有用过遗传算法了 觉得需要重新复习一下 而且考虑到遗传算
  • hive窗口函数(开窗函数)

    一 窗口函数概述 窗口函数 Window functions 是一种SQL函数 非常适合于数据分析 因此也叫做OLAP函数 其最大特点是 输入值是从SELECT语句的结果集中的一行或多行的 窗口 中获取的 你也可以理解为窗口有大有小 行有多
  • Tomcat服务器配置Https协议

    前言 日常开发项目时 一般本机都是基于http协议 但是要实现某些需求必须要开启https协议 现在https协议已经成为主流 网站如果未开启https协议 浏览器会进行安全提示 本文以Tomcat服务器为例 简单介绍如何在本机开发环境配置
  • ② 尚品汇的前台开发笔记【尚硅谷】【Vue】

    文章目录 八 加入购物车 路由跳转之前发请求 api 请求接口 将数据存储到服务器里 判断加入成功 或 失败 成功后进行路由跳转 开始进行路由跳转 并进行路由传参 开始渲染页面 购物车静态组件与修改 九 完成ShopCart购物车模块业务
  • 使用algorithm中的sort进行vector的自定义排序

    名称 使用algorithm中的sort进行vector的自定义排序 说明 可以使用sort进行自定义排序 不过要定义比较函数 在此处的比较 函数为Compare 名字可以任取 在比较函数中 定义自己的排序方式 然后在sort函数中传入函数
  • idea将本地新项目上传至svn

    目录 第一步 将本地代码交给svn管理 第二步 将代码提交至svn 第一步 将本地代码交给svn管理 1 file gt setting进入设置 2 点击Version Control gt 点击 加号 gt 选择本地项目文件 gt 选择S
  • 修改Mysql数据库的用户名和密码【详细】

    数据库的用户名默认是root 1进入到Mysql 首先要登录数据库 1win r输入cmd 管理员身份打开 或者 2搜索输入命令提示符 2 输入mysql uroot p点击回车 注意 mysql默认用户名是root 我以前修改过 所以我输
  • 看起来很长但还是有用的Spring学习笔记

    本文首发于泊浮目的专栏 https segmentfault com blog Spring致力于提供一种方法管理你的业务对象 在大量Java EE的应用中 随处可见Spring 今天我将简单的介绍一下Spring这个框架 本文适合读者 想
  • Verilog中generate语句的用法

    在Verilog 2001中新增了语句generate 通过generate循环 可以产生一个对象 比如一个元件或者是一个模块 的多次例化 为可变尺度的设计提供了方便 generate语句一般在循环和条件语句中使用 为此 Verilog 2
  • DLL的引入方式(DllImport的特殊引入方式)

    Dll引入方式有四种 1 就是普通的比如一个解决方案中有多个项目 将其他项目的引入到该项目中 2 就是软件自带的程序集的引入 3 就是使用dll的引入 普通的本身就是VS的dll文件 4 就是使用dll的引入 不是属于该语言的vs的Dll文
  • 减少GC开销 &&可能出现内存泄漏的情况&&两个对象相互引用会不会被GC

    如何降低java GC开销 减少GC次数 其他详见 如何减少垃圾回收的次数 jvm虚拟机 1 选择一个较好的GC器 Java9在2017年九月发布 G1 Garbage First 垃圾回收器 成为 HotSpot 虚拟机默认的垃圾回收器
  • 还没用熟 TypeScript 社区已经开始抛弃了

    前端Q 我是winty 专注分享前端知识和各类前端资源 乐于分享各种有趣的事 关注我 一起做个有趣的人 公众号 点击上方 前端Q 关注公众号 回复加群 加入前端Q技术交流群 根据 rich harris talks sveltekit an
  • C# 加密解码各种方法

    目录 一 加密解密介绍 二 MD5 三 SHA x系列 四 DES 3DES 五 RC2 六 AES 七 Base64 八 Rsa 九 参考文献 一 加密解密介绍 不可逆加密 MD5 SHA x系列对称式加密 Des 3DES RC2 AE
  • “加密系统”的巨坑

    在来公司之前 我压根就不知道这世界上原来还有 加密系统 这种软件产品存在 学名叫数据防泄漏 也怪我孤陋寡闻了 因为之前在厦门从来没听说过哪家公司有在用加密系统 当然 每家公司都有自己独特的管理需求 也许公司这边也确实重要信息比较多 核心机密
  • java自定义排序

    java中sort的自定义排序 一 Arrays sort nums 的一般用法 二 最大数 力扣179 三 合并区间 力扣59 四 总结 一 Arrays sort nums 的一般用法 整个数组按照升序排序 若需要降序排序 将数组转置即
  • ng-model数据绑定实例

    ng mode的作用是数据绑定 placeholder是默认显示值 在input里面输入任何字符都会对应显示到你下面ng model对应的name中 name
  • Python 3基础教程19-模块导入语法

    本文开始介绍模块导入的一些基本语法 我们现在还在Python自带的IDLE编辑器里写Python代码 如果你要需要一个功能 例如build in的模块 那么你就需要先导入这个模块 然后才能使用这个模块相关方法 不像在Pycharm编辑器了
  • 剑指 Offer 18. 删除链表的节点

    题目链接 18 删除链表的节点 Definition for singly linked list struct ListNode int val ListNode next ListNode int x val x next NULL c
  • 良品铺子年报:将冲击百亿营收门槛 斥资1.8亿现金分红

    雷递网 雷建平 3月23日报道 良品铺子 603719 SH 日前公布2021年度业绩 财报显示 良品铺子2021年公司营收93 24亿元 较2020年的78 94亿元增长18 11 近五年营收翻番 这意味着 良品铺子2022年将冲击百亿门
  • local_irq_save和 local_irq_disable

    如果你要禁止所有的中断该怎么办 在2 6内核中 可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理 这两个函数定义在