Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

0112
737
82110


태그 : 리눅스커널 요약보기전체보기목록닫기

1 2 3 4 5 6

[라즈베리파이] 라즈비안(Raspbian) 리눅스 커널(LinuxKernel) 빌드하기

이번 절에서는 라즈베리파이에서 라즈비안 리눅스 커널 소스 코드를 내려받고 빌드하는 방법을 알아보겠습니다. 필자는 라즈베리파이를 쓸 때 다음 명령어로 root로 변경해 커널 빌드를 합니다.$ sudo su명령어 입력 과정에서 불필요한 권한 설정을 피하기 위해서입니다.라즈비안 커널 소스 코드 내려받기리눅스 커널 소스 코드를 다운로드 받는 방법을 소...

[리눅스커널][시그널] 시그널 전달과 처리는 어떻게 할까?

[리눅스커널][SoftIRQ] 디버깅: ftrace Soft IRQ 이벤트 소개

6.12.1 ftrace Soft IRQ 이벤트 소개이번 시간에 Soft IRQ 실행 흐름을 추적하는 ftrace event를 소개합니다.ftrace는 커널의 주요 동작을 추적하며 이를 이벤트로 정의합니다. Soft IRQ 도 커널의 중요 기능이니 ftrace에서 다음 이벤트를 제공합니다.- softirq_raise: Soft IRQ 서비스를 요청- s...

[리눅스커널][태스크릿] 태스크릿은 언제 실행할까? tasklet_action_common() 분석

태스크릿은 언제 실행할까?태스크릿은 Soft IRQ 서비스 중 하나입니다. 따라서 Soft IRQ 서비스를 실행하는 __do_softirq() 함수에서 태스크릿 서비스 핸들러 함수를 호출합니다.Soft IRQ 전체 흐름도에서 태스크릿 서비스를 실행하는 그림을 보겠습니다. [태스크릿 전체 흐름도에서 태스크릿 실행 단계][1] 단계에서 인터럽트가 ...

[리눅스커널][태스크릿] 태스크릿(struct tasklet_struct)은 어떻게 등록할까?

먼저 태스크릿을 등록하는 2가지 방법을 소개합니다.1. 태스크릿 전역 변수 선언  : DECLARE_TASKLET() 혹은 DECLARE_TASKLET_DISABLED() 함수 호출2. 태스크릿 초기화 함수 호출  : tasklet_init() 함수 DECLARE_TASKLET() 혹은 DECLARE_TASKLET_DISABL...

[리눅스커널][태스크릿] 태스크릿(struct tasklet_struct) 이란 무엇인가

태스크릿은 프로세스와 전혀 상관 없는 용어입니다. 태스크릿이란 이름 때문에 많은 분이 프로세스와 관련됐다고 오해할 수 있습니다.태스크릿은 Soft IRQ 서비스 중 하나로 동적으로 Soft IRQ 서비스를 쓸 수 있는 인터페이스입니다. 드라이버 레벨에서 태스크릿은 자주 쓰고 활용합니다.태스크릿은 무엇일까?우리는 인터럽트 후반부 기법으로 Soft IRQ에...

[리눅스커널][SoftIRQ] Soft IRQ 컨택스트에 대해서 - in_softirq()

6.10 Soft IRQ 컨택스트에 대해서인터럽트가 발생한 후 인터럽트 핸들러가 실행 중인 상태를 인터럽트 컨택스트라고 합니다. 이와 마찬가지로 Soft IRQ 서비스를 실행 중인 상태를 Soft IRQ 컨택스트라고 부릅니다. 이번 절에서는 Soft IRQ 컨택스트 시작 시점과 관련 자료구조에 대해서 살펴보겠습니다.6.10.1 Soft IRQ 컨택스트 ...

[리눅스커널][인터럽트후반부] IRQ 스레드를 만든 후 ftrace로 분석하기

6.5.2 IRQ 스레드 생성 실습하기이번에는 IRQ 스레드를 직접 생성하는 실습을 하겠습니다. 직접 손으로 코드를 작성하고 로그로 동작을 확인하면 배운 내용을 더 오랫동안 기억할 수 있습니다.IRQ 스레드를 생성할 인터럽트 선택하기다른 리눅스 시스템보다 라즈베리파이는 IRQ 스레드 개수가 많지 않습니다. 아래와 같이 “ps –ely” 을 입력하면 92...

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

6.4 IRQ 스레드는 누가 언제 실행할까?이번 절에서는 IRQ 스레드가 어떤 과정으로 실행하는지 살펴보겠습니다. IRQ 스레드는 크게 다음 단계로 실행합니다. 1. 인터럽트 핸들러에서 IRQ_WAKE_THREAD 반환 2. IRQ 스레드 깨움 3. IRQ 스레드 핸들러 실행IRQ 스레드를 실행하는 출발점은 인터럽트 ...

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

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