인터럽트 핸들러는 비동기 적으로 발생하므로 다른 함수에서 호출 할 수 없습니다. 그런데 왜 리눅스 커널의 인터럽트 핸들러가 값을 반환합니까? 입력 인수는 어떻게 전달됩니까?리눅스 커널에서 인터럽트 핸들러의 반환 값
1
A
답변
3
인터럽트 핸들러에는 몇 가지 이유로 인해 리턴 값이 있습니다.
- 인터럽트 벡터는 여러 장치간에 공유 될 수 있습니다. IRQ_NONE/IRQ_HANDLED를 반환함으로써 인터럽트 처리기는 인터럽트가 특별히 관심이있는 장치와 관련이 있는지 여부를 나타낼 수 있습니다. IRQ_NONE이 반환되면 목록의 다음 처리기를 호출해야합니다.
- IRQ가 공유되지 않더라도 인터럽트 처리기는 인터럽트를 처리하는 데 문제가 있음을 인터럽트 하위 시스템에 알리고 irq 루프에서 시스템이 멈추지 않도록 비활성화해야합니다.
1
인터럽트 핸들러는 인터럽트 벡터가 아닙니다. 인터럽트 벡터는 인터럽트가 트리거 될 때 프로세서가 점프하는 코드입니다. 이것은 총 단순화이지만, 여기 보이는 방법입니다
interrupt_vector {
num = check_interrupt_number()
f = get_interrupt_handler_func(num);
d = get_interrupt_handler_data(num);
/* call interrupt handler */
ret = f(d);
}
그래서 핸들러와 데이터를 함께 등록하고, 인터럽트 벡터 코드 등록 된 데이터를 전달 호출 registererd 핸들러, 및 반환 값을 확인합니다. 물론 우리는 하나의 핸들러 레벨을 가지고 있지만 여러 PCI Irq에 대해 하나의 핸들러를 가지고 있고, 특정 PCI irq에 대해 등록 된 핸들러를 확인한 다음 등록 된 데이터를 전달하는 등의 기능을 수행 할 수 있습니다. ..
물론 실제 코드는 훨씬 더 복잡합니다. 이 lxr link을 사용해 리눅스 커널 소스를 탐색 할 수 있습니다.
0
인터럽트 해당 벡터 코드를 관리 할 수 있도록는 (일반적 86에 EAX와 같은 레지스터에 들어가는) 값을 리턴 할 수 — 인터럽트 핸들러 여러 부착 인터럽트 핸들러 (OS 고유의) 대 벡터 코드 핸들러 체인.
관련 문제
- 1. 리눅스 커널에서 기존 모듈 수정하기
- 2. 리눅스 커널에서 파일에 데이터 추가하기
- 3. 리눅스 커널에서 패킷 생성을위한 튜토리얼
- 4. 리눅스 커널 ICMP 구현 질문 현재 리눅스 커널에서
- 5. 리눅스 커널에서 더블 포인터 사용 해시리스트 구현
- 6. 리눅스 커널에서 파일 읽기 및 쓰기
- 7. 리눅스 커널에서 IPv6 구현에 관한 자료
- 8. 리눅스 커널에서 tcp 처리 후 패킷 처리
- 9. __KERNEL__이 (가) 리눅스 커널에서 사용되는 것은 무엇입니까?
- 10. 인터럽트 처리기의 컨텍스트 스위치
- 11. GPIO 핀 리눅스 (팔)의 인터럽트 핸들러
- 12. 리눅스 커널에서 실행되는 서버. 스레드에서 발생해야하는지 말 것인가?
- 13. 리눅스 소켓 값
- 14. 반환 값
- 15. 반환 값
- 16. 반환 값
- 17. 리눅스 커널에서 첫 번째 프로세스는 어디에서 초기화 되었습니까?
- 18. 리눅스 커널에서 4 개의 세그먼트의 기본 주소가 동일한 이유는 무엇입니까?
- 19. 리눅스 커널에서 spinlock이 ".subsection 1"(또는 ".text.lock.smth")에있는 이유는 무엇입니까?
- 20. 커널 스레드를 사용할 때와 리눅스 커널에서 작업 큐를 사용하는 경우
- 21. 리눅스 커널에서 프로세스 코어 덤프 생성과 관련된 파일
- 22. 인터럽트/인터럽트 처리기 이해, PIC
- 23. 인터럽트 스레딩이란 무엇입니까?
- 24. JQuery와 이벤트 핸들러의 범위
- 25. 서비스와 핸들러의 관계
- 26. OCMock 반환 값
- 27. TranslateAccelerator 반환 값
- 28. ibatis 반환 값
- 29. 생성자 반환 값
- 30. javascript 툴팁 반환 값
'IRQ_WAKE_THREAD'는 최신 Linux 커널에서 지연 처리에도 사용할 수 있습니다. 즉, 현재 프로세스가 인터럽트의 느린 * 부분을 수행하기 위해 인터럽트 될 수 있음을 나타냅니다. –