http://blog.csdn.net/myleeming/archive/2009/06/02/4235224.aspx

首先摘一段网上的见解:

The enable_irq unbalanced messages are harmless. It just means that when the driver called disable_irq there were no devices already using the irq, and as such it was already disabled, so the call to disable_irq was forgotten by the kernel, so when we call enable_irq the core kernel code thinks it's unbalanced when it isn't.

我们再来跟一下这个unbalanced的代码:

void enable_irq(unsigned int irq)
{
 struct irqdesc *desc = irq_desc + irq;
 unsigned long flags;

spin_lock_irqsave(&irq_controller_lock, flags);
 if (unlikely(!desc->disable_depth)) {
  printk("enable_irq(%u) unbalanced from %p/n", irq,
   __builtin_return_address(0));
 } else if (!--desc->disable_depth) {
  desc->probing = 0;
  desc->chip->unmask(irq);

/*
   * If the interrupt is waiting to be processed,
   * try to re-run it.  We can't directly run it
   * from here since the caller might be in an
   * interrupt-protected region.
   */
  if (desc->pending && list_empty(&desc->pend)) {
   desc->pending = 0;
   if (!desc->chip->retrigger ||
       desc->chip->retrigger(irq))
    list_add(&desc->pend, &irq_pending);
  }
 }
 spin_unlock_irqrestore(&irq_controller_lock, flags);
}

可见unbalanced这个问题只会发生在enalbe_irq函数中,这里要提到一个变量disable_depth,这是一个标志中断禁止否 的变量,如果调用disabled,这个变量会++,是正数,表示禁止中断,如果是enable,这个变量会--,是0,表示允许,一般都会一一对应。

而如果这个变量本身就是0,enable的时候,我们再去enable它的时候系统会去检查你这个是不是0,如果是0的话表示你这个中断本来就是打开的,你现在再去打开没有必要,这就是unbalanced了,所以可见这本身就是一个无害的信息。

Linux中断的unblance问题相关推荐

  1. Linux中断(interrupt)子系统之一:中断系统基本原理【转】

    转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于AR ...

  2. linux中断系统那些事之----中断处理过程【转】

    转自:http://blog.csdn.net/xiaojsj111/article/details/14129661 以外部中断irq为例来说明,当外部硬件产生中断时,linux的处理过程.首先先说 ...

  3. linux中断下半部

    linux中断下半部 6.1下半部 下半部的任务就是执行与中断处理密切相关但中断处理程序本身不执行的工作.对于在上半部和下半部之间划分工作,尽管不存在某种严格的规则,但还是有一些提示可供借鉴:(1)如 ...

  4. 探测函数 中断 linux,linux中断编程函数

    总结下linux中断编程的函数,方便下次使用时查看. 1.中断申请和释放 int request_irq( unsigned int irq, irq_handler_t handler, unsig ...

  5. Linux 中断之中断处理浅析

    1. 中断的概念 中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的 CPU 暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续 ...

  6. arm Linux 中断管理机制

    关键词:GIC.IAR.EOI.SGI/PPI/SPI.中断映射.中断异常向量.中断上下文.内核中断线程.中断注册. 1.1 ARM支持中断类型 ARM GIC-v2支持三种类型的中断: SGI:软件 ...

  7. linux中断的上半部和下半部

    原文地址:linux中断的上半部和下半部 作者:td1442911376 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=246 ...

  8. linux arm内核栈切换,ARM Linux中断发生时内核堆栈切换

    转载注明出处:http://www.wowotech.net/forum/viewtopic.php?id=54 对ARM Linux中断非常简洁.精确的描述. 发生了中断,最重要的是保存现场,在中断 ...

  9. Linux 中断实验

    目录 Linux 中断简介 Linux 中断API 函数 上半部与下半部 设备树中断信息节点 获取中断号 硬件原理图分析 实验程序编写 修改设备树文件 按键中断驱动程序编写 编写测试APP 运行测试 ...

最新文章

  1. 数据分析显示,疫情下数据科学家的薪水几乎未受影响
  2. 【每周CV论文推荐】 初学GAN必须要读的文章
  3. 【Linux】——搭建redis
  4. java 布尔表达式_java - 布尔值,条件运算符和自动装箱
  5. python数据写入表格生成图片_python带表格图片生成封装
  6. P2863 [USACO06JAN]牛的舞会The Cow Prom
  7. Linux操作系统内核启动参数详细解析
  8. 老王说ros的tf库
  9. 阿里云linux绑定域名
  10. 多线程笔试题(linux)
  11. sunplus8202v 无线游戏手柄——续
  12. linux fls函数,Linux学习笔记- find 命令详解
  13. 软件定义无线电 (SDR) 和业余试验
  14. 利用Excel批量快速发送电子邮件
  15. 实验二——病毒行为监控--搭建反病毒实验室
  16. Mysql-binlog日志分析
  17. 模块1--BH1750的应用(IIC)
  18. 计算机图形学 | 实验四:绘制一个球体
  19. 《2020 年 SRE 报告》BY CATCHPOINT
  20. 变速积分PID控制算法

热门文章

  1. 大数据技术周报第 001 期
  2. 简单探讨区块链中的不可能三角
  3. Java实现 LeetCode 481 神奇字符串
  4. 我带过的一名C++实习生——Z同学
  5. 【Android】之【App启动】
  6. 门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结
  7. 判定2000—2500年中的每一年是否为闰年,并将结果输出。
  8. html5获取纬度经度,html5获取不了经度和纬度
  9. YOLO训练自己的数据集的一些心得
  10. 单模单纤FC接口光纤传输距离