diff options
author | rtm <rtm> | 2006-08-08 19:58:06 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-08-08 19:58:06 +0000 |
commit | 0e84a0ec6e7893dad13dff9a958c5bc987b79c82 (patch) | |
tree | 5739d0a2af8277db7a47c74e52975d9e9d81cef7 /lapic.c | |
parent | e8d11c2e846ad15b32caacc8a919722b76d00f79 (diff) | |
download | xv6-labs-0e84a0ec6e7893dad13dff9a958c5bc987b79c82.tar.gz xv6-labs-0e84a0ec6e7893dad13dff9a958c5bc987b79c82.tar.bz2 xv6-labs-0e84a0ec6e7893dad13dff9a958c5bc987b79c82.zip |
fix race in holding() check in acquire()
give cpu1 a TSS and gdt for when it enters scheduler()
and a pseudo proc[] entry for each cpu
cpu0 waits for each other cpu to start up
read() for files
Diffstat (limited to 'lapic.c')
-rw-r--r-- | lapic.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -110,7 +110,7 @@ lapic_write(int r, int data) void lapic_timerinit(void) { - cprintf("%d: init timer\n", cpu()); + cprintf("cpu%d: init timer\n", cpu()); lapic_write(LAPIC_TDCR, LAPIC_X1); lapic_write(LAPIC_TIMER, LAPIC_CLKIN | LAPIC_PERIODIC | (IRQ_OFFSET + IRQ_TIMER)); lapic_write(LAPIC_TCCR, 10000000); @@ -120,7 +120,7 @@ lapic_timerinit(void) void lapic_timerintr(void) { - cprintf("%d: timer interrupt!\n", cpu()); + cprintf("cpu%d: timer interrupt!\n", cpu()); lapic_write (LAPIC_EOI, 0); } @@ -129,7 +129,7 @@ lapic_init(int c) { uint r, lvt; - cprintf("lapic_init %d\n", c); + cprintf("cpu%d: lapic_init %d\n", c); lapic_write(LAPIC_DFR, 0xFFFFFFFF); // set destination format register r = (lapic_read(LAPIC_ID)>>24) & 0xFF; // read APIC ID @@ -158,7 +158,7 @@ lapic_init(int c) while(lapic_read(LAPIC_ICRLO) & APIC_DELIVS) ; - cprintf("Done init of an apic\n"); + cprintf("cpu%d: apic init done\n", cpu()); } void @@ -182,7 +182,8 @@ lapic_eoi(void) int cpu(void) { - return (lapic_read(LAPIC_ID)>>24) & 0xFF; + int x = (lapic_read(LAPIC_ID)>>24) & 0xFF; + return x; } void |