00000144 : 144: 55 push %ebp 145: 89 e5 mov %esp,%ebp 147: 83 ec 08 sub $0x8,%esp 14a: 8b 45 08 mov 0x8(%ebp),%eax 14d: 83 c0 08 add $0x8,%eax 150: 89 04 24 mov %eax,(%esp) 153: e8 fc ff ff ff call 154 154: R_386_PC32 spinlock_acquire 158: 8b 45 08 mov 0x8(%ebp),%eax 15b: 83 78 04 00 cmpl $0x0,0x4(%eax) #lock == UNLOCKED? 15f: 75 1a jne 17b #no? -> block! ###l->status == UNLOCKED 161: 8b 45 08 mov 0x8(%ebp),%eax 164: c7 40 04 01 00 00 00 movl $0x1,0x4(%eax) #l->status = LOCKED; 16b: 8b 45 08 mov 0x8(%ebp),%eax 16e: 83 c0 08 add $0x8,%eax #push &l->spinlock 171: 89 04 24 mov %eax,(%esp) 174: e8 fc ff ff ff call 175 #spinlock_release(&l->spinlock); 175: R_386_PC32 spinlock_release 179: eb 15 jmp 190 #return ###l->status == LOCKED 17b: 8b 45 08 mov 0x8(%ebp),%eax 17e: 83 c0 08 add $0x8,%eax 181: 89 44 24 04 mov %eax,0x4(%esp) #push &l->spinlock 185: 8b 45 08 mov 0x8(%ebp),%eax 188: 89 04 24 mov %eax,(%esp) #push &l->waiting 18b: e8 fc ff ff ff call 18c #block(&l->waiting, &l->spinlock); 18c: R_386_PC32 block 190: c9 leave 191: c3 ret