b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

系统的概念 GIC代码分析(11)

电脑杂谈  发布时间:2018-02-14 06:28:57  来源:网络整理

#endif

};

对于GIC支持的IRQ的数目,这里还要赘述几句。实际上并非GIC支持多少个HW interrupt ID,其就支持多少个IRQ。对于SGI,其处理比较特别,并不归入IRQ number中。因此,对于GIC而言,其SGI(从0到15的那些HW interrupt ID)不需要irq domain进行映射处理,也就是说SGI没有对应的IRQ number。如果系统越来越复杂,一个GIC不能支持所有的interrupt source(目前GIC支持1020个中断源,这个数目已经非常的大了),那么系统还需要引入secondary GIC,这个GIC主要负责扩展外设相关的interrupt source,也就是说,secondary GIC的SGI和PPI都变得冗余了(这些功能,primary GIC已经提供了)。这些信息可以协助理解代码中的hwirq_base的设定。

在注册GIC的irq domain的时候还有一个重要的数据结构gic_irq_domain_ops,其类型是struct irq_domain_ops ,对于GIC,其irq domain的操作函数是gic_irq_domain_ops,定义如下:

static const struct irq_domain_ops gic_irq_domain_ops = {

.map = gic_irq_domain_map,

.unmap = gic_irq_domain_unmap,

.xlate = gic_irq_domain_xlate,

};

irq domain的概念是一个通用中断子系统的概念,在具体的irq chip driver这个层次,我们需要一些解析GIC binding,创建IRQ number和HW interrupt ID的mapping的callback函数,更具体的解析参考后文的描述。

漫长的准备过程结束后,具体的注册比较简单,调用irq_domain_add_legacy或者irq_domain_add_linear进行注册就OK了。关于这两个接口请参考linux kernel的中断子系统之(二):irq domain介绍。

(g) 一个函数名字是否起的好足可以看出工程师的功力。set_smp_cross_call这个函数看名字也知道它的含义,就是设定一个多个CPU直接通信的callback函数。当一个CPU core上的软件控制行为需要传递到其他的CPU上的时候(例如在某一个CPU上运行的进程调用了系统调用进行reboot),就会调用这个callback函数。对于GIC,这个callback定义为gic_raise_softirq。这个函数名字起的不好,直观上以为是和softirq相关,实际上其实是触发了IPI中断。

(h)在multi processor环境下,当processor状态发送变化的时候(例如online,offline),需要把这些事件通知到GIC。而GIC driver在收到来自CPU的事件后会对cpu interface进行相应的设定。

3、GIC硬件初始化

(1)Distributor初始化,代码如下:

static void __init gic_dist_init(struct gic_chip_data *gic)

{

unsigned int i;

u32 cpumask;

unsigned int gic_irqs = gic->gic_irqs;---------获取该GIC支持的IRQ的数目


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-76887-11.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 周艳红
      周艳红

      小米的任何产品都是垃圾

    • 孙文华
      孙文华

      2一个不如一个

    • 承天后耶律普速完
      承天后耶律普速完

      打路过的还不如先干掉霸占的

    每日福利
    热点图片
    拼命载入中...