diff options
author | rsc <rsc> | 2006-07-16 01:15:28 +0000 |
---|---|---|
committer | rsc <rsc> | 2006-07-16 01:15:28 +0000 |
commit | 65bd8e139a8368e987455a10ec59dd7b079b3af1 (patch) | |
tree | 8ce996135fadab4abde8acf5a6ed4eb69d463c60 /main.c | |
parent | 40a2a08319511fd157d2d77eefbda52423cc81ec (diff) | |
download | xv6-labs-65bd8e139a8368e987455a10ec59dd7b079b3af1.tar.gz xv6-labs-65bd8e139a8368e987455a10ec59dd7b079b3af1.tar.bz2 xv6-labs-65bd8e139a8368e987455a10ec59dd7b079b3af1.zip |
New scheduler.
Removed cli and sti stack in favor of tracking
number of locks held on each CPU and explicit
conditionals in spinlock.c.
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 10 |
1 files changed, 5 insertions, 5 deletions
@@ -18,19 +18,19 @@ extern uint8_t _binary_userfs_start[], _binary_userfs_size[]; extern int use_console_lock; +struct spinlock sillylock; // hold this to keep interrupts disabled + int main() { struct proc *p; if (acpu) { - cpus[cpu()].clis = 1; cprintf("an application processor\n"); idtinit(); // CPU's idt lapic_init(cpu()); lapic_timerinit(); lapic_enableintr(); - sti(); scheduler(); } acpu = 1; @@ -40,10 +40,9 @@ main() mp_init(); // collect info about this machine + acquire(&sillylock); use_console_lock = 1; - cpus[cpu()].clis = 1; // cpu starts as if we had called cli() - lapic_init(mp_bcpu()); cprintf("\nxV6\n\n"); @@ -56,7 +55,7 @@ main() // create fake process zero p = &proc[0]; memset(p, 0, sizeof *p); - p->state = WAITING; + p->state = SLEEPING; p->sz = 4 * PAGE; p->mem = kalloc(p->sz); memset(p->mem, 0, p->sz); @@ -88,6 +87,7 @@ main() //load_icode(p, _binary_userfs_start, (unsigned) _binary_userfs_size); p->state = RUNNABLE; cprintf("loaded userfs\n"); + release(&sillylock); scheduler(); |