timer_sleep(), defined in
Although a working implementation is provided, it busy waits, that is,
it spins in a loop checking the current time and calling
enough time has gone by. Reimplement it to avoid busy waiting.
void timer_sleep (int64_t ticks);
Suspends execution of the calling thread until time has advanced by at least x timer ticks. Unless the system is otherwise idle, the thread need not wake up after exactly x ticks. Just put it on the ready queue after they have waited for the right amount of time.
timer_sleep() is useful for threads that operate in real-time, e.g. for
blinking the cursor once per second. The argument to
expressed in timer ticks, not in milliseconds or any another unit. There are
TIMER_FREQ timer ticks per second, where
TIMER_FREQ is a macro defined in
devices/timer.h. The default value is
100. We don't recommend changing this
value, because any change is likely to cause many of the tests to fail.
exist for sleeping a specific number of milliseconds, microseconds, or
nanoseconds, respectively, but these will call
when necessary. You do not need to modify them.
The alarm clock implementation is not needed for later projects, although it
could be useful for project 4.