Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

8200
629
98815


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

1 2 3 4

[리눅스커널] 워크큐(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...

[리눅스커널] 워크큐(workqueue): 딜레이 워크 실행의 시작점은 어디일까?

딜레이 워크를 실행하려면 어떤 함수를 호출해야 할까요? schedule_delayed_work() 함수를 실행하면 됩니다.먼저 딜레이 워크를 실행하는 드라이버 코드를 소개하겠습니다.[https://elixir.bootlin.com/linux/v4.14.43/source/drivers/mmc/host/bcm2835.c]1 static2 bool bcm28...

[리눅스커널] 워크큐: 딜레이 워크(delayed_work)란 무엇인가

딜레이 워크 소개워크큐는 대표적인 커널 후반부 처리 기법으로 후반부 처리 코드를 워크 핸들러에서 실행합니다. 동기적으로 처리 할 필요가 없는 코드를 워크 핸들러에 위치시켜 비동기적으로 커널 쓰레드 레벨에서 처리하는 겁니다. 이런 구조로 드라이버를 설계하면 다양한 디바이스 드라이버 시나리오에 맞게 코드를 구성할 수 있습니다. 워크에서 유연성을 추가한 기법...

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

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

워커 스레드는 워크를 실행하는 커널 스레드입니다. 이번 절에서는 워커 스레드가 무엇이고 이를 어떤 방식으로 생성하고 실행하는지 살펴보겠습니다.

[리눅스커널] 워크큐: 워커 쓰레드는 누가 언제 생성하나?

워커와 워커 쓰레드의 개념부터 정리하고 워커 쓰레드 생성에 대해 알아봅시다. 워커 쓰레드는 커널 쓰레드의 한 종류로 워크를 실행하는 쓰레드입니다. 쓰레드 핸들 함수는 worker_thread() 입니다.처음 커널 쓰레드를 분석할 때 먼저 쓰레드 핸들 함수를 분석해야 합니다. 쓰레드를 어떤 과정으로 실행 및 제어하는지 알 수 있기 때문입니다.워커...

[리눅스커널] 워크큐: queue_work_on() 함수 분석

schedule_work() 함수를 호출하면 어떻게 워크를 워크큐에 큐잉하는지 이제부터 살펴보겠습니다. schedule_work() 함수를 호출하면 queue_work_on() 함수를 호출하니 먼저 schedule_work() 함수를 보겠습니다.[/include/linux/workqueue.h]1 static inline bool schedule_wor...
1 2 3 4