Lines Matching refs:args
105 struct linux_futex_args args; in futex_wake() local
107 bzero(&args, sizeof(args)); in futex_wake()
108 args.op = LINUX_FUTEX_WAKE; in futex_wake()
109 args.uaddr = uaddr; in futex_wake()
110 args.flags = shared == true ? FUTEX_SHARED : 0; in futex_wake()
111 args.val = val; in futex_wake()
112 args.val3 = FUTEX_BITSET_MATCH_ANY; in futex_wake()
114 return (linux_futex_wake(td, &args)); in futex_wake()
120 struct linux_futex_args args; in futex_wake_pi() local
122 bzero(&args, sizeof(args)); in futex_wake_pi()
123 args.op = LINUX_FUTEX_UNLOCK_PI; in futex_wake_pi()
124 args.uaddr = uaddr; in futex_wake_pi()
125 args.flags = shared == true ? FUTEX_SHARED : 0; in futex_wake_pi()
127 return (linux_futex_unlock_pi(td, true, &args)); in futex_wake_pi()
194 linux_futex(struct thread *td, struct linux_futex_args *args) in linux_futex() argument
199 if (args->op & LINUX_FUTEX_PRIVATE_FLAG) { in linux_futex()
200 args->flags = 0; in linux_futex()
201 args->op &= ~LINUX_FUTEX_PRIVATE_FLAG; in linux_futex()
203 args->flags = FUTEX_SHARED; in linux_futex()
205 args->clockrt = args->op & LINUX_FUTEX_CLOCK_REALTIME; in linux_futex()
206 args->op = args->op & ~LINUX_FUTEX_CLOCK_REALTIME; in linux_futex()
208 if (args->clockrt && in linux_futex()
209 args->op != LINUX_FUTEX_WAIT_BITSET && in linux_futex()
210 args->op != LINUX_FUTEX_WAIT_REQUEUE_PI && in linux_futex()
211 args->op != LINUX_FUTEX_LOCK_PI2) in linux_futex()
214 switch (args->op) { in linux_futex()
216 args->val3 = FUTEX_BITSET_MATCH_ANY; in linux_futex()
221 args->uaddr, args->val, args->val3); in linux_futex()
223 return (linux_futex_wait(td, args)); in linux_futex()
226 args->val3 = FUTEX_BITSET_MATCH_ANY; in linux_futex()
231 args->uaddr, args->val, args->val3); in linux_futex()
233 return (linux_futex_wake(td, args)); in linux_futex()
257 args->val3_compare = false; in linux_futex()
263 args->uaddr, args->val, args->val3, args->uaddr2, in linux_futex()
264 args->ts); in linux_futex()
266 return (linux_futex_requeue(td, args)); in linux_futex()
271 args->uaddr, args->val, args->uaddr2, args->val3, in linux_futex()
272 args->ts); in linux_futex()
274 return (linux_futex_wakeop(td, args)); in linux_futex()
277 args->clockrt = true; in linux_futex()
282 args->uaddr, args->val); in linux_futex()
284 return (linux_futex_lock_pi(td, false, args)); in linux_futex()
288 args->uaddr); in linux_futex()
290 return (linux_futex_unlock_pi(td, false, args)); in linux_futex()
294 args->uaddr); in linux_futex()
296 return (linux_futex_lock_pi(td, true, args)); in linux_futex()
329 linux_msg(td, "unsupported futex op %d", args->op); in linux_futex()
357 linux_futex_lock_pi(struct thread *td, bool try, struct linux_futex_args *args) in linux_futex_lock_pi() argument
369 error = futex_key_get(args->uaddr, TYPE_PI_FUTEX, GET_SHARED(args), in linux_futex_lock_pi()
373 if (args->ts != NULL) in linux_futex_lock_pi()
374 linux_umtx_abs_timeout_init(&timo, args); in linux_futex_lock_pi()
400 rv = casueword32(args->uaddr, FUTEX_UNOWNED, &owner, em->em_tid); in linux_futex_lock_pi()
446 rv = casueword32(args->uaddr, old_owner, &owner, owner); in linux_futex_lock_pi()
477 (void)casuword32(args->uaddr, owner, old_owner); in linux_futex_lock_pi()
513 rv = casueword32(args->uaddr, owner, &owner, in linux_futex_lock_pi()
551 args->ts == NULL ? NULL : &timo, in linux_futex_lock_pi()
552 (args->flags & FUTEX_SHARED) != 0); in linux_futex_lock_pi()
569 linux_futex_unlock_pi(struct thread *td, bool rb, struct linux_futex_args *args) in linux_futex_unlock_pi() argument
581 error = fueword32(args->uaddr, &owner); in linux_futex_unlock_pi()
587 error = futex_key_get(args->uaddr, TYPE_PI_FUTEX, GET_SHARED(args), &key); in linux_futex_unlock_pi()
612 error = casueword32(args->uaddr, owner, &old, new_owner); in linux_futex_unlock_pi()
628 linux_futex_wakeop(struct thread *td, struct linux_futex_args *args) in linux_futex_wakeop() argument
634 if (args->uaddr == args->uaddr2) in linux_futex_wakeop()
637 error = futex_key_get(args->uaddr, TYPE_FUTEX, GET_SHARED(args), &key); in linux_futex_wakeop()
640 error = futex_key_get(args->uaddr2, TYPE_FUTEX, GET_SHARED(args), &key2); in linux_futex_wakeop()
648 error = futex_atomic_op(td, args->val3, args->uaddr2, &op_ret); in linux_futex_wakeop()
653 ret = umtxq_signal_mask(&key, args->val, args->val3); in linux_futex_wakeop()
655 nrwake = (int)(unsigned long)args->ts; in linux_futex_wakeop()
659 ret += umtxq_signal_mask(&key2, nrwake, args->val3); in linux_futex_wakeop()
661 ret += umtxq_signal_mask(&key, nrwake, args->val3); in linux_futex_wakeop()
673 linux_futex_requeue(struct thread *td, struct linux_futex_args *args) in linux_futex_requeue() argument
684 if (args->uaddr == args->uaddr2) in linux_futex_requeue()
687 nrrequeue = (int)(unsigned long)args->ts; in linux_futex_requeue()
688 nrwake = args->val; in linux_futex_requeue()
696 error = futex_key_get(args->uaddr, TYPE_FUTEX, GET_SHARED(args), &key); in linux_futex_requeue()
699 error = futex_key_get(args->uaddr2, TYPE_FUTEX, GET_SHARED(args), &key2); in linux_futex_requeue()
707 error = fueword32(args->uaddr, &uval); in linux_futex_requeue()
710 else if (args->val3_compare == true && uval != args->val3) in linux_futex_requeue()
726 linux_futex_wake(struct thread *td, struct linux_futex_args *args) in linux_futex_wake() argument
731 if (args->val3 == 0) in linux_futex_wake()
734 error = futex_key_get(args->uaddr, TYPE_FUTEX, GET_SHARED(args), &key); in linux_futex_wake()
738 td->td_retval[0] = umtxq_signal_mask(&key, args->val, args->val3); in linux_futex_wake()
745 linux_futex_wait(struct thread *td, struct linux_futex_args *args) in linux_futex_wait() argument
752 if (args->val3 == 0) in linux_futex_wait()
756 error = futex_key_get(args->uaddr, TYPE_FUTEX, GET_SHARED(args), in linux_futex_wait()
760 if (args->ts != NULL) in linux_futex_wait()
761 linux_umtx_abs_timeout_init(&timo, args); in linux_futex_wait()
764 uq->uq_bitset = args->val3; in linux_futex_wait()
767 error = fueword32(args->uaddr, &uval); in linux_futex_wait()
770 else if (uval != args->val) in linux_futex_wait()
776 args->ts == NULL ? NULL : &timo); in linux_futex_wait()
793 struct linux_futex_args *args) in linux_umtx_abs_timeout_init() argument
806 clockid = args->clockrt ? CLOCK_REALTIME : CLOCK_MONOTONIC; in linux_umtx_abs_timeout_init()
807 absolute = args->op == LINUX_FUTEX_WAIT ? false : true; in linux_umtx_abs_timeout_init()
808 umtx_abs_timeout_init(timo, clockid, absolute, args->ts); in linux_umtx_abs_timeout_init()
812 linux_sys_futex(struct thread *td, struct linux_sys_futex_args *args) in linux_sys_futex() argument
815 .uaddr = args->uaddr, in linux_sys_futex()
816 .op = args->op, in linux_sys_futex()
817 .val = args->val, in linux_sys_futex()
819 .uaddr2 = args->uaddr2, in linux_sys_futex()
820 .val3 = args->val3, in linux_sys_futex()
825 switch (args->op & LINUX_FUTEX_CMD_MASK) { in linux_sys_futex()
830 if (args->timeout != NULL) { in linux_sys_futex()
831 error = linux_get_timespec(&fargs.kts, args->timeout); in linux_sys_futex()
838 fargs.ts = PTRIN(args->timeout); in linux_sys_futex()
846 struct linux_sys_futex_time64_args *args) in linux_sys_futex_time64() argument
849 .uaddr = args->uaddr, in linux_sys_futex_time64()
850 .op = args->op, in linux_sys_futex_time64()
851 .val = args->val, in linux_sys_futex_time64()
853 .uaddr2 = args->uaddr2, in linux_sys_futex_time64()
854 .val3 = args->val3, in linux_sys_futex_time64()
859 switch (args->op & LINUX_FUTEX_CMD_MASK) { in linux_sys_futex_time64()
864 if (args->timeout != NULL) { in linux_sys_futex_time64()
865 error = linux_get_timespec64(&fargs.kts, args->timeout); in linux_sys_futex_time64()
872 fargs.ts = PTRIN(args->timeout); in linux_sys_futex_time64()
879 linux_set_robust_list(struct thread *td, struct linux_set_robust_list_args *args) in linux_set_robust_list() argument
883 if (args->len != sizeof(struct linux_robust_list_head)) in linux_set_robust_list()
887 em->robust_futexes = args->head; in linux_set_robust_list()
893 linux_get_robust_list(struct thread *td, struct linux_get_robust_list_args *args) in linux_get_robust_list() argument
901 if (!args->pid) { in linux_get_robust_list()
906 td2 = linux_tdfind(td, args->pid, -1); in linux_get_robust_list()
929 error = copyout(&len, args->len, sizeof(l_size_t)); in linux_get_robust_list()
933 return (copyout(&head, args->head, sizeof(l_uintptr_t))); in linux_get_robust_list()