2012-11-06 77 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

相关问题