Make tests public. Rewrite most tests. Add tests.
[pintos-anon] / src / devices / serial.c
index 8dc7f18cfbd0272b630e0d85c87abf119be23173..d92a87ce1540be2af42940622491a4a28be078c2 100644 (file)
@@ -63,9 +63,9 @@ serial_init_poll (void)
   ASSERT (mode == UNINIT);
   outb (IER_REG, 0);                    /* Turn off all interrupts. */
   outb (FCR_REG, 0);                    /* Disable FIFO. */
-  set_serial (9600);                    /* 9600 bps, N-8-1. */
+  set_serial (115200);                  /* 115.2 kbps, N-8-1. */
   outb (MCR_REG, MCR_OUT2);             /* Turn on OUT2 output line. */
-  intq_init (&txq, "serial xmit");
+  intq_init (&txq);
   mode = POLL;
 } 
 
@@ -76,7 +76,7 @@ void
 serial_init_queue (void) 
 {
   ASSERT (mode == POLL);
-  intr_register (0x20 + 4, 0, INTR_OFF, serial_interrupt, "serial");
+  intr_register_ext (0x20 + 4, serial_interrupt, "serial");
   mode = QUEUE;
 }
 
@@ -131,6 +131,8 @@ set_serial (int bps)
   int baud_base = 1843200 / 16;         /* Base rate of 16550A. */
   uint16_t divisor = baud_base / bps;   /* Clock rate divisor. */
 
+  ASSERT (bps >= 300 && bps <= 115200);
+
   /* Enable DLAB. */
   outb (LCR_REG, LCR_N81 | LCR_DLAB);