Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

93258
1323
114595


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

1 2 3 4 5 6 7 8 9 10 다음

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

6.3.4 라즈베리파이에서 IRQ 스레드 생성 과정 디버깅하기이제까지 request_threaded_irq() 함수를 호출하면 kthread_create() 함수를 실행해서 IRQ 스레드를 생성하는 과정까지 짚어 봤습니다. 이제 디버깅 실습으로 배운 내용을 다지는 시간을 갖겠습니다.패치 코드 소개먼저 디버깅을 위한 패치 코드를 소개합니다.diff --g...

[리눅스커널] IRQ 스레드 생성 예제 코드 분석 - 다른 리눅스 시스템

6.3.3 다른 리눅스 시스템에서 IRQ 스레드 생성 예제 코드 분석라즈비안에선 92번 인터럽트를 처리할 한 개 IRQ 스레드만 생성합니다. 1개 IRQ 스레드만 생성하는 코드 밖에 없으니 이번에는 다른 리눅스 시스템에서 IRQ 스레드를 생성하는 예제 코드를 소개합니다이번에는 request_threaded_irq() 함수를 호출해서 IRQ 스레드를 생성...

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

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

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

5.6 인터럽트 발생은 언제 지연해야 할까?이번 장에서 인터럽트가 발생하면 프로세스는 하던 일을 멈추고 인터럽트 벡터를 실행하여 인터럽트를 처리한다고 배웠습니다. 하지만 다음과 같은 특정 코드 구간에서 인터럽트가 발생하면 안 될 때가 있습니다. 1. SoC에서 정의한 하드웨어 블록에 정확한 시퀀스(Sequence)을 줘야 할 경우&nb...

[리눅스커널][인터럽트] 인터럽트 디스크립터: 인터럽트 발생 횟수 확인하기

5.5.2 인터럽트 발생 횟수는 어떻게 저장할까?대부분 디바이스 드라이버는 인터럽트 핸들러로 하드웨어 디바이스와 통신합니다. 예를 들면 터치 디바이스에서 사용자가 터치를 입력하면 터치 디바이스에서 올려주는 인터럽트로 터치 입력이 발생했다고 알려줍니다. 디바이스 드라이버에서 인터럽트 핸들러를 등록한 후 해당 디바이스가 제대로 인터럽트를 발생시키는...

[리눅스커널][인터럽트] 인터럽트 디스크립터(struct irq_desc)에 대해서

인터럽트 디스크립터란프로세스마다 프로세스를 관리하는 태스크 디스크립터(struct task_struct)가 있습니다. 페이지도 페이지를 관리하는 페이지 디스크립터(struct page)가 있죠. 마찬가지로 리눅스 커널에서 발생하는 인터럽트 종류만큼 인터럽트 디스크립터가 있습니다. 만약 인터럽트 개수가 34개면 이를 관리하는 34개의 인터럽트 디스크립터가...

[리눅스커널][인터럽트] 인터럽트 핸들러 등록하기 - request_irq()

5.4.1 인터럽트 핸들러 등록 시 기본 파라미터해당 인터럽트가 발생하면 해당 인터럽트 핸들러 함수가 호출돼야 합니다. 이를 위해 디바이스 드라이버 코드에서 request_irq 함수을 써서 인터럽트 핸들러를 등록해야 합니다. 그럼request_irq 함수를 실제 어떻게 사용하는지 라즈베리안 리눅스 커널 코드를 잠깐 살펴보겠습니다. [drive...

[리눅스커널][인터럽트] 인터럽트 핸들러 호출 코드 알아보기

5.3.3. 인터럽트 핸들러 호출 흐름 분석하기이전 소절에서 인터럽트가 발생하면 인터럽트 벡터가 실행하는 흐름을 살펴봤습니다. 이어서 커널에서 인터럽트 핸들러까지 어떤 흐름으로 코드가 실행되는지 알아 보겠습니다. 커널 공간에서 프로세스가 실행 도중에 인터럽트가 발생하면 인터럽트 벡터인 __irq_svc 레이블로 시작해서 handle_irq_ev...

[리눅스커널][인터럽트] 인터럽트 컨택스트: in_interrupt() 함수 코드분석

5.2.3 in_interrupt() 함수란리눅스 커널이 실행할 때 수많은 함수가 각자 서로를 호출합니다. 어떤 함수는 프로세스 컨택스트에서 실행(커널 쓰레드)되는데 대부분 함수는 인터럽트 컨택스트, 즉 인터럽트 처리하는 도중 호출될 수 있습니다. 만약 현재 실행하는 코드가 인터럽트를 처리 중이면 더 빨리 처리해야겠죠? 인터럽트 서비스 루틴은 ...

[리눅스커널][인터럽트] 인터럽트 컨택스트란 - in_interrupt()

1 2 3 4 5 6 7 8 9 10 다음