1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
int owner(); int clear(); static void fixup() { clear(); } inline __attribute__ ((always_inline)) void slowtrylock(void) { if (owner()) fixup(); } void fasttrylock(void (*slowfn)()) { slowfn(); } void trylock(void) { fasttrylock(slowtrylock); }