Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

83258
1323
114585


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

1 2 3 4 5

[리눅스커널] 워크큐: 워커 스레드 핸들 worker_thread() 함수 분석하기 (2/2)

2단계: “전처리” 단계워커 스레드의 “전처리” 단계 코드를 분석할 차례입니다. 다음 24번째 줄 코드를 보겠습니다. 24 recheck:25 /* no more worker necessary? */26 if (!need_more_worker(pool))27 goto sleep;need_more_worker() 함수는 다음 동작을 수행합니다....

[리눅스커널] 워크큐: 워커 스레드 핸들 worker_thread() 함수 분석하기 (1/2)

커널 스레드를 처음 분석하려고 할 때 다음과 같은 의문이 생길 때가 있습니다.    새로운 커널 스레드 코드 분석을 시작할 때 어느 코드부터 분석해야 할까?먼저 커널 스레드 핸들 함수를 열어봐야 합니다. 그 이유는 커널 스레드 세부 동작은 커널 스레드 핸들 함수에 구현됐기 때문입니다. 마찬가지로 워커 스레드 세부 동작을 알려면 먼저 ...

[리눅스커널] 워크큐: 워커 스레드를 생성하는 create_worker() 함수 분석하기

워커 스레드를 생성하려면 create_worker() 함수를 호출해야 합니다. 이번 시간에는 create_worker() 함수 코드를 분석하면서 워커 스레드를 생성하는 과정을 배워보겠습니다.먼저 create_worker() 함수가 하는 주요 동작은 다음과 같습니다. 워커풀 아이디 읽어오기 워커 스레드 이름을 지정해 워커 스레드 생성 요청하기 워커풀...

[리눅스커널] 워크큐: 워커 스레드는 누가 언제 만들까

이번 챕터 앞 부분에서 워크큐에 대해 다음과 같이 소개했습니다.     워크를 처리하는 워커 스레드를 미리 생성해 놓고 워크 실행 요청이 오면 해당 워커     스레드가 이를 처리한다.이번 시간에는 워커 스레드의 핸들인 워커를 언제 생성하는지 알아보겠습니다. 그렇다면 워커는 어느 함수를 실행할 때 ...

[리눅스커널] 워크큐: 워커 자료구조인 struct worker 구조체 알아보기

워커를 관리하고 저장하는 자료구조는 struct worker 구조체입니다. 이번 시간에는 struct worker 구조체 세부 필드를 분석하겠습니다. struct worker 구조체 분석하기다음은 struct worker 구조체 선언부입니다.[https://elixir.bootlin.com/linux/v4.19.30/source/kernel/w...

[리눅스커널] 워크큐: 워커와 워커 스레드란

커널에서 워크큐 관련 함수를 호출하고 워크큐 자료 구조를 관리합니다. 이를 위해 생성된 프로세스가 워커 스레드이며 워커란 자료구조로 세부 동작을 관리합니다.이번 시간에서는 워커와 워커 스레드가 무엇인지 먼저 알아보겠습니다.라즈베리파이에서 워커 스레드 확인하기워커 스레드는 모든 리눅스 시스템에서 배경으로 실행하는 프로세스입니다. 물론 라즈베리파이도 워커 ...

[리눅스커널] 워크큐(workqueue): __queue_work() 함수 분석하기

워크를 워크큐에 큐잉하는 핵심 동작은 __queue_work() 함수에서 수행합니다. 코드 분석을 통해 워크를 워크큐에 어떤 방식으로 큐잉하는지 살펴보겠습니다.코드 분석에 앞서 __queue_work() 함수 선언부와 인자를 점검합시다.static void __queue_work(int cpu, struct workqueue_struct *wq, ...

[리눅스커널] 워크큐(workqueue): 워크를 워크큐에 큐잉하는 인터페이스 함수 분석하기

커널은 디바이스 드라이버 레벨에서 워크큐를 큐잉할 수 있는 여러 가지 함수를 지원합니다.이번 시간에는 워크를 워크큐에 큐잉할 때 사용하는 함수를 소개하고 코드를 분석합니다.  schedule_work() queue_work() queue_work_on()먼저 schedule_work() 함수를 분석해볼까요?schedule_work() 함수...

[리눅스커널] 워크큐(workqueue): Trace32로 워크큐 자료 구조 디버깅하기

이번 시간에는 임베디드 디버깅 프로그램인 Trace32를 써서 워크큐 자료구조를 점검합니다. 리눅스 커널 시스템에서 커널 크래시가 나면 생성되는 vmcore를 올려 확인한 내용입니다.참고로, vmcore는 라즈베리파이가 아니라 다른 ARM64비트 아키텍처를 적용한 시스템에서 받았습니다.먼저 시스템 워크큐 전역 변수를 확인합니다.var.view %type...

[리눅스커널] 워크큐: 딜레이 워크는 누가 언제 큐잉할까?

이전 소절에서는 schedule_delayed_work() 함수를 호출하면 동적 타이머를 실행해서 지정한 지연 시각 후에 동적 타이머 핸들러인 delayed_work_timer_fn() 함수가 실행되도록 한다고 했습니다. 이번 소절에서는 delayed_work_timer_fn() 함수가 어떻게 호출되는지 살펴봅니다.delayed_work_tim...
1 2 3 4 5