리눅스커널

포스트: 154|조회수: 0|TERM
Items

Posts

154 posts

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

Guillermo Austin Kim|2019년 9월 25일

워커 스레드를 생성하려면 create_worker() 함수를 호출해야 합니다. 이번 시간에는 create_worker() 함수 코드를 분석하면서 워커 스레드를 생성하는 과정을 배워보겠습니다. 먼저 create_worker() 함수가 하는 주요 동작은 다음과 같습니다. 워커풀 아이디 읽어오기 워커 스레드 이름을 지정해 워커 스레드 생성 요청하기 워커풀에 워커 스레드 등록하기 워커 정보를 갱신하고 만든 워커 스레드를 깨우기 각 단계 별 코드를 자세히 살펴보겠습니다. 다음은 create_worker() 함수 구현부입니다.1 static struct worker *create_worker(struct worker_pool *pool)2 {3 struct worker *worker = NULL;4 int

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

Guillermo Austin Kim|2019년 9월 25일

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

리눅스 커널 메일링 리스트 구독 따라해보기

Guillermo Austin Kim|2019년 9월 23일

이번 시간에는 리눅스 커널 메일링 리스트를 구독하는 방법을 소개합니다.이번에 소개하는 내용을 참고해서 '리눅스 커널 메일 리스트'를 적극적으로 활용하시길 희망합니다. 홈페이지 방문 가장 먼저 다음 링크에 있는 홈페이지로 이동합시다.http://vger.kernel.org/vger-lists.html 홈페이지로 이동하면 다음과 같은 화면이 보일 것입니다. 위에서 푸른색 글짜가 리눅스 커널 메일링 리스트입니다. 수 십가지 리눅스 커널 메일링 리스트가 보입니다.여러분은 이 목록 중 하나를 등록하면 되는 것입니다. 메일링 리스트를 구독하기 위해 메일 발송 위 목록 중에서 linux-xfs 메일링 리스트에 등록을 하려면 어떻게 해야 할까요?이를 위해 다음 포멧으로 이메일을 전달하면 됩니다.수신자: ma

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

Guillermo Austin Kim|2019년 9월 22일

워커를 관리하고 저장하는 자료구조는 struct worker 구조체입니다. 이번 시간에는 struct worker 구조체 세부 필드를 분석하겠습니다. struct worker 구조체 분석하기 다음은 struct worker 구조체 선언부입니다.[https://elixir.bootlin.com/linux/v4.19.30/source/kernel/workqueue_internal.h]1 struct worker {2 union {3 struct list_head entry; 4 struct hlist_node hentry; 5 };6 struct work_struct *current_work; 7 work_func_t current_func; 8 struct pool_workqueue *current