[블로그 통합으로 이전해 온 자료] - 2008. 4. 25. 04:07
* 긴 지연
// 실행 대기
while ( time_before( jiffies, j1 ) )
cpu_relax();
// 스케쥴링
while ( time_before( jiffies, j1 ) )
schedule();
이벤트를 기다리는 지연일 경우는 대기큐를 사용한 timeout 방법도 있다.
wait_event_timeout();
wait_event_interruptible_timeout();
하지만 이벤트를 사용하지 않는다면 schedule_timeout()을 사용한다.
set_current_state( TASK_INTERRUPTIBLE );
schedule_timeout( j1 );
timeout 시간은 jiffies 수가 된다.
* 짧은 지연
<linux/delay.h>
// 실행 대기 (프로세스가 잠들지 않음)
void ndelay( unsigned long nsec );
void udelay( unsigned long usec );
void mdelay( unsigned long msec );
// 실행 대기를 하지 않고 프로세스가 잠들게 된다.
void msleep( unsigned int msec );
unsigned long msleep_interruptible( unsigned int msec );
void ssleep( unsigned int sec );
'실습 > 리눅스 커널' 카테고리의 다른 글
인터럽트 (Interrupt) 처리 (0) | 2021.02.08 |
---|---|
커널 타이머, 태스크릿, 작업큐 (0) | 2021.02.08 |
커널에서 Blocking I/O (0) | 2021.02.08 |
커널에서 condition race 제거 (0) | 2021.02.08 |
Kernel Module 컴파일을 위한 Makefile 만들기 (0) | 2021.02.08 |