동적타이머

포스트: 3|조회수: 0|THEORY
Items

Posts

3 posts

[리눅스커널] 커널 동적 타이머를 사용해 실행 시각을 측정해보기

Guillermo Austin Kim|2019년 12월 8일

이번에는 조금 더 재미있는 패치 코드를 같이 볼까요? 다음은 패치 코드의 내용입니다. diff --git a/kernel/workqueue.c b/kernel/workqueue.cindex cd8b61b..128c998 100644--- a/kernel/workqueue.c+++ b/kernel/workqueue.c@@ -49,7 +49,7 @@ #include #include #include -+#include #include "workqueue_internal.h" enum {@@ -2029,6 +2029,18 @@

[라즈베리파이] 커널 타이머 - 동적 타이머 실습 및 로그 분석(1)

Guillermo Austin Kim|2018년 9월 2일

이전 시간에 소스 코드 분석으로 커널 시스템 타이머 동작에 대해 알아봤습니다. 코드를 읽고 이해하는 과정도 중요하지만 배운 내용을 자신의 것으로 만들려면 분석한 코드가 리눅스 시스템에서 실제 어떻게 실행하는지 확인해야 합니다. 한 걸음 나아가 코드를 수정하면서 라즈베리파이에서는 커널 타이머 자료구조 데이터가 어떤 값인지도 확인할 필요도 있습니다. 이번에 소개하는 패치 코드를 입력하고 ftrace 로그를 분석하는 과정을 거치면 배운 내용이 훨씬 더 오랫동안 기억에 남을 것이라 확신합니다. 먼저 전체 패치 코드를 소개합니다.diff --git a/kernel/softirq.c b/kernel/softirq.c--- a/kernel/softirq.c+++ b/kernel/softirq.c@@ -424,10 +

[라즈베리파이] 커널 타이머 -동적 타이머는 누가 언제 호출하나? (1)

Guillermo Austin Kim|2018년 8월 15일

이전에 동적 타이머를 설정하는 코드 흐름까지 알아봤습니다. 이 과정을 요약하면 다음과 같습니다. 1. 동적 타이머를 표현하는 자료 구조인 struct timer_list 구조체에 기본 정보를 채운 다음 add_time() 혹은 mod_time() 함수를 호출합니다. 동적 타이머 기본 정보는 타이머 만료 시각(HZ단위)과 동적 타이머 핸들러 함수와 매개 변수입니다. 2. 동적 타이머를 초기화했을 때 실행했던 CPU 번호 기준으로 per-cpu 오프셋을 적용해서 timer_base 주소를 읽습니다. 이 주소에는 struct timer_base 구조체 멤버가 있는데 타이머 벡터 해시 인덱스에 동적 타이머를 등록했습니다. 이어서 이번에는 동적 타이머를 누가 언제 처리하는지 살펴봅니다. 동적 타이머는 커널 시스