ensure distinct query id for parallel A and AAAA queries in resolver
[musl] / src / stdio / flockfile.c
index 6b574cf..8e22065 100644 (file)
@@ -1,14 +1,9 @@
 #include "stdio_impl.h"
 #include "pthread_impl.h"
 
-#define MAYBE_WAITERS 0x40000000
-
 void flockfile(FILE *f)
 {
-       while (ftrylockfile(f)) {
-               int owner = f->lock;
-               if (!owner) continue;
-               a_cas(&f->lock, owner, owner|MAYBE_WAITERS);
-               __futexwait(&f->lock, owner|MAYBE_WAITERS, 1);
-       }
+       if (!ftrylockfile(f)) return;
+       __lockfile(f);
+       __register_locked_file(f, __pthread_self());
 }