Lines Matching defs:inst
63 struct instance *inst;
74 inst = b->_b_inst;
77 if (!inst) {
80 b->_b_inst = inst = &new_inst;
83 while (spins-- && !inst->finished)
85 a_inc(&inst->finished);
86 while (inst->finished == 1)
88 __syscall(SYS_futex, &inst->finished, FUTEX_WAIT | FUTEX_PRIVATE, 1, 0xffffffffu) != -ENOSYS
89 || __syscall(SYS_futex, &inst->finished, FUTEX_WAIT, 1, 0xffffffffu);
91 __syscall(SYS_futex,&inst->finished,FUTEX_WAIT|FUTEX_PRIVATE,1,0) != -ENOSYS
92 || __syscall(SYS_futex,&inst->finished,FUTEX_WAIT,1,0);
98 if (++inst->count == limit) {
102 a_store(&inst->last, 1);
103 if (inst->waiters)
104 __wake(&inst->last, -1, 1);
108 __wait(&inst->last, &inst->waiters, 0, 1);
112 if (a_fetch_add(&inst->count,-1)==1 && a_fetch_add(&inst->finished,1))
113 __wake(&inst->finished, 1, 1);