//
-// macros to create x86 segments from assembler
+// assembler macros to create x86 segments
//
#define SEG_NULLASM \
// Acquire the lock.
// Loops (spins) until the lock is acquired.
-// (Because contention is handled by spinning,
-// must not go to sleep holding any locks.)
+// Holding a lock for a long time may cause
+// other CPUs to waste time spinning to acquire it.
void
acquire(struct spinlock *lock)
{
-// Special assembly routines to access x86-specific
-// hardware instructions.
+// Routines to let C code use special x86 instructions.
static inline uchar
inb(ushort port)
asm volatile("sti");
}
-// Layout of the trap frame on the stack upon entry to trap.
+// Layout of the trap frame built on the stack by the
+// hardware and by trapasm.S, and passed to trap().
struct trapframe {
// registers as pushed by pusha
uint edi;