X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=blobdiff_plain;f=src%2Fdevices%2Ftimer.c;h=c97667f56bfcd5d9bd70862c7ff3ca2047f8f706;hp=70234a808844e425d8309f6cd04c09ce11ad230e;hb=f1f2dc8de9e336d83383692d4478bb14a3dafc11;hpb=94d17ee9287aec1c4c9ee37ca02615e8293a5f3a diff --git a/src/devices/timer.c b/src/devices/timer.c index 70234a8..c97667f 100644 --- a/src/devices/timer.c +++ b/src/devices/timer.c @@ -3,8 +3,8 @@ #include #include #include +#include "devices/pit.h" #include "threads/interrupt.h" -#include "threads/io.h" #include "threads/synch.h" #include "threads/thread.h" @@ -30,20 +30,12 @@ static void busy_wait (int64_t loops); static void real_time_sleep (int64_t num, int32_t denom); static void real_time_delay (int64_t num, int32_t denom); -/* Sets up the 8254 Programmable Interval Timer (PIT) to - interrupt PIT_FREQ times per second, and registers the - corresponding interrupt. */ +/* Sets up the timer to interrupt TIMER_FREQ times per second, + and registers the corresponding interrupt. */ void timer_init (void) { - /* 8254 input frequency divided by TIMER_FREQ, rounded to - nearest. */ - uint16_t count = (1193180 + TIMER_FREQ / 2) / TIMER_FREQ; - - outb (0x43, 0x34); /* CW: counter 0, LSB then MSB, mode 2, binary. */ - outb (0x40, count & 0xff); - outb (0x40, count >> 8); - + pit_configure_channel (0, 2, TIMER_FREQ); intr_register_ext (0x20, timer_interrupt, "8254 Timer"); }