본문 바로가기

Linux/Device Driver

커널 타이머 사용하기 (Kernel timer)

커널 타이머는 프로세스 스케줄러를 동작시키기 위해 발생되는 타이머 인터럽트를 통해 구현 된다.
리눅스 커널은 타이머 인터럽트가 발생하면 스케줄링에 필요한 처리를 끝낸후 커널 타이머 목록이란
데이터 구조를 검사하는데 <b>커널 타이머 목록은 수행할 함수와 함수가 수행 되어야 하는 시간에대한 정보를
담고 있는 연결 리스트 구조체이다.</b>

커널 타이머를 디바이스 드라이버에서 사용 하려면 다음과 같은 구조체를 이용해야 된다.

// ----------------------------------------------------------

#include <linux/timer.h> 를 선언 해서 사용 해야 된다.

struct timer_list;
커널 구조체 타이머

init_timer();
커널 타이머 구조체를 초기화

add_timer();
커널 타이머에 수행될 함수를 등록

del_timer();
커널 타이머 목록에서 등록된 것을 제거

// ----------------------------------------------------------

사용 방법

Kernel 2.4

struct timer_list kerneltimer;
kerneltime.expires = jiffies + (3*HZ/10);

Kenel 2.6
kerneltime.expires = get_jiffies_64() + (3*HZ/10);