linux中断子系统
文章平均质量分 78
真胖子
这个作者很懒,什么都没留下…
展开
-
中断子系统( 1)初始化
// 控制单元对中断信号的处理:// 当cpu执行一条指令后,cs和eip包含下一条要执行的指令的逻辑地址,在处理那条指令之前,// 控制单元会检查在运行前一条指令时是否发生了一个中断或异常,如果发生了一个中断或异常,// 控制单元执行下列操作:// 1.确定与中断或异常关联的向量i// 2.读入由idtr寄存器指向的IDT表中的第i项// 3.从gdtr寄存器获得G转载 2014-03-20 15:39:08 · 627 阅读 · 0 评论 -
中断子系统(6)中断嵌套的处理
// current_thread_info()->preempt_count bit划分// /*// * - bits 0-7 are the preemption count (max preemption depth: 256)// * - bits 8-15 are the softirq count (max # of softirqs: 256)// */转载 2014-03-20 20:47:25 · 654 阅读 · 0 评论 -
中断子系统(2)APIC
// io apic、apic// 1.io apic, intel从pentiun III开始引入一种名为I/O高级可编程控制器(io apic)用于代替老式8259A可编程控制器。// 2.apic, cpu内部都包含一个本地apic,每个本地apic都有32位的寄存器,一个内部时钟,一个本地定时设备// 及为本地apic中断保留的两条额外的IRQ线,LINT0和LINT1。所有转载 2014-03-20 15:44:44 · 578 阅读 · 0 评论 -
中断子系统(4)中断入口处理
// 中断入口// 注:gnu 每个符号分属global(被输出)和local(不被输出)两类中的一种。1.1 #define ENTRY(name) \ .globl name; \ ALIGN; \//之后的代码对齐到32字节,使用NOP(0x90)补齐 name:// 代码对齐// .align(n) power-of-2对齐// 4 对齐到16字节, 5 对齐到3转载 2014-03-20 17:02:09 · 726 阅读 · 0 评论 -
中断子系统(3)8259A中断控制器
// 8259A 中的寄存器:// ICW: Initialization Command Word,初始化命令字 寄存器// OCW: Operation Command Word,操作命令字 寄存器,用于控制 8259A// IRR: Interrupt Request Register,中断请求寄存器,共 8bit,对应 IR0~IR7 八个中断管脚。当某个管脚的中断请求到来后,转载 2014-03-20 16:18:45 · 892 阅读 · 0 评论 -
中断子系统(5)电流层中断处理
// 中断电流类型:// 边沿型(edge);// 通过电位变化触发中断(上升沿/下降沿),如果外设希望触发一个中断,它在irq line上发送一个脉冲,// 然后释放irq line恢复到inactive状态。cpu通过检测irq line上的脉冲来触发中断处理函数的执行。// 电平型(level):// 通过转载 2014-03-20 17:24:02 · 613 阅读 · 0 评论 -
中断子系统(7) 中断退出处理
// 中断公共入口1.1 common_interrupt: //所有可屏蔽中断函数的公共入口 SAVE_ALL //寄存器入栈 movl %esp,%eax // eax保存栈顶指针 call do_IRQ //中断处理函数 jmp ret_from_intr //从中断返回// 从中断返回// 函数主要任务:// 1.转载 2014-03-20 21:00:35 · 737 阅读 · 0 评论 -
中断子系统(8)软中断入口
// irq统计信息1.1 typedef struct { unsigned int __softirq_pending;//softirq标志位,32种softirq unsigned long idle_timestamp; unsigned int __nmi_count; //nmi中断发生次数 unsigned int apic_timer_irqs; /* arch dep转载 2014-03-21 12:55:08 · 537 阅读 · 0 评论