Lines Matching refs:args
113 struct thread_arg *args = (struct thread_arg *)arg; in waiterfn() local
116 info("Waiter %ld: running\n", args->id); in waiterfn()
120 usleep(1000 * (long)args->id); in waiterfn()
126 args->ret = futex_wait_requeue_pi(&f1, old_val, &f2, args->timeout, in waiterfn()
129 info("waiter %ld woke with %d %s\n", args->id, args->ret, in waiterfn()
130 args->ret < 0 ? strerror(errno) : ""); in waiterfn()
132 if (args->ret < 0) { in waiterfn()
133 if (args->timeout && errno == ETIMEDOUT) in waiterfn()
134 args->ret = 0; in waiterfn()
136 args->ret = RET_ERROR; in waiterfn()
143 info("Waiter %ld: exiting with %d\n", args->id, args->ret); in waiterfn()
144 pthread_exit((void *)&args->ret); in waiterfn()
149 struct thread_arg *args = (struct thread_arg *)arg; in broadcast_wakerfn() local
162 if (args->lock) { in broadcast_wakerfn()
168 args->ret = futex_cmp_requeue_pi(&f1, old_val, &f2, nr_wake, nr_requeue, in broadcast_wakerfn()
170 if (args->ret < 0) { in broadcast_wakerfn()
171 args->ret = RET_ERROR; in broadcast_wakerfn()
174 task_count += args->ret; in broadcast_wakerfn()
180 args->ret = RET_ERROR; in broadcast_wakerfn()
185 if (args->lock) in broadcast_wakerfn()
188 if (args->ret > 0) in broadcast_wakerfn()
189 args->ret = task_count; in broadcast_wakerfn()
191 info("Waker: exiting with %d\n", args->ret); in broadcast_wakerfn()
192 pthread_exit((void *)&args->ret); in broadcast_wakerfn()
197 struct thread_arg *args = (struct thread_arg *)arg; in signal_wakerfn() local
212 if (args->lock) { in signal_wakerfn()
220 args->ret = futex_cmp_requeue_pi(&f1, old_val, &f2, in signal_wakerfn()
223 if (args->ret < 0) in signal_wakerfn()
224 args->ret = -errno; in signal_wakerfn()
226 if (args->lock) { in signal_wakerfn()
232 if (args->ret < 0) { in signal_wakerfn()
234 args->ret = RET_ERROR; in signal_wakerfn()
238 task_count += args->ret; in signal_wakerfn()
245 args->ret = RET_ERROR; in signal_wakerfn()
252 if (args->ret >= 0) in signal_wakerfn()
253 args->ret = task_count; in signal_wakerfn()
255 info("Waker: exiting with %d\n", args->ret); in signal_wakerfn()
257 pthread_exit((void *)&args->ret); in signal_wakerfn()
262 struct thread_arg *args = (struct thread_arg *)arg; in third_party_blocker() local
265 args->ret = futex_lock_pi(&f2, NULL, 0, FUTEX_PRIVATE_FLAG); in third_party_blocker()
266 if (args->ret) in third_party_blocker()
268 args->ret = futex_wait(&wake_complete, wake_complete, NULL, in third_party_blocker()
273 if (args->ret || ret2) { in third_party_blocker()
275 args->ret = RET_ERROR; in third_party_blocker()
278 pthread_exit((void *)&args->ret); in third_party_blocker()
288 struct thread_arg args[THREAD_MAX]; in unit_test() local
320 args[i].id = i; in unit_test()
321 args[i].timeout = tsp; in unit_test()
323 if (create_rt_thread(&waiter[i], waiterfn, (void *)&args[i], in unit_test()
340 waiter_ret = &args[0].ret; in unit_test()