Linux内核之中断
文章平均质量分 65
qxqxa
弱小就以弱小的方式前进吧!
展开
-
详解sotfirq和tasklet
软中断是在硬件中断推出后执行。软中断不能被自己打断(即单个cpu上软中断不能嵌套执行),只能被硬件中断打断(上半部)。可以并发运行在多个CPU上(同一类型也可以)。所以软中断必须设计为可重入的函数(允许多个CPU同时操作),因此也需要使用自旋锁来保其数据结构。原创 2024-07-29 16:50:48 · 852 阅读 · 0 评论 -
linux系统休眠时的中断操作
无论是gpio控制器,还是其他外设控制器,捕获到中断,会发给gic;gic根据mask决定是否分发给cpu;cpu如果调用local_irq_disable,就不会来响应中断信号。linux进入休眠,中断相关操作如下:1.会打开中断控制器的irq_set_wake函数(有些架构有这个实现;有些架构,打开中断就有这个功能),来一一打开,那些标记了唤醒功能的中断的唤醒功能;2.然后关闭其他没标记唤醒功能的中断3.打开cpu的中断响应对应代码如下int error;if (error)原创 2024-05-08 16:13:24 · 568 阅读 · 0 评论 -
ARM体系在linux中的中断抢占
gic主要提供如下功能,主要是四种中断服务,中断掩码和优先级gic框架中的各组件的通路如下中断最终分发给一个或多个PE的cpu interface,通过硬件中断号来区分各中断,各PE的运行优先级就是当前运行中断的优先级;一个中断是否进入PE,会先看优先级掩码能否到PE;还要通过中断抢占设置,和运行优先级,来判断是否能抢占当前PE。原创 2024-02-19 15:30:24 · 624 阅读 · 0 评论 -
arm64之系统调用原理
SYSCALL_DEFINE3(open,***)展开就是 sys_open,就是系统调用的内核实例fs/open.cif (fd)return fd;原创 2024-02-01 14:57:55 · 483 阅读 · 0 评论 -
如何获取irq来注册中断处理函数
通过,这篇我们可以总结为下图。原创 2023-12-05 23:16:53 · 561 阅读 · 1 评论 -
简述arm的irq中断
kernel_entry会将CPU寄存器按照pt_regs结构体的定义将第一现场保存到内核栈上并标记存储的位置,kernel_exit再恢复出来,arm体系内核栈和中断栈是共享的。找个通用的drivers/irqchip/irq-gic-v3.c可以看到set_handle_irq(gic_handle_irq),是通过gic读出硬件中断号。再通过generic_handle_irq去找到request_irq时注册后,对应irq_desc数组找到对应的中断处理函数去执行。原创 2023-09-16 17:10:40 · 318 阅读 · 1 评论