
- 2019/04/12 10:20
- rousalome.egloos.com/9990654
- 덧글수 : 5

핑백
Linux Kernel(4.14) Hacks : 5.3.2. 인터럽트 벡터에서 스택 푸쉬 확인 2019-02-06 12:11:02 #
... sp; 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.3.1 인터럽트 벡터 분석하기 2019-02-06 12:26:07 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.1 인터럽트 소개 2019-02-06 12:28:00 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.2 인터럽트 컨택스트 2019-02-06 12:29:29 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.2.3 in_interrupt() 함수란 2019-02-06 12:30:44 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.2.4 인터럽트 컨택스트에서 스케줄링을 하면? 2019-02-06 12:31:47 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.4 인터럽트 핸들러는 어떻게 등록할까? 2019-02-06 12:32:04 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.3.3 인터럽트 핸들러를 호출 코드 분석하기 2019-02-06 12:33:35 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 2019-02-06 12:34:26 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.7.1 proc/interrupts로 인터럽트 확인하기 2019-02-06 12:39:43 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.7.2 ftrace로 인터럽트 세부 동작 디버깅하기 2019-02-06 12:40:23 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 5.5 인터럽트 디스크립터 2019-02-06 12:41:41 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : 리눅스 커널 레시피(5월 출간 예정) 전체 목차 2019-02-07 22:37:53 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : [Linux][Kernel] 인터럽트 - request_threaded_irq 기초 2019-02-08 07:57:21 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.14) Hacks : [Linux][Kernel] 인터럽트(Interrupt) - request_threaded_irq overview(1) 2019-02-08 07:58:49 #
... 5.4.1 인터럽트 핸들러 등록 시 전달한 인자/5.4.2인터럽트 핸들러 등록 동작 확인하기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5.2 인터럽트 디스크립터 자료구 ... more
Linux Kernel(4.19) Hacks : [리눅스커널][인터럽트] 인터럽트 디스크립터: 인터럽트 발생 횟수 확인하기 2019-04-12 10:39:13 #
... 트 핸들러 등록 과정 분석하기/5.4.2 인터럽트 핸들러 초기화 과정 디버깅해보기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5. ... more
Linux Kernel(4.19) Hacks : [리눅스커널][인터럽트] 인터럽트 발생은 언제 지연해야 할까? 2019-04-12 10:39:25 #
... 트 핸들러 등록 과정 분석하기/5.4.2 인터럽트 핸들러 초기화 과정 디버깅해보기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5. ... more
Linux Kernel(4.19) Hacks : [리눅스커널][인터럽트] ftrace로 인터럽트 핸들러 함수를 바로 파악하기 2019-04-12 10:40:38 #
... 트 핸들러 등록 과정 분석하기/5.4.2 인터럽트 핸들러 초기화 과정 디버깅해보기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5. ... more
Linux Kernel(4.19) Hacks : [Linux][Kernel] 인터럽트(Interrupt) - request_threaded_irq overview(1) 2019-04-12 10:54:39 #
... 트 핸들러 등록 과정 분석하기/5.4.2 인터럽트 핸들러 초기화 과정 디버깅해보기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정 5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5 ... more
Linux Kernel(4.19) Hacks : in_interrupt 매크로 2019-04-12 10:55:21 #
... 트 핸들러 등록 과정 분석하기/5.4.2 인터럽트 핸들러 초기화 과정 디버깅해보기 5.4.3 인터럽트 핸들러 등록 시 플래그 설정 5.5 인터럽트 디스크립터 5.5.1 인터럽트 디스크립터란 5.5 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 인터럽트 컨택스트에서 많은 일을 하면 어떻게 될까? 2019-09-08 11:44:48 #
... 인터럽트 핸들러 등록 과정 분석하기/인터럽트 핸들러 초기화 과정 디버깅해보기 인터럽트 핸들러 등록 시 플래그 설정인터럽트 디스크립터 인터럽트 디스크립터란 인터럽트 발생 횟수 확인하기인터 ... more
Linux Kernel(4.19) Hacks : [라즈베리파이] 인터럽트 디버깅 - 인터럽트 핸들러 파악 #CS 2019-09-08 11:45:09 #
... 인터럽트 핸들러 등록 과정 분석하기/인터럽트 핸들러 초기화 과정 디버깅해보기 인터럽트 핸들러 등록 시 플래그 설정인터럽트 디스크립터 인터럽트 디스크립터란 인터럽트 발생 횟수 확인하기인터 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 인터럽트: 리눅스 커널이 처리하는 인터럽트의 주요 개념 2020-04-05 10:51:41 #
... 분석 * 인터럽트 핸들러의 초기화 과정 디버깅 * 인터럽트 핸들러 등록 시 플래그 설정 인터럽트 디스크립터 * 인터럽트 디스크립터란? &nbs ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 인터럽트: 인터럽트를 잘 알아야 하는 이유 2020-04-05 10:51:56 #
... 분석 * 인터럽트 핸들러의 초기화 과정 디버깅 * 인터럽트 핸들러 등록 시 플래그 설정 인터럽트 디스크립터 * 인터럽트 디스크립터란? &nbs ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 인터럽트: 리눅스 커널에서의 인터럽트 처리 흐름 2020-04-05 10:52:10 #
... 분석 * 인터럽트 핸들러의 초기화 과정 디버깅 * 인터럽트 핸들러 등록 시 플래그 설정 인터럽트 디스크립터 * 인터럽트 디스크립터란? &nbs ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 인터럽트: ftrace와 커널 로그로 인터럽트 컨텍스트 확인해보기 2020-04-05 10:53:01 #
... 분석 * 인터럽트 핸들러의 초기화 과정 디버깅 * 인터럽트 핸들러 등록 시 플래그 설정 인터럽트 디스크립터 * 인터럽트 디스크립터란? &nbs ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 인터럽트: 인터럽트 핸들러 초기화 과정 디버깅해보기 2020-04-05 10:55:08 #
... 분석 * 인터럽트 핸들러의 초기화 과정 디버깅 * 인터럽트 핸들러 등록 시 플래그 설정 인터럽트 디스크립터 * 인터럽트 디스크립터란? &nbs ... more
덧글
-
최재국 2020/05/11 00:19 # 삭제 답글
제가 커널 4.19.115 버전에서 디바이스 드라이버 만들고 있는데용
인터럽트 서비스 함수를 수행하는 동안에 다른 인터럽트가 발생하지 않도록 인터럽트 서비스 함수를 등록하려면 플래그를 써야하는데
책에 너무옛날꺼라서 그런지 4.19.115 버전에는 SA_INTERRUPT도 없고 그나마 최근꺼인 IRQF_DISABLED도 없더라고요.
비슷한거 찾아봤는데 아무리 찾아봐도 없더라고용 이럴때는 어떻게 등록하나요??? -
AustinKim 2020/05/11 18:17 #
인터럽트가 발생하면 해당 CPU의 인터럽트 라인을 비활성화한 후 인터럽트 핸들러를 처리하는 구조로 동작합니다.
따라서, 인터럽트 핸들러가 처리 중에 인터럽트를 비활성화하는 부분은 고려하지 않아도 됩니다.
추가로 인터럽트가 발생할 때의 아래와 같은 ftrace 메시지를 보면 d란 알파벳이 보입니다. 이는 해당 CPU의 인터럽트 라인을 비활성화했다는 의미입니다.
kworker/0:1-31 [000] d.h. 592.790968: irq_handler_entry: irq=17 name=3f00b880.mailbox
출처:
https://github.com/wikibook/linux-kernel/blob/master/6%EC%9E%A5.%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8%20%ED%9B%84%EB%B0%98%EB%B6%80%20%EC%B2%98%EB%A6%AC/6.5.2/ftrace_log.c
Thanks,
Austin Kim -
최재국 2020/05/12 13:29 # 삭제 답글
선생님 그럼 우선 순위가 높은 인터럽트가 발생하면 지금 수행중인 인터럽트 서비스를 중지시키고 우선 순위가 높은 인터럽트가 실행이되야하는데
등록할때부터 비활성화가 되면 우선순위라는게 왜있는거죠..ㅠㅠㅠㅠㅠㅠㅠㅠ -
최재국 2020/05/12 14:27 # 삭제
좀 찾아봤는데
인터럽트 핸들러를 등록시키면 디폴트로 인터럽트를 비활성화 되니까 인터럽트 서비스 함수에서 enable_irq() 함수를 쓰면 다른 인터럽트를 허용하게 되기때문에 우선순위가 높은 인터럽트가 실행이 가능하게 되는 것인가요????.. 무식한질문 죄송합니당..ㅠ.ㅠ.ㅠ. -
AustinKim 2020/05/12 14:41 #
리눅스 커널을 처음 접하신다면 '인터럽트'들 사이의 우선 순위는 고려하지 않으셔도 좋습니다. 리눅스 커널에서 인터럽트 사이의 우선순위를 설정하는 함수를 지원하지 않거든요. 외부 주변 기기에서 올려주는 인터럽트보다 시스템 내부에서 발생하는 인터럽트가 우선적으로 처리된다는 정도만 아셔도 개발에 문제가 없을 것입니다.
만약 실전 개발자이시면 인터럽트 컨트롤러 소스와 문서를 분석하시면 되는데, 아래 링크에 있는 정보를 참고하시면 좋을 것 같습니다.
http://jake.dothome.co.kr/ic/
https://developer.arm.com/docs/ihi0048/b/arm-generic-interrupt-controller-architecture-version-20-architecture-specification
Thanks,
Austin Kim
최근 덧글