// ticks만큼 일시 중지하는 함수
void timer_sleep(int64_t ticks)
{
// 함수가 호출된 현재 시각을 'start' 변수에 저장
int64_t start = timer_ticks();
// 인터럽트가 활성화 상태인지 확인
ASSERT(intr_get_level() == INTR_ON);
// 'start' 시간부터 'ticks'만큼의 시간이 경과할 때까지 루프 반복
while(timer_elapsed(start) < ticks)
// CPU 양보 코드
thread_yield();
}
<aside> 💡
ticks?
// 대략 ticks 동안 실행을 일시 중단
void timer_sleep (int64_t ticks) {
int64_t start = timer_ticks();
ASSERT(intr_get_level() == INTR_ON);
if(timer_elapsed(start) < ticks) {
// 깨어날 목표 시각을 계산 = start + ticks
thread_sleep(start + ticks);
}
}