futex_lock_pi_atomic — Atomic work required to acquire a pi aware futex


int futex_lock_pi_atomic (u32 __user * uaddr,
 struct futex_hash_bucket * hb,
 union futex_key * key,
 struct futex_pi_state ** ps,
 struct task_struct * task,
 int set_waiters);


u32 __user * uaddr

the pi futex user address

struct futex_hash_bucket * hb

the pi futex hash bucket

union futex_key * key

the futex key associated with uaddr and hb

struct futex_pi_state ** ps

the pi_state pointer where we store the result of the lookup

struct task_struct * task

the task to perform the atomic lock work for. This will be current except in the case of requeue pi.

int set_waiters

force setting the FUTEX_WAITERS bit (1) or not (0)


0 - ready to wait; 1 - acquired the lock; <0 - error

The hb->lock and futex_key refs shall be held by the caller.