#ifndef COSMOPOLITAN_LIBC_INTRIN_ONCE_H_ #define COSMOPOLITAN_LIBC_INTRIN_ONCE_H_ #include "libc/intrin/spinlock.h" #define _once(x) \ ({ \ typeof(x) oncerc; \ static bool once; \ static typeof(oncerc) onceresult; \ _Alignas(64) static char oncelock; \ _spinlock(&oncelock); \ if (once) { \ oncerc = onceresult; \ } else { \ oncerc = onceresult = x; \ } \ _spunlock(&oncelock); \ oncerc; \ }) #endif /* COSMOPOLITAN_LIBC_INTRIN_ONCE_H_ */