Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

593
557
422264


[리눅스커널] 시간관리: time_after()/time_before() 함수 사용 예시 알아보기 8. 커널 타이머 관리

이번에는 time_after()/time_before() 함수를 써서 실행 시간 흐름을 제어하는 예제 코드를 살펴보겠습니다.  

다음 소개할 코드는 워크큐 와치독 타이머인 wq_watchdog_timer_fn() 함수입니다.

[https://github.com/raspberrypi/linux/blob/rpi-4.19.y/kernel/workqueue.c]
01 static unsigned long wq_watchdog_thresh = 30;
02 static void wq_watchdog_timer_fn(struct timer_list *unused)
03 {
04 unsigned long thresh = READ_ONCE(wq_watchdog_thresh) * HZ;
...
05 /* did we stall? */
06 if (time_after(jiffies, ts + thresh)) {
07 lockup_detected = true;
08 pr_emerg("BUG: workqueue lockup - pool");
09 pr_cont_pool_info(pool);
10 pr_cont(" stuck for %us!\n",
11 jiffies_to_msecs(jiffies - pool_ts) / 1000);
12 }

...
 
* 강의 동영상도 있으니 같이 들으시면 좋습니다.





#커널 시간관리 목차
커널 타이머 관리 주요 개념 소개
jiffies란
커널 타이머 제어
동적 타이머 초기화
동적 타이머 등록하기
동적 타이머는 누가 언제 실행하나?
라즈베리파이 커널 타이머 실습 및 로그 분석

"혹시 궁금점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답글 올려드리겠습니다!"


# Reference: For more information on 'Linux Kernel';

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 1

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 2



 
repository:
http://rousalome.egloos.com/10025675






핑백

덧글

댓글 입력 영역