Thursday, April 23, 2015

Using Kernel Timer in Embedded Linux

@ Kernel Timer
  ① struct timer_list 구조체 선언
  ② 맨 처음 timer를 초기화 : init_timer() 호출
  ③ timer 만료시간을 설정 : expires 설정 - jiffies=현재시각,  TIMER_INTERVAL=주기
  ④ 설정된 정보로 timer 등록 : add_timer() 호출 시 "timer start"
  ⑤ 수행 중인 timer 종료 : del_timer() 호출 시 "timer stop"

/*
 * @file   timer.c
 * @brief  Module Program for Kernel Timer
 */

#define TIMER_INTERVAL 20

static struct timer_list tm;

void timer_handler(int data)
{
    printk("Timer Expired!\n");

    tm.expires = jiffies + TIMER_INTERVAL;
    add_timer(&tm);
}

... timer_open( ... )
{
    init_timer(&tm);
    tm.expires = jiffies + TIMER_INTERVAL;
    tm.function = &timer_handler;
    add_timer(&tm);

    ...
}

... timer_close( ... )
{
   del_timer(&tm);
}

MODULE_LICENSE("GPL");


No comments:

Post a Comment