国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

Linux操作系統(tǒng)下的軟中斷問題分析

2024-07-26 00:34:47
字體:
供稿:網(wǎng)友

  前幾天把硬中斷完成了,這幾天在做軟中斷的事情。現(xiàn)在對linux2.6.12的軟中斷機(jī)制有了一個(gè)基本的認(rèn)識。在此把它的軟中斷的一些問題做一個(gè)記錄。
  系統(tǒng)中有一個(gè)softirq_action結(jié)構(gòu),它定義在中,是一個(gè)通用結(jié)構(gòu),還有一個(gè)很重要的結(jié)構(gòu)在中申明,這個(gè)結(jié)構(gòu)是cpu相關(guān)的,比如在i386中這個(gè)結(jié)構(gòu)為

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中這個(gè)結(jié)構(gòu)為


typedef struct {
unsigned int __softirq_pending;
} ____cacheline_aligned irq_cpustat_t;

  以上兩個(gè)結(jié)構(gòu)均再中。

  在中有幾個(gè)很不好理解的函數(shù):


1:local_softirq_pending()

  下面是這個(gè)函數(shù)的定義


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()如果追下去會很復(fù)雜,其實(shí)它最后只是一個(gè)數(shù)字:cpu的號碼,單cpu中為0.


2.#define __raise_softirq_irqoff(nr) do 
{ local_softirq_pending() |= 1UL << (nr); } while (0)

  這個(gè)函數(shù)實(shí)際上是把irq_stat[cpu_id](kernel/softirq.c中)結(jié)構(gòu)中的pending的第nr為置位,表示這個(gè)cpu有幾號軟中斷要處理,在do_softirq()中有對irq_stat[]的pending的相應(yīng)檢查及處理,詳細(xì)的處理過程參見源代碼及《Linux Kernel Development》第7章。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新密市| 金华市| 宁安市| 兴仁县| 平度市| 金山区| 印江| 汉沽区| 大英县| 内丘县| 临武县| 盐津县| 米脂县| 龙胜| 抚宁县| 易门县| 和平县| 确山县| 漠河县| 泽库县| 娱乐| 会东县| 手机| 华池县| 甘肃省| 朝阳市| 合山市| 府谷县| 石楼县| 苍南县| 曲靖市| 阿坝县| 广平县| 平泉县| 双江| 嘉义市| 阜康市| 越西县| 寿阳县| 盐池县| 阿克陶县|