IRQTHREAD

Category
아이템: 
포스트 갯수5

[리눅스커널] 인터럽트 후반부 처리: IRQ 스레드의 전체 실행 흐름 정리

By Guillermo Austin Kim | 2020년 4월 25일 | 
[리눅스커널] 인터럽트 후반부 처리: IRQ 스레드의 전체 실행 흐름 정리
지금까지 IRQ 스레드 핸들인 irq_thread() 함수에서 irq_thread_fn() 함수를 호출해 IRQ 스레드 핸들러 함수를 호출하는 과정을 살펴봤습니다. 이번에는 배운 내용을 정리하는 차원으로 IRQ 스레드 전체 실행 흐름을 보면서 정리하는 시간을 갖겠습니다. [그림 6.7] "irq/86-mmc1" IRQ 스레드 실행 흐름도 눈끔 화살표는 함수 실행 흐름 방향입니다. 위 그림에서 실행 순서별 동작을 살펴보겠습니다. [1]: arch_cpu_idle() 함수 실행 중 86번 인터럽트가 발생해서 인터럽트 벡터인 __irq_svc가 실행합니다. [2]: __handle_irq_event_percpu() 함수까지 실행한 후 86번 인터럽트 핸들러인 bcm283

[라즈베리파이][리눅스커널] IRQ Thread는 언제 생성할까?[2] #CS

By Guillermo Austin Kim | 2018년 6월 21일 | 
# 인터럽트 후반부 처리1 IRQ Thread(threaded IRQ) 란 2. 인터럽트 후반부 처리(Bottom Half) 소개3.IRQ Thread는 언제 생성할까?[1] 4. IRQ Thread는 언제 생성할까?[2] 여기까지 request_threaded_irq 함수를 호출하면 결국 kthread_create 함수가 호출되어 IRQ Thread를 생성하는 코드를 짚어 봤습니다. 이제 분석한 대로 라즈베리파이에서 동작하는지 알아봐야겠죠. 이를 알아 보기 위한 코드를 소개할게요.diff --git a/kernel/kthread.c b/kernel/kthread.cindex 1c19edf82..0bc8a0037 100644--- a/kernel/kthread.c+++ b/kernel/kthread.

[라즈베리파이][리눅스커널] IRQ Thread는 언제 생성할까?[1] #CS

By Guillermo Austin Kim | 2018년 6월 19일 | 
[라즈베리파이][리눅스커널] IRQ Thread는 언제 생성할까?[1] #CS
# 인터럽트 후반부 처리1 IRQ Thread(threaded IRQ) 란 2. 인터럽트 후반부 처리(Bottom Half) 소개3.IRQ Thread는 언제 생성할까?[1] IRQ Thread를 생성하기 위해서는 request_threaded_irq 을 호출하면 IRQ Thread가 생성된다고 설명해 드렸습니다. 사실 request_threaded_irq을 호출할 때 IRQ Thread가 생성되는 것은 아니고 다음 흐름에서 __kthread_create_on_node 함수가 실행할 때 생성됩니다. 우리는 커널 쓰레드를 생성할 때 kthread_create 함수를 호출한다고 배웠죠. IRQ Thread도 이 kthread_create 함수를 호출해서 생성합니다. 이로 I

[라즈베리파이][리눅스커널]IRQ Thread(threaded IRQ) 란 #CS

By Guillermo Austin Kim | 2018년 6월 13일 | 
From [라즈베리파이]인터럽트 후반부 처리(Bottom Half) 소개 #CS http://rousalome.egloos.com/9977984 리눅스 커널을 익히는 과정에서 만나는 걸림돌 중 하나가 어려운 용어입니다. 어려운 개념을 낯선 용어로 설명하니 이해하기 어렵죠. IRQ Thread의 의미를 알기 전에 IRQ란 용어부터 알아볼까요? IRQ는 Interrupt Request의 약자로 하드웨어에서 발생한 인터럽트를 처리 한다는 의미입니다. 조금 더 구체적으로 인터럽트 발생 후 인터럽트 핸들러까지 처리하는 흐름입니다. IRQ Thread란 뭘까요? 인터럽트 핸들러에서는 처리하면 오래 걸리는 일을 수행하는 프로세스입니다. 인터럽트 후반부 처리를 위한 인터럽트 처리 전용 프로세스입니다. 리눅스 커널