* @brief Get a futex (private or shared) for given user address * * @param[in] uaddr User-space address to lookup futex for * @param[in] lwp Pointer to lightweight process structure * @param[in] op_flags Operation flags (FUTEX_PRIVATE for private futex) * @param[out] rc Pointer to store result code (0 on success, error code on failure) * * @return Pointer to existing/new futex on success, N
| 407 | * - _sftx_get for shared futexes (FUTEX_PRIVATE flag not set) |
| 408 | */ |
| 409 | static rt_futex_t _futex_get(void *uaddr, struct rt_lwp *lwp, int op_flags, |
| 410 | rt_err_t *rc) |
| 411 | { |
| 412 | rt_futex_t futex = RT_NULL; |
| 413 | |
| 414 | if (op_flags & FUTEX_PRIVATE) |
| 415 | { |
| 416 | futex = _pftx_get(uaddr, lwp, op_flags, rc); |
| 417 | } |
| 418 | else |
| 419 | { |
| 420 | futex = _sftx_get(uaddr, lwp, op_flags, rc); |
| 421 | } |
| 422 | |
| 423 | return futex; |
| 424 | } |
| 425 | |
| 426 | /** |
| 427 | * @brief Suspend a thread with timeout and add it to futex waiting list |
no test coverage detected