linux内核中的指令{interrupt do_IRQ}是什么意思?

时间:2012-11-06 02:00:35

标签: linux linux-kernel interrupt

linux内核文件arch / x86 / kernel / entry_64.S中的指令{interrupt do_IRQ}是什么意思?中断指令还是宏?定义在哪里?怎么用?

847 common_interrupt: 
848         XCPT_FRAME    
849         addq $-0x80,(%rsp)              /* Adjust vector to [-256,-1] range */
850         interrupt do_IRQ
851         /* 0(%rsp): old_rsp-ARGOFFSET */

2 个答案:

答案 0 :(得分:1)

宣布上面的距离很短:

/* 0(%rsp): ~(interrupt number) */
    .macro interrupt func
    /* reserve pt_regs for scratch regs and rbp */
    subq $ORIG_RAX-RBP, %rsp
    CFI_ADJUST_CFA_OFFSET ORIG_RAX-RBP
    call save_args
    PARTIAL_FRAME 0
    call \func
    .endm
但是,我不知道那是做什么的。 : - )

答案 1 :(得分:0)

中断主要用于暂停当前中断的cpu核心上运行的所有当前进程。然后运行生成的中断相关工作。 &安培;与中断相关的工作是通过已注册的处理程序例程或函数完成的。

中断可能由H / W或S / W产生。基本上有两种类型的中断,如... 1-)软中断& 2-)硬中断。

因此,无论何时生成特定中断,其处理程序例程或函数都会被调用。这个调用与函数 do_IRQ(struct pt_regs * regs)中传递的参数有关,它是pt_regs结构类型&它基本上将寄存器值存储为...

struct pt_regs{
unsigned long r0;
unsigned long r1;
...
...
};

&安培;欲了解更多信息,您可以点击此链接https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Reference_Guide/chap-Realtime_Reference_Guide-Hardware_interrupts.html