ARM Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

193239
1625
172590


태그 : 워크큐 요약보기전체보기목록닫기

1 2 3 4 5 6

[리눅스커널] 워크큐: struct worker 구조체 파악하기

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

[리눅스커널] 딜레이 워크: 패치 코드 내용과 작성 방법 알아보기

이번 절에서는 딜레이 워크를 만들어보는 실습을 진행합니다. 실습할 패치 코드 시나리오는 다음과 같습니다. 인터럽트 핸들러에서 워크를 큐잉 워크 핸들러 실행  워크 핸들러에서 딜레이 워크를 실행이번 장에서 배운 내용을 총복습하는 실습입니다. 먼저 패치 코드를 작성해 봅시다.패치 코드의 내용과 작성 방법먼저 패치 코드를 소개하겠습니다.diff...

[리눅스커널] 워크큐: 워커 스레드 핸들 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() 함수에서 호출한 워커 스레드 세부 제어 함수를 살펴보겠습니다.worker_attach_to_pool() 함수 분석하기worker_attach_pool() 함수는 워커를 워커풀에 연결하는 역할을 수행합니다. [https://elixir.bootlin.com/linux/v4.19.30/source/kern...

[리눅스커널] 워크큐: 워커 스레드를 생성하는 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, ...
1 2 3 4 5 6