diff --git a/kill.c b/kill.c index 2d69d4d..5e60113 100644 --- a/kill.c +++ b/kill.c @@ -6,7 +6,7 @@ int main(int argc, char **argv) { int i; - + if(argc < 1){ printf(2, "usage: kill pid...\n"); exit(); diff --git a/lapic.c b/lapic.c index f64f54b..19c5b4b 100644 --- a/lapic.c +++ b/lapic.c @@ -156,7 +156,7 @@ lapicstartap(uchar apicid, uint addr) lapicw(ICRLO, INIT | LEVEL | ASSERT); microdelay(200); lapicw(ICRLO, INIT | LEVEL); - microdelay(100); // should be 10ms, but too slow in Bochs! + microdelay(100); // should be 10ms, but too slow in Bochs! // Send startup IPI (twice!) to enter bootstrap code. // Regular hardware is supposed to only accept a STARTUP diff --git a/proc.h b/proc.h index eebfa23..d37975c 100644 --- a/proc.h +++ b/proc.h @@ -32,7 +32,7 @@ struct proc { uint sz; // Size of process memory (bytes) char *kstack; // Bottom of kernel stack for this process enum proc_state state; // Process state - int pid; // Process ID + volatile int pid; // Process ID struct proc *parent; // Parent process struct trapframe *tf; // Trap frame for current syscall struct context *context; // Switch here to run process diff --git a/uart.c b/uart.c index 298066f..4cd1e0f 100644 --- a/uart.c +++ b/uart.c @@ -10,67 +10,67 @@ #include "proc.h" #include "x86.h" -#define COM1 0x3f8 +#define COM1 0x3f8 -static int uart; // is there a uart? +static int uart; // is there a uart? void uartinit(void) { - char *p; + char *p; - // Turn off the FIFO - outb(COM1+2, 0); - - // 9600 baud, 8 data bits, 1 stop bit, parity off. - outb(COM1+3, 0x80); // Unlock divisor - outb(COM1+0, 115200/9600); - outb(COM1+1, 0); - outb(COM1+3, 0x03); // Lock divisor, 8 data bits. - outb(COM1+4, 0); - outb(COM1+1, 0x01); // Enable receive interrupts. + // Turn off the FIFO + outb(COM1+2, 0); + + // 9600 baud, 8 data bits, 1 stop bit, parity off. + outb(COM1+3, 0x80); // Unlock divisor + outb(COM1+0, 115200/9600); + outb(COM1+1, 0); + outb(COM1+3, 0x03); // Lock divisor, 8 data bits. + outb(COM1+4, 0); + outb(COM1+1, 0x01); // Enable receive interrupts. - // If status is 0xFF, no serial port. - if(inb(COM1+5) == 0xFF) - return; - uart = 1; + // If status is 0xFF, no serial port. + if(inb(COM1+5) == 0xFF) + return; + uart = 1; - // Acknowledge pre-existing interrupt conditions; - // enable interrupts. - inb(COM1+2); - inb(COM1+0); - picenable(IRQ_COM1); - ioapicenable(IRQ_COM1, 0); - - // Announce that we're here. - for(p="xv6...\n"; *p; p++) - uartputc(*p); + // Acknowledge pre-existing interrupt conditions; + // enable interrupts. + inb(COM1+2); + inb(COM1+0); + picenable(IRQ_COM1); + ioapicenable(IRQ_COM1, 0); + + // Announce that we're here. + for(p="xv6...\n"; *p; p++) + uartputc(*p); } void uartputc(int c) { - int i; + int i; - if(!uart) - return; - for(i = 0; i < 128 && !(inb(COM1+5) & 0x20); i++) - microdelay(10); - outb(COM1+0, c); + if(!uart) + return; + for(i = 0; i < 128 && !(inb(COM1+5) & 0x20); i++) + microdelay(10); + outb(COM1+0, c); } static int uartgetc(void) { - if(!uart) - return -1; - if(!(inb(COM1+5) & 0x01)) - return -1; - return inb(COM1+0); + if(!uart) + return -1; + if(!(inb(COM1+5) & 0x01)) + return -1; + return inb(COM1+0); } void uartintr(void) { - consoleintr(uartgetc); + consoleintr(uartgetc); }