Lines Matching refs:args
112 struct thread_arg *args = (struct thread_arg *)arg; in waiterfn() local
115 info("Waiter %ld: running\n", args->id); in waiterfn()
119 usleep(1000 * (long)args->id); in waiterfn()
125 args->ret = futex_wait_requeue_pi(&f1, old_val, &f2, args->timeout, in waiterfn()
128 info("waiter %ld woke with %d %s\n", args->id, args->ret, in waiterfn()
129 args->ret < 0 ? strerror(errno) : ""); in waiterfn()
131 if (args->ret < 0) { in waiterfn()
132 if (args->timeout && errno == ETIMEDOUT) in waiterfn()
133 args->ret = 0; in waiterfn()
135 args->ret = RET_ERROR; in waiterfn()
142 info("Waiter %ld: exiting with %d\n", args->id, args->ret); in waiterfn()
143 pthread_exit((void *)&args->ret); in waiterfn()
148 struct thread_arg *args = (struct thread_arg *)arg; in broadcast_wakerfn() local
161 if (args->lock) { in broadcast_wakerfn()
167 args->ret = futex_cmp_requeue_pi(&f1, old_val, &f2, nr_wake, nr_requeue, in broadcast_wakerfn()
169 if (args->ret < 0) { in broadcast_wakerfn()
170 args->ret = RET_ERROR; in broadcast_wakerfn()
173 task_count += args->ret; in broadcast_wakerfn()
179 args->ret = RET_ERROR; in broadcast_wakerfn()
184 if (args->lock) in broadcast_wakerfn()
187 if (args->ret > 0) in broadcast_wakerfn()
188 args->ret = task_count; in broadcast_wakerfn()
190 info("Waker: exiting with %d\n", args->ret); in broadcast_wakerfn()
191 pthread_exit((void *)&args->ret); in broadcast_wakerfn()
196 struct thread_arg *args = (struct thread_arg *)arg; in signal_wakerfn() local
211 if (args->lock) { in signal_wakerfn()
219 args->ret = futex_cmp_requeue_pi(&f1, old_val, &f2, in signal_wakerfn()
222 if (args->ret < 0) in signal_wakerfn()
223 args->ret = -errno; in signal_wakerfn()
225 if (args->lock) { in signal_wakerfn()
231 if (args->ret < 0) { in signal_wakerfn()
233 args->ret = RET_ERROR; in signal_wakerfn()
237 task_count += args->ret; in signal_wakerfn()
244 args->ret = RET_ERROR; in signal_wakerfn()
251 if (args->ret >= 0) in signal_wakerfn()
252 args->ret = task_count; in signal_wakerfn()
254 info("Waker: exiting with %d\n", args->ret); in signal_wakerfn()
256 pthread_exit((void *)&args->ret); in signal_wakerfn()
261 struct thread_arg *args = (struct thread_arg *)arg; in third_party_blocker() local
264 args->ret = futex_lock_pi(&f2, NULL, 0, FUTEX_PRIVATE_FLAG); in third_party_blocker()
265 if (args->ret) in third_party_blocker()
267 args->ret = futex_wait(&wake_complete, wake_complete, NULL, in third_party_blocker()
272 if (args->ret || ret2) { in third_party_blocker()
274 args->ret = RET_ERROR; in third_party_blocker()
277 pthread_exit((void *)&args->ret); in third_party_blocker()
287 struct thread_arg args[THREAD_MAX]; in unit_test() local
319 args[i].id = i; in unit_test()
320 args[i].timeout = tsp; in unit_test()
322 if (create_rt_thread(&waiter[i], waiterfn, (void *)&args[i], in unit_test()
339 waiter_ret = &args[0].ret; in unit_test()