Lines Matching refs:uaddr
104 static rt_futex_t _pftx_create_locked(int *uaddr, struct rt_lwp *lwp) in _pftx_create_locked() argument
149 futex->node.avl_key = (avl_key_t)uaddr; in _pftx_create_locked()
172 static rt_futex_t _pftx_get(void *uaddr, struct rt_lwp *lwp, int op, in _pftx_get() argument
185 node = lwp_avl_find((avl_key_t)uaddr, lwp->address_search_head); in _pftx_get()
194 futex = _pftx_create_locked(uaddr, lwp); in _pftx_get()
274 static rt_futex_t _sftx_get(void *uaddr, struct rt_lwp *lwp, int op, in _sftx_get() argument
283 varea = rt_aspace_query(lwp->aspace, uaddr); in _sftx_get()
288 ((long)uaddr & ((1 << MM_PAGE_SHIFT) - 1)); in _sftx_get()
315 static rt_futex_t _futex_get(void *uaddr, struct rt_lwp *lwp, int op_flags, in _futex_get() argument
322 futex = _pftx_get(uaddr, lwp, op_flags, rc); in _futex_get()
326 futex = _sftx_get(uaddr, lwp, op_flags, rc); in _futex_get()
371 rt_inline int _futex_cmpxchg_value(int *curval, int *uaddr, int uval, in _futex_cmpxchg_value() argument
376 if (!lwp_user_accessable((void *)uaddr, sizeof(*uaddr))) in _futex_cmpxchg_value()
382 if (!atomic_compare_exchange_strong(uaddr, &uval, newval)) in _futex_cmpxchg_value()
392 static int _futex_wait(rt_futex_t futex, struct rt_lwp *lwp, int *uaddr, in _futex_wait() argument
409 if (*uaddr == value) in _futex_wait()
566 static long _futex_lock_pi(rt_futex_t futex, struct rt_lwp *lwp, int *uaddr, in _futex_lock_pi() argument
576 if (!lwp_user_accessable((void *)uaddr, sizeof(*uaddr))) in _futex_lock_pi()
585 lwp_get_from_user(&word, (void *)uaddr, sizeof(int)); in _futex_lock_pi()
592 if (_futex_cmpxchg_value(&cword, uaddr, word, nword)) in _futex_lock_pi()
612 if (_futex_cmpxchg_value(&cword, uaddr, word, nword)) in _futex_lock_pi()
654 if (_futex_cmpxchg_value(&cword, uaddr, word, nword)) in _futex_lock_pi()
694 sysret_t sys_futex(int *uaddr, int op, int val, const struct timespec *timeout, in sys_futex() argument
700 if (!lwp_user_accessable(uaddr, sizeof(int))) in sys_futex()
712 ret = lwp_futex(lwp, uaddr, op, val, timeout, uaddr2, val3); in sys_futex()
719 rt_err_t lwp_futex(struct rt_lwp *lwp, int *uaddr, int op, int val, in lwp_futex() argument
727 futex = _futex_get(uaddr, lwp, op_flags, &rc); in lwp_futex()
733 rc = _futex_wait(futex, lwp, uaddr, val, timeout, op_flags); in lwp_futex()
751 if (*uaddr == val3) in lwp_futex()
767 rc = _futex_lock_pi(futex, lwp, uaddr, timeout, op_flags, in lwp_futex()
774 rc = _futex_lock_pi(futex, lwp, uaddr, 0, op_flags, RT_TRUE); in lwp_futex()
808 static int _handle_futex_death(int *uaddr, rt_thread_t thread, rt_bool_t is_pi, in _handle_futex_death() argument
817 if ((((unsigned long)uaddr) % sizeof(*uaddr)) != 0) in _handle_futex_death()
823 if (!lwp_user_accessable((void *)uaddr, sizeof(*uaddr))) in _handle_futex_death()
828 if (lwp_get_from_user(&word, (void *)uaddr, sizeof(*uaddr)) != in _handle_futex_death()
829 sizeof(*uaddr)) in _handle_futex_death()
834 futex = _futex_get(uaddr, lwp, FUTEX_PRIVATE, &rc); in _handle_futex_death()
846 if ((rc = _futex_cmpxchg_value(&cword, uaddr, word, nword))) in _handle_futex_death()