2012-11-06 2 views
2

Linux 커널 파일 arch/x86/kernel/entry_64.S에서 {interrupt do_IRQ} 명령어의 의미는 무엇입니까? 인터럽트는 명령어 또는 매크로입니까? 정의는 어디에 있습니까? 사용 방법 ?리눅스 커널에서 {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) 하드 인터럽트. 특정 인터럽트 핸들러 루틴 또는 함수를 생성하므로마다

이 호출이 (구조체 pt_regs * REGS) pt_regs 구조형 & 인 그것을 기본적으로 레지스터를 저장하는 기능 do_IRQ 전달 된 파라미터와 관련된 &이라고 u는이 링크를 따라 수 ... 추가 정보를

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

관련 문제