interrupt
文章平均质量分 88
showstopper_x
这个作者很懒,什么都没留下…
展开
-
x86 kernel 中断机制分析一——IDT
本篇主要分析IDT的初始化流程。IDT简介IDT——interrupt description table,用来描述中断异常向量,表中的每一个entry对应一个向量。IDT entry:每个entry为8bytes,有以下关键bit: 16~31:code segment selector 0~15 & 46-64:segment offset (根据以上两项可确定中断处理函数的地址) Typ原创 2016-12-29 15:06:05 · 3563 阅读 · 0 评论 -
x86 kernel 中断分析三——中断处理流程
CPU检测中断CPU在执行每条程序之前会检测是否有中断到达,即中断控制器是否有发送中断信号过来查找IDTCPU根据中断向量到IDT中读取对应的中断描述符表项,根据段选择符合偏移确定中断服务程序的地址见附录2interrupt数组在分析一中,我们看到,填充IDT中断服务程序的是interrupt数组的内容,所以第2步跳转到interrupt数组对应的表项,表项的内容之前也已分析过push vector原创 2017-01-03 15:12:59 · 3706 阅读 · 0 评论 -
kernel中断分析七——tasklet
Abstract在Kernel 中断分析六——softirq中,分析了软中断的处理流程,那么bottom half还剩下tasklet与waitqueue。tasklet是在软中断基础上实现的一种延迟机制,当然同样运行在中断上下文,而waitqueue运行在进程上下文,允许睡眠。Taskletkernel中有定义了十种软中断类型,其中HI_SOFTIRQ、TASKLET_SOFTI原创 2017-01-10 09:58:24 · 1497 阅读 · 0 评论 -
Kernel 中断分析六——softirq
Abstract目前kernel中的中断机制主要有top half、bottom half(softirq、tasklet、waitqueue)、threaded irq handler。top half不用赘述,我把threed irq handler与bottom half区分开,是因为他们有以下区别: 1、调度方式 threaded irq handler被系统调度器调度,botto原创 2017-01-08 23:47:05 · 2386 阅读 · 0 评论 -
kernel 中断分析五——irq_thread
前言在x86 kernel 中断分析三——中断处理流程中,对于线程化中断处理函数,handle_irq_event_percpu调用了irq_wake_thread唤醒action->thread,此处唤醒的thread创建于__setup_irq,代码如下: 947 t = kthread_create(irq_thread, new, "irq/%d-%s", ir原创 2017-01-06 11:27:50 · 4163 阅读 · 0 评论 -
kernel 中断分析之四——中断申请 [下]
前言在kernel 中断分析之四——中断申请 [上]中,request_irq、request_threaded_irq、setup_irq、setup_percpu_irq、request_percpu_irq最终都调用了__setup_irq,本篇对该API进行分析,由于代码比较长,分段分析。请注意,在分析过程中,遇到一些拿捏不定的地方,以用粗体表示,如果有理解错误,欢迎指正。__原创 2017-01-05 10:28:03 · 3493 阅读 · 0 评论 -
kernel 中断分析之四——中断申请[上]
前言从分析三可知,中断处理最终调用了irqaction的handler和thread_fn,分别对应interrupt context和process context。 对应的中断服务例程是在驱动初始化阶段,通过request_irq或者request_threaded_irq进行申请,注册的,本篇主要对这两个接口进行分析。request_threaded_irq关于中断线程化的目的原创 2017-01-04 22:43:13 · 3343 阅读 · 0 评论 -
Moving interrupts to threads(翻译)
翻译一篇来自lwn.net上关于kernel中断线程化的文章,比较老(08年),但还是很有学习意义。kernel中的响应延迟主要来自于处理硬件中断,因为处理中断的过程中,其他中断被block。为此,realtime tree有一个叫做“线程化中断处理(threaded interrupt handler)”的新功能,目的在于将关闭中断的时间减小到最低,将其余的处理过程(其实就是bottom half翻译 2016-12-28 11:07:42 · 560 阅读 · 0 评论 -
x86 kernel 中断机制分析二——irq_desc
简介irq_desc数据结构用于描述一个irq对应的各种信息,主要有以下方面: irq_data,描述该irq的irq number,irq chip,irq domain,处理器亲和力等等 handle_irq,highlevel irq-events handler,流处理函数 irq_action,一个链表,每个成员包含该irq中断处理函数等信息 depth,中断嵌套深度 name,原创 2016-12-29 16:29:58 · 2562 阅读 · 0 评论 -
kernel 系统调用----system call
Init在trap_init中对SYSCALL_VECTOR(编号0x80)的向量进行初始化。 808 set_system_trap_gate(SYSCALL_VECTOR, &system_call);将system call初始化为trap门,加入到IDT table中,发生中断以后,会跳转到对应system_call的地址去执行后续的中断流程。发生中断到跳转执行中断向量的过程在ker原创 2017-02-28 15:56:05 · 1574 阅读 · 0 评论