Guillermo Austin Kim

Sources

Posts

998 posts
[라즈베리파이] Soft IRQ 서비스는 언제 요청하나?

[라즈베리파이] Soft IRQ 서비스는 언제 요청하나?

Guillermo Austin Kim|2018년 7월 8일

이번 시간에는 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 서비스 및 서비스 핸들러 등록(디버깅)

Guillermo Austin Kim|2018년 7월 4일

# 인터럽트 후반부 처리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

[라즈베리파이] Soft IRQ 서비스 및 서비스 핸들러 등록(코드 분석)

Guillermo Austin Kim|2018년 7월 2일

# 인터럽트 후반부 처리1 IRQ Thread(threaded IRQ) 란 2. 인터럽트 후반부 처리(Bottom Half) 소개3. IRQ Thread는 언제 생성할까?[1] 4. IRQ Thread는 언제 생성할까?[2] 5. ksoftirqd 쓰레드란6. Soft IRQ 소개7. Soft IRQ 서비스 및 서비스 핸들러 등록(코드 분석) Soft IRQ를 설명하면서 낯선 용어를 설명했는데, 이제부터 그 의미를 하나하나씩 살펴 보겠습니다. Soft IRQ 서비스란 용어부터 배워볼까요? Soft IRQ 서비스를 빨리 이해하려면 코드를 먼저 봐야 합니다. Soft IRQ 서비스는 아래 enum으로 정의한 코드와 같습니다.[include/linux/interrupt.h]enum{ HI_SOFTIRQ=0

[라즈베리파이] Soft IRQ 소개

[라즈베리파이] Soft IRQ 소개

Guillermo Austin Kim|2018년 6월 28일

Soft IRQ는 리눅스 커널 시스템 핵심 기능 중 하나입니다. 리눅스 커널의 타이머, 스케쥴링은 물론 네트워크 시스템과 연관돼 있죠. 그만큼 Soft IRQ는 구조가 복잡해서 전체적인 큰 그림을 그리며 개념을 익히기 힘듭니다. 하지만 Soft IRQ 핵심 개념은 뭐니해도 인터럽트 후반부 처리라고 할 수 있습니다. 그래서 이번 절에서는 Soft IRQ를 인터럽트 후반부 처리 중심으로 알아볼 예정입니다. 이 개념을 정확히 익힌 다음 Soft IRQ에서 프로세스, 타이머 혹은 네트워크 시스템을 어떻게 처리하는지 알아보는 것이 좋습니다. Soft IRQ에 대해 알아보기 전에 우선 Soft IRQ를 왜 알아야 하는지 생각해 봅시다.1. 리눅스 커널 입문자를 벗어나 중급 수준 개발자가 되려면 Soft IR

[리눅스커널][Trace32] wakelock 디버깅 - container_of

Guillermo Austin Kim|2018년 6월 26일

[crash-utility] wakelock 디버깅(rbtree: wakelocks_tree)[crash-utility]wakelock - rbtree debugging(디버깅) [리눅스커널][Trace32] wakelock 디버깅 - container_of[Kernel] wakelock debug patch 이번 시간에는 wakeup_sources이란 링크드 리스트를 통해 wakelock 디버깅을 합시다.이전에는 crash-utility를 썻는데 이번에는 Trace32를 쓰겠습니다. 개발자는 다양한 툴을 써야 한 가지 툴에 종속된 노예 개발자가 되는 것을 피할 수 있습니다.또한 각 툴의 장점을 잘 활용할 수도 있습니다. 먼저, 다음 T32 명령어를 입력해서 offsetof와 container_of