Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

72261
1501
219114


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

이전 11 12 13 14 15 16 17 18 19 20 다음

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

다음은 워크큐에서 가장 중요한 워커 쓰레드를 깨우는 wake_up_worker() 함수를 살펴보겠습니다.[https://elixir.bootlin.com/linux/v4.14.43/source/kernel/workqueue.c]1 static void wake_up_worker(struct worker_pool *pool)2 {3 struct worke...

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

이번에는 find_worker_executing_work() 함수를 분석하겠습니다.1 static struct worker *find_worker_executing_work(struct worker_pool *pool,2  struct work_struct *work)3 {4 struct worker *worker;56 hash_for...

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

struct work_struct.entry를 워커 풀에 등록하기 직전 struct work_struct.data 멤버를 WORK_STRUCT_PWQ 로 저장합니다.static void set_work_pwq(struct work_struct *work, struct pool_workqueue *pwq,  unsigned long extra...

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

get_work_pool() 함수 분석을 시작하겠습니다.[https://elixir.bootlin.com/linux/v4.14.43/source/kernel/workqueue.c#L709]1 static struct worker_pool *get_work_pool(struct work_struct *work)2 {3 unsigned long data =...

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

insert_work() 함수 분석이번에는 insert_work() 함수를 분석하겠습니다.1 static void insert_work(struct pool_workqueue *pwq, struct work_struct *work,2 struct list_head *head, unsigned int extra_flags)3 {4 struct work...

[리눅스커널] 워크큐: struct work_struct 구조체

워크를 표현하는 자료구조는 struct work_struct 구조체이며 선언부는 다음과 같습니다.[https://github.com/raspberrypi/linux/blob/rpi-4.19.y/include/linux/workqueue.h]1 struct work_struct {2 atomic_long_t data;3 struct list_head en...

[리눅스커널] 워크큐: 7가지 워크큐에 대한 소개

workqueue_init_early() 함수는 리눅스 커널에서 지원하는 7가지 워크큐를 생성합니다.workqueue_init_early() 함수를 분석하면서 워크큐 종류에 대해 알아보겠습니다. [https://github.com/raspberrypi/linux/blob/rpi-4.19.y/kernel/workqueue.c]1 int __ini...

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

워크큐를 생성하려면 alloc_workqueue() 함수를 호출해야 합니다. alloc_workqueue() 함수 구현부를 보면 __alloc_workqueue_key() 함수로 치환됨을 알 수 있습니다.#define alloc_workqueue(fmt, flags, max_active, args...) \ __alloc_workqueue_key((f...

[리눅스커널][스케줄링] 유저 프로세스 실행 중 인터럽트 발생으로 선점 스케줄링

선점 스케줄링 실행 진입점 중 하나가 인터럽트를 핸들링 후 입니다. 이번 소절에서 유저 프로세스가 실행하던 도중 인터럽트가 발생했을 때 어떤 방식으로 선점 스케줄링(Preemption)이 시작하는지 살펴보겠습니다.다음 블록 다이어그램을 같이 봅시다. 위 블록 다이어그램은 유저 레벨 프로세스가 실행 도중 선점 스케줄링되는 흐름도입니다.유...

[리눅스커널] 스케줄링: 선점 스케줄링 발생 시점을 아는 것은 왜 중요할까?

리눅스 시스템 개발자로 문제 해결 능력을 키우기 위해선 선점 스케줄링 발생 시점을 아는 것이 중요합니다.리눅스 디바이스를 개발하다 보면 다양한 버그를 만납니다. 수 많은 버그 중 선점 스케줄링으로 시스템이 오동작하는 상황을 겪을 수 있습니다. 예를 들어 커널 패닉 발생하는 가장 큰 원인 중 하나가 선점 스케줄링 때문입니다.리눅스 커널 커뮤니티에서 배포하...
이전 11 12 13 14 15 16 17 18 19 20 다음