커널
Posts
228 posts![[라즈베리파이] Soft IRQ 서비스는 누가 언제 처리하나? [2] - __do_softirq() 분석](https://img.zoomtrend.com/2018/07/15/c0246238_5b41897524ac4.png)
[라즈베리파이] Soft IRQ 서비스는 누가 언제 처리하나? [2] - __do_softirq() 분석
이제 Soft IRQ 의 핵심 코드인 __do_softirq 함수를 분석할 차례입니다. 전체 코드는 다음과 같습니다.1 asmlinkage __visible void __softirq_entry __do_softirq(void)2{3unsigned long end = jiffies + MAX_SOFTIRQ_TIME;4unsigned long old_flags = current->flags;5int max_restart = MAX_SOFTIRQ_RESTART;6struct softirq_action *h;7bool in_hardirq;8__u32 pending;9int softirq_bit;10//...1112pending = local_softirq_pending();13account_
![[라즈베리파이] Soft IRQ 서비스는 누가 언제 처리하나?[1]](https://img.zoomtrend.com/2018/07/11/c0246238_5b2f2147d745f.png)
[라즈베리파이] Soft IRQ 서비스는 누가 언제 처리하나?[1]
이제 Soft IRQ 기법의 하이라이트인 Soft IRQ 서비스를 처리하는 흐름을 살펴볼 차례입니다. Soft IRQ 서비스는 언제 처리할까요? 아래 Soft IRQ 전체 흐름도와 같이 인터럽트 핸들러를 처리하는 인터럽트 서비스 루틴이 끝나는 시점에 Soft IRQ 서비스 처리를 시작합니다. 그래서 Soft IRQ 서비스 처리를 시작하는 코드를 점검하려면 인터럽트 서비스 루틴이 끝나는 코드부터 확인해야 합니다. 이번 절에서는 Soft IRQ 전체 흐름도에서 볼드체로 된 부분을 점검할 예정이니 눈여겨보세요. 인터럽트 서비스 루틴이 끝나는 코드가 __handle_domain_irq 함수에서 실행하니 우선 이 함수부터 분석해야 합니다. 같이 볼 코드는 다음과 같습니다. 1 int __handle_domai
![[라즈베리파이] Soft IRQ 서비스는 언제 요청하나?](https://img.zoomtrend.com/2018/07/08/c0246238_5b2f1e236798a.png)
[라즈베리파이] Soft IRQ 서비스는 언제 요청하나?
이번 시간에는 Soft IRQ 서비스를 어떻게 요청하는지 배워 보겠습니다. 우리는 이전에 Soft IRQ를 등록하는 과정을 배웠습니다. 다음 코드와 같이 open_softirq 함수를 써서 TIMER_SOFTIRQ 타입의 Soft IRQ 서비스를 등록했습니다.1 void __init init_timers(void)2 {3init_timer_cpus();4open_softirq(TIMER_SOFTIRQ, run_timer_softirq);5 } 그럼 TIMER_SOFTIRQ 타입의 Soft IRQ 서비스를 등록만 하면 핸들러 함수인 run_timer_softirq() 함수가 호출될까요? 그렇지 않습니다. 따로 Soft IRQ 서비스를 요청해야 합니다. 인터럽트 핸들러를 등록하는 과정보다 약간 복잡합니다.
[라즈베리파이] Soft IRQ 서비스 및 서비스 핸들러 등록(디버깅)
# 인터럽트 후반부 처리1 IRQ Thread(threaded IRQ) 란 2. 인터럽트 후반부 처리(Bottom Half) 소개3. IRQ Thread는 언제 생성할까?[1] 4. IRQ Thread는 언제 생성할까?[2] 5. ksoftirqd 쓰레드란6. Soft IRQ 소개7. Soft IRQ 서비스 및 서비스 핸들러 등록(코드 분석)8. Soft IRQ 서비스 및 서비스 핸들러 등록(디버깅) 라즈베리파이에서 동작 확인라즈베리안에서 Soft IRQ 등록하는지 알려면 어떻게 해야 할까요? 다음 패치를 적용 후 라즈베리파이를 실행하면 됩니다.diff --git a/kernel/softirq.c b/kernel/softirq.cindex 3f3fbc230..b0e75e8d0 100644--- a

