您现在的位置: 北大青鸟广州湘计立德培训中心 >> 学习园地 >> it培训辅导 >> linux认证 >> 复习指导 >> 正文    
 
 

Linux操作系统下的软中断问题分析


前几天把硬中断完成了,这几天在做软中断的事情。现在对linux2.6.12的软中断机制有了一个基本的认识。在此把它的软中断的一些问题做一个记录。

系统中有一个softirq_action结构,它定义在中,是一个通用结构,还有一个很重要的结构在中申明,这个结构是cpu相关的,比如在i386中这个结构为

typedef struct {



unsigned int __softirq_pending;



unsigned long idle_timestamp;



unsigned int __nmi_count; /* arch dependent */



unsigned int apic_timer_irqs; /* arch dependent */



} ____cacheline_aligned irq_cpustat_t;

在arm中这个结构为

typedef struct {



unsigned int __softirq_pending;



} ____cacheline_aligned irq_cpustat_t;

以上两个结构均再中。

在中有几个很不好理解的函数:

1:local_softirq_pending()

下面是这个函数的定义

CODE:#ifndef __ARCH_IRQ_STAT



extern irq_cpustat_t irq_stat[]; /* defined in asm/hardirq.h */



#define __IRQ_STAT(cpu, member) (irq_stat[cpu].member)



#endif







/* arch independent irq_stat fields */



#define local_softirq_pending() \



__IRQ_STAT(smp_processor_id(), __softirq_pending)

其中的smp_processor_id()如果追下去会很复杂,其实它最后只是一个数字:cpu的号码,单cpu中为0.

2.#define __raise_softirq_irqoff(nr) do 



{ local_softirq_pending() |= 1UL << (nr); } while (0)

这个函数实际上是把irq_stat[cpu_id](kernel/softirq.c中)结构中的pending的第nr为置位,表示这个cpu有几号软中断要处理,在do_softirq()中有对irq_stat[]的pending的相应检查及处理,详细的处理过程参见源代码及《Linux Kernel Development》第7章。


友情提示:如果您对北大青鸟的学费、课程、就业有疑问,可以点击此处留言,或拨打电话:020-34330086,我们会有专业课程顾问细心为你解答问题,免费为你定身做前景分析和职业规划!

 
相关阅读
Linux操作系统上安装Mplayer播放器的
浅谈Linux操作系统KDE桌面上的改进
Linux操作系统内核ARP的设计实现概述
Linux操作系统中常见的桌面环境介绍
Linux操作系统下的CAD系统详细介绍(
Linux操作系统下的CAD系统详细介绍(
Linux操作系统下的CAD系统详细介绍(
Linux操作系统下APE格式文件的播放
Linux操作系统设备特性及设备管理分析
Linux操作系统下应急响应流程与步骤
揭开Linux操作系统的Swap交换区之谜
Linux操作系统的声音设备编程实例(2
 
 
 
 

姓名:  

手机:  

Q Q号:  



 
 
 
   
 
 
  • 此栏目下没有推荐文章
  •  
     
     
    关于我们 | 培训课程 | 学校位置 | 招生问答 | 在线留言 |

    地址:广州市海珠区同福东路644号天一酒店5楼全层(市二宫正门旁)
    咨询报名电话:020-34330086 020-39862039(24小时热线) 传真:020 - 34351700
    版权所有· 广州北大青鸟APTECH(湘计立德)授权培训中心