| 3666 | } |
| 3667 | |
| 3668 | static int |
| 3669 | __umtx_op_cv_wait(struct thread *td, struct _umtx_op_args *uap, |
| 3670 | const struct umtx_copyops *ops) |
| 3671 | { |
| 3672 | struct timespec *ts, timeout; |
| 3673 | int error; |
| 3674 | |
| 3675 | /* Allow a null timespec (wait forever). */ |
| 3676 | if (uap->uaddr2 == NULL) |
| 3677 | ts = NULL; |
| 3678 | else { |
| 3679 | error = ops->copyin_timeout(uap->uaddr2, &timeout); |
| 3680 | if (error != 0) |
| 3681 | return (error); |
| 3682 | ts = &timeout; |
| 3683 | } |
| 3684 | return (do_cv_wait(td, uap->obj, uap->uaddr1, ts, uap->val)); |
| 3685 | } |
| 3686 | |
| 3687 | static int |
| 3688 | __umtx_op_cv_signal(struct thread *td, struct _umtx_op_args *uap, |
nothing calls this directly
no test coverage detected