2012-11-06 114 views
2

linux內核文件arch/x86/kernel/entry_64.S中的指令{interrupt do_IRQ}的含義是什麼?是中斷一條指令還是一個宏?定義在哪裏?如何使用它 ?Linux內核中的指令{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 */ 

回答

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 

我不知道做什麼,雖然。 :-)

0

中斷基本上用於暫停當前中斷的cpu核心上運行的所有當前進程&然後運行生成的中斷相關工作。 &中斷相關的工作是使用已註冊的處理程序或函數完成的。

中斷可能由H/W或S/W產生。並且基本上有兩種類型的中斷... 1-)軟中斷& 2-)硬中斷。

所以每當一個特定中斷產生其處理程序例程或函數被調用&此呼叫與在功能do_IRQ傳遞的參數(結構pt_regs * REG)中其是pt_regs結構類型&它基本上存儲寄存器相關值...

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

&更多信息u能請點擊此鏈接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

相關問題