| 3484 | } |
| 3485 | |
| 3486 | static int |
| 3487 | __umtx_op_wait_uint(struct thread *td, struct _umtx_op_args *uap, |
| 3488 | const struct umtx_copyops *ops) |
| 3489 | { |
| 3490 | struct _umtx_time timeout, *tm_p; |
| 3491 | int error; |
| 3492 | |
| 3493 | if (uap->uaddr2 == NULL) |
| 3494 | tm_p = NULL; |
| 3495 | else { |
| 3496 | error = ops->copyin_umtx_time( |
| 3497 | uap->uaddr2, (size_t)uap->uaddr1, &timeout); |
| 3498 | if (error != 0) |
| 3499 | return (error); |
| 3500 | tm_p = &timeout; |
| 3501 | } |
| 3502 | return (do_wait(td, uap->obj, uap->val, tm_p, 1, 0)); |
| 3503 | } |
| 3504 | |
| 3505 | static int |
| 3506 | __umtx_op_wait_uint_private(struct thread *td, struct _umtx_op_args *uap, |