本节学习下什么是irq domain, 以及irq domain的作用。...linux内核为了应对此问题,引入了IRQ-domain的概念 irq-domain的引入相当于一个中断控制器就是一个irq-domain。就是一个中断区域。...利用树状的结构可以充分的利用irq数目,而且每一个irq-domain区域可以自己去管理自己interrupt的特性 IRQ-Domain的作用 咋们通过/proc/interrupt的值来看下irq-domain...desc) return NULL; /* allocate based on nr_cpu_ids */ desc->kstat_irqs = alloc_percpu...*irq_to_desc(unsigned int irq) { return radix_tree_lookup(&irq_desc_tree, irq); } struct irq_desc
unsigned *)0x4a000008) //Interrupt mask control #define rPRIORITY (*(volatile unsigned *)0x4a00000c) //IRQ..._ISR_STARTADDRESS+0x10)) #define pISR_RESERVED (*(unsigned *)(_ISR_STARTADDRESS+0x14)) #define pISR_IRQ
local_irq_disable: local_irq_disable的功能是屏蔽当前CPU上的所有中断,通过操作arm核心中的寄存器来屏蔽到达CPU上的中断,此时中断控制器中所有送往该CPU上的中断信号都将被忽略...; } kernel/include/linux/irqflags.h #define raw_local_irq_disable() arch_local_irq_disable() #define...该irq num对应的irq handler不会在任何一个CPU上执行。这个操作是通过设置中断控制器中的寄存器来对指定中断进行屏蔽,而其他未屏蔽的中断依然可以正常送往CPU。...会在所有的CPU上把中断号给屏蔽掉。...当在一个CPU上调用了disable_irq的时候,可能另一个CPU已经接收了中断了,但是在handler的处理中可以看到,它会判断是否被其它CPU disable了,如果disable了,它会把这个中断标志设置为
iowait%wa代表等待 I/O 的 CPU 时间。irq%hi代表处理硬中断的 CPU 时间。softirq%si代表处理软中断的 CPU 时间。...Linux的CPU正是采用硬中断与软中断结合的方式来处理问题的。...: 49 7 NET_RX: 1136736 1506885 BLOCK: 0 0 IRQ_POLL: 0 0 TASKLET:...#每隔 5 秒输出 1 组数据 #pidstat -w 5 Linux 4.15.0 (ubuntu) 09/23/18 _x86_64_ (2 CPU) 08:18:26 UID...#mpstat Linux 4.15.0-46-generic(ubuntu) 10/30/2019 _x86_64_(4 CPU) 02:59:04 AM CPU %usr %nice %sys
EXPORT声明一个符号Default_IRQ_ISR可以被其它文件引用 Default_IRQ_ISR ;定义一个Default_IRQ_ISR,并且啥也不干 B ....;B Default_IRQ_ISR代表啥都不干(因为上面对Default_IRQ_ISR中的操作定义就是啥都没干) EINT1_Handle B Default_IRQ_ISR...B Default_IRQ_ISR TICK_Handle B Default_IRQ_ISR WDT_AC97_Handle B Default_IRQ_ISR...Default_IRQ_ISR ISR_SDI_Handle B Default_IRQ_ISR ISR_SPI0_Handle B Default_IRQ_ISR ISR_UART1...B Default_IRQ_ISR ISR_ADC_Handle B Default_IRQ_ISR IRQ_Handler PROC EXPORT IRQ_Handler
EXPORT声明一个符号Default_IRQ_ISR可以被其它文件引用 Default_IRQ_ISR ;定义一个Default_IRQ_ISR,并且啥也不干 B ....;B Default_IRQ_ISR代表啥都不干(因为上面对Default_IRQ_ISR中的操作定义就是啥都没干) EINT1_Handle B Default_IRQ_ISR..._Handle B Default_IRQ_ISR ISR_UART2_Handle B Default_IRQ_ISR ISR_LCD_Handle B Default_IRQ_ISR...Default_IRQ_ISR ISR_DMA3_Handle B Default_IRQ_ISR ISR_SDI_Handle B Default_IRQ_ISR ISR_SPI0...B Default_IRQ_ISR ISR_ADC_Handle B Default_IRQ_ISR IRQ_Handler PROC EXPORT IRQ_Handler
EXPORT声明一个符号Default_IRQ_ISR可以被其它文件引用 Default_IRQ_ISR ;定义一个Default_IRQ_ISR,并且啥也不干 B ....;B Default_IRQ_ISR代表啥都不干(因为上面对Default_IRQ_ISR中的操作定义就是啥都没干) EINT1_Handle B Default_IRQ_ISR...B Default_IRQ_ISR TICK_Handle B Default_IRQ_ISR WDT_AC97_Handle B Default_IRQ_ISR...Default_IRQ_ISR ISR_TIMER3_Handle B Default_IRQ_ISR ISR_TIMER4_Handle B Default_IRQ_ISR ISR_UART2...Default_IRQ_ISR ISR_SDI_Handle B Default_IRQ_ISR ISR_SPI0_Handle B Default_IRQ_ISR ISR_UART1
Interrupt mode control INTMSK EQU 0x4a000008 ;Interrupt mask control PRIORITY EQU 0x4a00000c ;IRQ...SUB_STACK_SIZE EQU 128 ;定义变量子栈大小 STACK_BASE EQU (0x00001000) ;定义栈的基址 IRQStack_BASE EQU STACK_BASE ;定义IRQ
查看 CPU 物理个数 CPU 物理个数是指 cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 查看 CPU 逻辑个数 cat /...proc/cpuinfo | grep processor | wc -l 查看 CPU 是多少核 cat /proc/cpuinfo | grep cores | uniq 关于 top 查看 CPU...逻辑个数 默认情况下,top 显示的是逻辑个数,当然如果是在 CPU 较强的服务器上想用 top 来查看 CPU 逻辑个数,往往会因为 terminal 太小而无法显示,建议还是按照上述方法来做。...学习资料 关于 CPU 规格,可以从英特尔官网找到一些具体型号的资料来学习。
SUB_STACK_SIZE EQU 128 ;定义变量子栈大小 STACK_BASE EQU (0x00001000) ;定义栈的基址 IRQStack_BASE EQU STACK_BASE ;定义IRQ...unsigned *)0x4a000008) //Interrupt mask control #define rPRIORITY (*(volatile unsigned *)0x4a00000c) //IRQ..._ISR_STARTADDRESS+0x10)) #define pISR_RESERVED (*(unsigned *)(_ISR_STARTADDRESS+0x14)) #define pISR_IRQ
Interrupt mode control INTMSK EQU 0x4a000008 ;Interrupt mask control PRIORITY EQU 0x4a00000c ;IRQ
CPU的个数 cat /proc/cpuinfo|grep "processor"|wc -l 3、查看CPU是几核 cat /proc/cpuinfo|grep "cores"|uniq 4、查看CPU...的主频 cat /proc/cpuinfo|grep MHz|uniq 5、查看当前操作系统内核信息 uname -a Linux dev 2.6.32-358.6.2.el6.x86_64 #1 SMP...Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux 6、查看当前操作系统发行版信息 cat /etc/issue CentOS release...(R) CPU E5410 @ 2.33GHz (看到有8个逻辑CPU, 也知道了CPU型号) 8、 cat /proc/cpuinfo | grep flags | grep ' lm ' | wc...) 10、 getconf LONG_BIT 32 (说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
有点傻眼了,我竟然从来没想过这个问题。话说,托管在IDC机房的服务器需要关注硬件温度么?
1.基本概念 物理CPU数 主板上实际插入的CPU数量,可以数不重复的physical id 有几个(physical id) CPU核数 单块CPU上面能处理数据的芯片组的数量,如双核、四核等...(CPU cores) 逻辑CPU数 一般情况下,逻辑CPU数=物理CPU个数每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术(简单来说,它可使处理器中的1颗内核如2颗内核那样在操作系统中发挥作用...这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑CPU=物理CPU个数每颗核数*2) 它们之间的关系 总核数 = 物理CPU个数 * 每颗物理CPU的核数 总逻辑...CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 2.查看物理CPU的个数 $ cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc...-l 2 3.查看逻辑CPU个数 $ cat /proc/cpuinfo |grep "processor"|wc -l 24 4.查看CPU核数 $ cat /proc/cpuinfo |grep
本文记录Linux系统获取CPU信息方法。...命令 1 cat /proc/cpuinfo 得到输出信息: processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 63...model name : Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz stepping : 2 microcode : 0x43 cpu MHz : 1200.000...63 Model name: Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz Stepping: 2 CPU MHz:...2500.000 CPU max MHz: 3300.0000 CPU min MHz: 1200.0000 BogoMIPS:
EXPORT声明一个符号Default_IRQ_ISR可以被其它文件引用 Default_IRQ_ISR ;定义一个Default_IRQ_ISR,并且啥也不干 B ....Default_IRQ_ISR TICK_Handle B Default_IRQ_ISR WDT_AC97_Handle B Default_IRQ_ISR ISR_TIMER0...Default_IRQ_ISR ISR_LCD_Handle B Default_IRQ_ISR ISR_DMA0_Handle B Default_IRQ_ISR ISR_DMA1...B Default_IRQ_ISR ISR_IIC_Handle B Default_IRQ_ISR ISR_UART0_Handle B Default_IRQ_ISR...B Default_IRQ_ISR ISR_ADC_Handle B Default_IRQ_ISR IRQ_Handler PROC EXPORT IRQ_Handler
EXPORT声明一个符号Default_IRQ_ISR可以被其它文件引用 Default_IRQ_ISR ;定义一个Default_IRQ_ISR,并且啥也不干 B ....;B Default_IRQ_ISR代表啥都不干(因为上面对Default_IRQ_ISR中的操作定义就是啥都没干) EINT1_Handle B Default_IRQ_ISR...Default_IRQ_ISR ISR_UART2_Handle B Default_IRQ_ISR ISR_LCD_Handle B Default_IRQ_ISR ISR_DMA0...B Default_IRQ_ISR ISR_USBH_Handle B Default_IRQ_ISR ISR_IIC_Handle B Default_IRQ_ISR...Default_IRQ_ISR ISR_ADC_Handle B Default_IRQ_ISR IRQ_Handler PROC EXPORT IRQ_Handler
大家都知道,ARM有IRQ, FIQ, USR,SVC,ABORT等各种模式。当系统收到IRQ的时候,会进入ARM的IRQ模式。...那么,ARM Linux各种驱动的中断服务程序工作在ARM的IRQ模式吗? 答案是否定的。 我们加一段汇编来读CPSR: ? 然后我们随便找一个ARM Linux的中断服务程序去打印CPSR: ?...然后我们发现打印出来的值是: cpsr:40000193 低8位的二进制是10010011 那么对应ARM CPSR的查询,可以看出CPU处于ARM的SVC模式(低5位是10011),而且I bit被设置...(第7位是1),所以是禁止IRQ的。...可见,ARM Linux最初进入IRQ模式后,比较快速地从IRQ模式切换到了SVC模式,但是这个时候,并没有使能CPSR的I bit,所以仍然是禁止其他中断嵌套进入的。
领取专属 10元无门槛券
手把手带您无忧上云