code: drawterm

ref: d920d42c8bad0719f8a91f5121d5f7c080e2a332
dir: /win32-386/tas.c/

View raw version
// could also use windozy InterlockedCompareExchange(p, 1, 0), but why
int
tas(long *p)
{	
	int v;
	
	_asm {
		mov	eax, p
		mov	ebx, 1
		xchg	ebx, [eax]
		mov	v, ebx
	}

	switch(v) {
	case 0:
	case 1:
		return v;
	default:
		print("canlock: corrupted 0x%lux\n", v);
		return 1;
	}
}