2

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 */
4

2 に答える 2

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

しかし、それが何をするのかはわかりません。:-)

于 2012-11-06T02:38:52.063 に答える
0

割り込みは基本的に、現在中断されている CPU コアで実行されている現在のすべてのプロセスを中断し、生成された割り込み関連の作業を実行するために使用されます。& 割り込み関連の作業は、登録されているハンドラ ルーチンまたは関数で行われます。

割り込みは、H/W または S/W によって生成されます。基本的に、1-) ソフト割り込みと 2-) ハード割り込みの 2 種類の割り込みがあります。

そのため、特定の割り込みが生成されるたびに、そのハンドラー ルーチンまたは関数が呼び出され、この呼び出しは関数do_IRQ(struct pt_regs *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

于 2012-11-06T06:20:57.353 に答える