Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

16312
2027
233849


[리눅스커널] 시간관리: 동적 타이머 초기화 8. 커널 타이머 관리

동적 타이머를 쓰려면 먼저 동적 타이머를 초기화해야 합니다. 다음 내용을 살펴보면서 동적 타이머 초기화 과정을 소개합니다.

timer_setup() 함수 소개
동적 타이머 초기화 예제 코드 분석

timer_setup() 함수 코드 분석하기

동적 타이머를 초기화하려면 timer_setup() 함수를 호출해야 합니다.

먼저 timer_setup() 함수 선언부를 소개합니다.
void timer_setup(struct timer_list *timer, void *func, unsigned int flags);

함수에 전달되는 인자 속성은 다음과 같습니다.

struct timer_list *timer: 동적 타이머 핸들
void *func: 동적 타이머 핸들러 함수
unsigned int flags: 동적 타이머 플래그 

커널 4.14 버전까지 동적 타이머를 초기화하려면 setup_timer() 함수나 init_timer() 함수를 써야 했습니다. 커널 4.15 버전부터 timer_setup() 함수를 써야 동적 타이머를 초기화할 수 있습니다. 
 
* 강의 동영상도 있으니 같이 들으시면 좋습니다.






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

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


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

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

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


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

핑백

덧글

  • jjudrgn 2019/12/19 08:13 # 삭제 답글

    좋은 정보 감사합니다. 커널 수정중에 timer_list->flags에 관해서 해답을 찾았습니다 ㅎㅎ
    그리고 long unsigned int 라고 되있는 부분은 오타인것 같습니다!
  • AustinKim 2019/12/19 09:54 #

    좋은 지적 감사합니다. 글 수정했습니다.

    알려주신대로 expires 필드의 타입은 unsigned long 이군요.

    https://elixir.bootlin.com/linux/v4.19.30/source/include/linux/timer.h
    struct timer_list {
    /*
    * All fields that change during normal runtime grouped to the
    * same cacheline
    */
    struct hlist_node entry;
    unsigned long expires; //<<--
댓글 입력 영역