IRQ

포스트: 6|아이템:IRQ(6)
Tags

Posts

6 posts

[리눅스커널] 인터럽트 후반부 처리: IRQ 스레드를 깨우는 코드 분석

Guillermo Austin Kim|2019년 2월 24일

IRQ 스레드는 누가 언제 실행할까? 이번 절에서는 IRQ 스레드가 어떤 과정으로 실행하는지 살펴보겠습니다. IRQ 스레드는 크게 다음 단계로 실행합니다.1. 인터럽트 핸들러에서 IRQ_WAKE_THREAD 반환2. IRQ 스레드 깨움3. IRQ 스레드 핸들러 실행 IRQ 스레드를 실행하는 출발점은 인터럽트 핸들러가 IRQ_WAKE_THREAD 를 반환하는 시점입니다. 이 부분부터 IRQ 스레드를 어떤 과정으로 깨우는지 세부 동작을 점검하겠습니다. IRQ 스레드를 깨우는 코드 분석 인터럽트가 발생하면 인터럽트 핸들러가 실행됩니다. 이 인터럽트 핸들러가 IRQ 스레드 실행의 출발점입니다. 인터럽트 핸들러에서 IRQ_WAKE_THREAD를 반환하면 해당 IRQ 스레드를 깨웁니다. 예를 들어 92번 “m

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

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

Guillermo Austin Kim|2018년 6월 19일

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

Guillermo Austin Kim|2018년 6월 13일

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

인터럽트 - Overview

Guillermo Austin Kim|2018년 1월 15일

인터럽트하면 무슨 생각이 나죠? 평소에 이런 말도 하죠. "인터럽트 걸지마!" "인터럽트가 걸려와서 제대로 일을 못했어요." 커널에서 인터럽트는 하드웨어와 소프트웨어의 인터페이스이라고 할 수 있구요,각 물리적인 디바이스와 디바이스 드라이버의 인터페이스라고 할 수 있어요. 인터럽트 동작에 대한 수 많은 예시를 들 수 있는데요. 모바일 디바이스에서 사용자가 화면을 터치했을 때 인터럽트가 올라와서 해당 처리를 하거든요.해당 처리는 Input Event를 유저 공간에 전달해서 메뉴가 바뀐다던가, 화면을 다시 그리던가 하는 동작을 하죠. 인터럽트 처리는 인터럽트 핸들러에서 처리하구요, 인터럽트 핸들러는 보통 ISR(Interrupt Service Routine)이라고 하는데요.최대한 빠른 시간 내 데이터 처리