Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

43107
469
422675


태그 : interrupt 요약보기전체보기목록닫기

1 2 3 4

[리눅스커널] 인터럽트: 인터럽트를 잘 알아야 하는 이유

커널이 인터럽트를 처리하는 과정과 자료구조를 왜 잘 알아야 할까요? 인터럽트를 처리하는 방식이 시스템 전반에 큰 영향을 끼치기 때문입니다. 또한 리눅스 커널 시스템 전반을 잘 이해하기 위해서도 커널이 인터럽트를 어떻게 처리하는지 잘 알고 있어야 합니다. 또 다른 이유는 다음과 같습니다.  대부분의 리눅스 드라이버는 인터럽트를 통해 하드웨어 디...

[리눅스커널] 인터럽트: 리눅스 커널이 처리하는 인터럽트의 주요 개념

앞에서 인터럽트에 대해 소개했으니 리눅스 커널에서 인터럽트를 처리하는 방식을 이해하기 위해 알아야 할 주요 개념을 소개합니다. 인터럽트 핸들러 인터럽트 벡터  인터럽트 디스크립터  인터럽트 컨텍스트인터럽트 핸들러란?인터럽트가 발생하면 이를 핸들링하기 위한 함수가 호출되는데 이를 인터럽트 핸들러라고 합니다. 예를 들어, 키보드를 ...

[리눅스커널] Soft IRQ 서비스 실행: __do_softirq() 함수 분석

이제 Soft IRQ 의 핵심 코드인 __do_softirq() 함수를 분석할 차례입니다. 분석할 전체 코드는 다음과 같습니다.1 asmlinkage __visible void __softirq_entry __do_softirq(void)2{3 unsigned long end = jiffies + MAX_SOFTIRQ_TIME;4 unsigne...

[리눅스커널] 라즈베리 파이에서 IRQ 스레드 생성 과정 디버깅하기

지금까지 IRQ 스레드를 생성하면 커널 내부에서 다음과 같이 처리한다는 사실을 배웠습니다. request_threaded_irq() 함수를 호출하면 인터럽트 속성을 설정한다.  내부 함수에서 kthread_create() 함수를 실행해서 IRQ 스레드를 생성한다.이번 시간에는 우리가 배운 함수가 실제 리눅스 시스템에서 어떻게 호출되는지 실습...

[리눅스커널] 인터럽트 후반부 처리: IRQ 스레드 소개

리눅스 커널을 익히는 과정에서 만나는 걸림돌 중 하나가 어려운 용어입니다. 어려운 개념을 낯선 용어로 설명하니 이해하기 어려운 것 같습니다. IRQ 스레드에 대해 소개하기 전 IRQ란 용어부터 알아볼까요? IRQ 스레드(threaded IRQ)란IRQ 스레드는 IRQ와 스레드의 합성어입니다. 먼저 IRQ에 대해서 알아볼까요? IRQ는 Inter...

[리눅스커널] 인터럽트 후반부 처리(Bottom Half) 소개

이전에 리눅스 커널이 인터럽트를 어떻게 처리하는지 배웠습니다. 배운 내용을 잠깐 복습해볼까요? 핵심 개념은 다음과 같습니다.첫째, 인터럽트가 발생하면 커널은 실행 중인 프로세스를 멈추고 인터럽트 벡터를 실행해서 인터럽트 핸들러를 실행합니다.둘째, 인터럽트 핸들러는 짧고 빨리 실행해야 합니다.셋째, 인터럽트를 처리하는 구간이 인터럽트 컨택스트인데 이를 i...

[리눅스커널][인터럽트] ftrace로 인터럽트 동작 디버깅하기

이번에는 ftrace로 인터럽트를 트레이싱하는 방법을 소개합니다. * 유튜브 강의 동영상도 있으니 같이 들으시면 좋습니다.  "이 포스팅이 유익하다고 생각되시면 댓글로 응원해주시면 감사하겠습니다.  "혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!" Thank...

[리눅스커널][인터럽트] /proc/interrupts 메시지로 인터럽트 속성 보기

리눅스 proc 파일 시스템에서 인터럽트 동작을 출력하는 기능을 지원합니다. proc/interrupts란 파일을 읽으면 인터럽트의 개수와 종류를 바로 파악할 수 있습니다. * 유튜브 강의 동영상도 있으니 같이 들으시면 좋습니다. "이 포스팅이 유익하다고 생각되시면 댓글로 응원해주시면 감사하겠습니다.  "혹시 궁금한 ...

[리눅스커널][인터럽트] 인터럽트 발생은 언제 지연해야 할까?

디바이스 드라이버를 개발하다 보면 특정 상황에서 인터럽트가 발생하면 안 되는 조건이 있습니다.1. SoC에서 정의한 하드웨어 블록에 정확한 시퀀스를 줘야 할 경우2. 시스템이 유휴 상태에 진입하기 직전의 ‘시스템의 상태 정보’ 값을 저장하는 동작3. 각 디바이스 드라이버가 서스펜드 모드로 진입할 때 디바이스 드라이버에 데이터 시트에서 명시한 대로 정확한...
1 2 3 4