diff --git a/kernel/proc.c b/kernel/proc.c index 46ac128..0655783 100644 --- a/kernel/proc.c +++ b/kernel/proc.c @@ -64,8 +64,10 @@ allocpid() { int pid; acquire(&pid_lock); - pid = nextpid++; + pid = nextpid; + nextpid = nextpid + 1; release(&pid_lock); + return pid; } diff --git a/kernel/spinlock.c b/kernel/spinlock.c index 5a44a46..52bd504 100644 --- a/kernel/spinlock.c +++ b/kernel/spinlock.c @@ -18,8 +18,6 @@ initlock(struct spinlock *lk, char *name) // Acquire the lock. // Loops (spins) until the lock is acquired. -// Holding a lock for a long time may cause -// other CPUs to waste time spinning to acquire it. void acquire(struct spinlock *lk) { @@ -81,7 +79,7 @@ holding(struct spinlock *lk) } // push_off/pop_off are like intr_off()/intr_on() except that they are matched: -// it takes two pop_off to undo two push_off. Also, if interrupts +// it takes two pop_off()s to undo two push_off()s. Also, if interrupts // are initially off, then push_off, pop_off leaves them off. void diff --git a/kernel/spinlock.h b/kernel/spinlock.h index 5f244c9..4392820 100644 --- a/kernel/spinlock.h +++ b/kernel/spinlock.h @@ -5,7 +5,5 @@ struct spinlock { // For debugging: char *name; // Name of lock. struct cpu *cpu; // The cpu holding the lock. - struct cpu *last_release; - uint64 last_pc; };