* Unlock a userland POSIX mutex. */
| 2510 | * Unlock a userland POSIX mutex. |
| 2511 | */ |
| 2512 | static int |
| 2513 | do_unlock_umutex(struct thread *td, struct umutex *m, bool rb) |
| 2514 | { |
| 2515 | uint32_t flags; |
| 2516 | int error; |
| 2517 | |
| 2518 | error = fueword32(&m->m_flags, &flags); |
| 2519 | if (error == -1) |
| 2520 | return (EFAULT); |
| 2521 | |
| 2522 | switch (flags & (UMUTEX_PRIO_INHERIT | UMUTEX_PRIO_PROTECT)) { |
| 2523 | case 0: |
| 2524 | return (do_unlock_normal(td, m, flags, rb)); |
| 2525 | case UMUTEX_PRIO_INHERIT: |
| 2526 | return (do_unlock_pi(td, m, flags, rb)); |
| 2527 | case UMUTEX_PRIO_PROTECT: |
| 2528 | return (do_unlock_pp(td, m, flags, rb)); |
| 2529 | } |
| 2530 | |
| 2531 | return (EINVAL); |
| 2532 | } |
| 2533 | |
| 2534 | static int |
| 2535 | do_cv_wait(struct thread *td, struct ucond *cv, struct umutex *m, |
no test coverage detected