123456789101112131415161718 |
- #include "stdio_impl.h"
- #include "pthread_impl.h"
- int ftrylockfile(FILE *f)
- {
- int tid = pthread_self()->tid;
- if (f->lock == tid) {
- if (f->lockcount == LONG_MAX)
- return -1;
- f->lockcount++;
- return 0;
- }
- if (f->lock < 0) f->lock = 0;
- if (f->lock || a_cas(&f->lock, 0, tid))
- return -1;
- f->lockcount = 1;
- return 0;
- }
|