![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux内核之中断
文章平均质量分 57
qxqxa
这个作者很懒,什么都没留下…
展开
-
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 · 414 阅读 · 0 评论 -
ARM体系在linux中的中断抢占
gic主要提供如下功能,主要是四种中断服务,中断掩码和优先级gic框架中的各组件的通路如下中断最终分发给一个或多个PE的cpu interface,通过硬件中断号来区分各中断,各PE的运行优先级就是当前运行中断的优先级;一个中断是否进入PE,会先看优先级掩码能否到PE;还要通过中断抢占设置,和运行优先级,来判断是否能抢占当前PE。原创 2024-02-19 15:30:24 · 591 阅读 · 0 评论 -
arm64之系统调用原理
SYSCALL_DEFINE3(open,***)展开就是 sys_open,就是系统调用的内核实例fs/open.cif (fd)return fd;原创 2024-02-01 14:57:55 · 407 阅读 · 0 评论 -
如何获取irq来注册中断处理函数
通过,这篇我们可以总结为下图。原创 2023-12-05 23:16:53 · 459 阅读 · 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 · 252 阅读 · 1 评论