#include "textflag.h" | |
#define preparingG 1 | |
// See commit_noasm.go for a description of commitSleep. | |
// | |
// func commitSleep(g uintptr, waitingG *uintptr) bool | |
TEXT ·commitSleep(SB),NOSPLIT,$0-24 | |
MOVQ waitingG+8(FP), CX | |
MOVQ g+0(FP), DX | |
// Store the G in waitingG if it's still preparingG. If it's anything | |
// else it means a waker has aborted the sleep. | |
MOVQ $preparingG, AX | |
LOCK | |
CMPXCHGQ DX, 0(CX) | |
SETEQ AX | |
MOVB AX, ret+16(FP) | |
RET |