/proc/irq/default_smp_affinity 指定了默认情况下未激活的IRQ的中断亲和掩码(affinity mask).一旦IRQ被激活,它将被设置为默认的设置(即default_smp_affinity中记录的设置). 该文件能被修改. 默认设置是0xffffffff. bitmask计算方法 首先我们来看看smp_affinity文件的内容 1 2 root@hostname:/home/igi# cat /pro...
smp_affinity_list:是一个alternative方式去设置CPU affinity, 是一个可以handler这个IRQ的CPU list。 spurious:可以获得该irq被处理和未被处理的次数的统计信息。 此外/proc/irq/default_smp_affinity里面记录了对于未激活(non-allocated/activated) 的IRQ的CPU affinity bitmask。因为这些未激活的IRQ没有自己的subdirecto...
/* create /proc/irq/<irq>/smp_affinity */ proc_create_data("smp_affinity", 0644, desc->dir, &irq_affinity_proc_fops, (void *)(long)irq); /* create /proc/irq/<irq>/affinity_hint */ proc_create_data("affinity_hint", 0444, desc->dir, &irq_affinity_hint_proc_fops, (void *)(...
smp_affinity 文件默认是全部ffffffff,8个f就是16的8次方位,一般一台机就几只cpu,所以够了,echo 3 > /proc/irq/24/smp_affinity 就是分配第一第二只cpu给该irq。 smp_affinity 具体定义: IRQ Affinity Binding IRQ’s to a group of CPU’s is a new feature of the 2.4 kernel. While it was orig...
drivers/irqchip/irqchip.c void __init irqchip_init(void) { of_irq_init(__irqchip_of_table); // 参数是中断控制器匹配表的起始地址__irqchip_of_table ... } (1)函数of_irq_init driver/of/irq.c /** * of_irq_init - Scan and init matching interrupt controllers in DT ...
/proc/irq/default_smp_affinity指定了默认情况下未激活的IRQ的中断亲和掩码(affinity mask)。一旦IRQ被激活,它将被设置为默认的设置(即default_smp_affinity中记录的设置),该文件能被修改,默认设置是f。 三.中断的分类 1.硬中断 1)硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它...
irq描述结构struct irq_desc 中断子系统的proc文件接口 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并...
除了通过sysfs接口来配置smp_affinity,用户还可以通过使用工具来进行配置。例如,可以使用irqbalance工具来自动地为中断处理程序分配CPU核心。irqbalance会根据系统的负载情况来调整中断处理程序的CPU核心绑定,从而实现动态地优化系统性能。 当用户完成了对smp_affinity的配置之后,需要重启系统才能使配置生效。在系统重启后,smp...
在上述示例中,IRQ 0在CPU0上运行,IRQ 1在CPU0上运行,IRQ 8在CPU0上运行,IRQ 9没有绑定到任何一个CPU。 2. lshw:该命令用于显示系统硬件信息,包括IRQ和对应的CPU。在命令行中输入lshw,然后查找IRQ相关的信息即可。 3. cat /proc/irq/IRQ_NUMBER/smp_affinity:将IRQ_NUMBER替换为要查询的IRQ号,该命令可以...
4、 在linux定义的common_interrupt接口中,执行完中断执行环境建立后,会进入generic interrupt layer执行,其首先通过vector查找到irq和对应的irq_desc结构,并执行该结构的handle_irq接口,这个接口就是generic interrupt layer的通用逻辑接口,比如handle_edge_irq/handle_level_irq等;在中断执行的通用逻辑接口中,会通过irq...