WRITER
if (COUNT(val) == WRITER)
if (val == UNLOCKED || (COUNT(val)) != WRITER)
if (atomic_cas_uint(&rwlock->value, UNLOCKED, WRITER) != UNLOCKED)
if (COUNT(val) == WRITER || COUNT(val) == 1)
#define COUNT(v) ((v) & WRITER)
etype = WRITER;
case WRITER:
case WRITER: