__MOD_TIMER

포스트: 2
Tags

Posts

2 posts

[라즈베리파이] 커널 타이머 - 동적 타이머 실습 및 로그 분석(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 +

[라즈베리파이] 커널타이머 - 동적 타이머 실행(__mod_timer) 코드 분석

Guillermo Austin Kim|2018년 8월 10일

이제 add_timer()와 mod_timer() 함수들의 구현부를 살펴 보겠습니다. add_timer() 함수 구현부를 보면 mod_timer() 함수를 호출하니 기능적으로 add_timer() 함수와 mod_timer() 함수는 차이가 없습니다.void add_timer(struct timer_list *timer){ BUG_ON(timer_pending(timer)); mod_timer(timer, timer->expires);} int mod_timer(struct timer_list *timer, unsigned long expires){ return __mod_timer(timer, expires, false);} mod_timer() 함수는 __mod_timer() 함수를 호출하니 동