Lines Matching refs:args
110 struct thread_arg *args = (struct thread_arg *)arg; in waiterfn() local
113 info("Waiter %ld: running\n", args->id); in waiterfn()
117 usleep(1000 * (long)args->id); in waiterfn()
123 args->ret = futex_wait_requeue_pi(&f1, old_val, &f2, args->timeout, in waiterfn()
126 info("waiter %ld woke with %d %s\n", args->id, args->ret, in waiterfn()
127 args->ret < 0 ? strerror(errno) : ""); in waiterfn()
129 if (args->ret < 0) { in waiterfn()
130 if (args->timeout && errno == ETIMEDOUT) in waiterfn()
131 args->ret = 0; in waiterfn()
133 args->ret = RET_ERROR; in waiterfn()
140 info("Waiter %ld: exiting with %d\n", args->id, args->ret); in waiterfn()
141 pthread_exit((void *)&args->ret); in waiterfn()
146 struct thread_arg *args = (struct thread_arg *)arg; in broadcast_wakerfn() local
159 if (args->lock) { in broadcast_wakerfn()
165 args->ret = futex_cmp_requeue_pi(&f1, old_val, &f2, nr_wake, nr_requeue, in broadcast_wakerfn()
167 if (args->ret < 0) { in broadcast_wakerfn()
168 args->ret = RET_ERROR; in broadcast_wakerfn()
171 task_count += args->ret; in broadcast_wakerfn()
177 args->ret = RET_ERROR; in broadcast_wakerfn()
182 if (args->lock) in broadcast_wakerfn()
185 if (args->ret > 0) in broadcast_wakerfn()
186 args->ret = task_count; in broadcast_wakerfn()
188 info("Waker: exiting with %d\n", args->ret); in broadcast_wakerfn()
189 pthread_exit((void *)&args->ret); in broadcast_wakerfn()
194 struct thread_arg *args = (struct thread_arg *)arg; in signal_wakerfn() local
209 if (args->lock) { in signal_wakerfn()
217 args->ret = futex_cmp_requeue_pi(&f1, old_val, &f2, in signal_wakerfn()
220 if (args->ret < 0) in signal_wakerfn()
221 args->ret = -errno; in signal_wakerfn()
223 if (args->lock) { in signal_wakerfn()
229 if (args->ret < 0) { in signal_wakerfn()
231 args->ret = RET_ERROR; in signal_wakerfn()
235 task_count += args->ret; in signal_wakerfn()
242 args->ret = RET_ERROR; in signal_wakerfn()
249 if (args->ret >= 0) in signal_wakerfn()
250 args->ret = task_count; in signal_wakerfn()
252 info("Waker: exiting with %d\n", args->ret); in signal_wakerfn()
254 pthread_exit((void *)&args->ret); in signal_wakerfn()
259 struct thread_arg *args = (struct thread_arg *)arg; in third_party_blocker() local
262 args->ret = futex_lock_pi(&f2, NULL, 0, FUTEX_PRIVATE_FLAG); in third_party_blocker()
263 if (args->ret) in third_party_blocker()
265 args->ret = futex_wait(&wake_complete, wake_complete, NULL, in third_party_blocker()
270 if (args->ret || ret2) { in third_party_blocker()
272 args->ret = RET_ERROR; in third_party_blocker()
275 pthread_exit((void *)&args->ret); in third_party_blocker()
285 struct thread_arg args[THREAD_MAX]; in unit_test() local
317 args[i].id = i; in unit_test()
318 args[i].timeout = tsp; in unit_test()
320 if (create_rt_thread(&waiter[i], waiterfn, (void *)&args[i], in unit_test()
337 waiter_ret = &args[0].ret; in unit_test()