CREATE_WORKER

Category
아이템: CREATE_WORKER(2)
포스트 갯수2

[리눅스커널] 워크큐: create_worker() 함수에서 호출한 워크큐 커널 함수 분석하기

By Guillermo Austin Kim | 2019년 9월 26일 | 
이번 시간에는 create_worker() 함수에서 호출한 워커 스레드 세부 제어 함수를 살펴보겠습니다. worker_attach_to_pool() 함수 분석하기 worker_attach_pool() 함수는 워커를 워커풀에 연결하는 역할을 수행합니다. [https://elixir.bootlin.com/linux/v4.19.30/source/kernel/workqueue.c] 01 static void worker_attach_to_pool(struct worker *worker,02 struct worker_pool *pool)03 {04mutex_lock(&pool->attach_mutex);0506set_cpus_allowed_ptr(worker->task, pool-

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

By Guillermo Austin Kim | 2019년 9월 25일 | 
이번 챕터 앞 부분에서 워크큐에 대해 다음과 같이 소개했습니다.  워크를 처리하는 워커 스레드를 미리 생성해 놓고 워크 실행 요청이 오면 해당 워커 스레드가 이를 처리한다. 이번 시간에는 워커 스레드의 핸들인 워커를 언제 생성하는지 알아보겠습니다. 그렇다면 워커는 어느 함수를 실행할 때 생성할까요?  워커는 create_worker() 함수를 호출할 때 생성합니다. 워커를 생성하는 create_worker() 함수를 분석하기 전 이 함수를 호출하는 경로를 알아보겠습니다.  maybe_create_worker()  get_unbound_pool()  workqueue_prepare_cpu() 커널 내부에서 워크를 사용해 후반부 처리를 하므로 커널은 워커 스레드를 미리