Lines Matching refs:key
204 union futex_key key; member
234 union futex_key key; member
243 .key = FUTEX_KEY_INIT,
331 static inline void futex_get_mm(union futex_key *key) in futex_get_mm() argument
333 atomic_inc(&key->private.mm->mm_count); in futex_get_mm()
379 static struct futex_hash_bucket *hash_futex(union futex_key *key) in hash_futex() argument
381 u32 hash = jhash2((u32*)&key->both.word, in hash_futex()
382 (sizeof(key->both.word)+sizeof(key->both.ptr))/4, in hash_futex()
383 key->both.offset); in hash_futex()
403 static void get_futex_key_refs(union futex_key *key) in get_futex_key_refs() argument
405 if (!key->both.ptr) in get_futex_key_refs()
408 switch (key->both.offset & (FUT_OFF_INODE|FUT_OFF_MMSHARED)) { in get_futex_key_refs()
410 ihold(key->shared.inode); /* implies MB (B) */ in get_futex_key_refs()
413 futex_get_mm(key); /* implies MB (B) */ in get_futex_key_refs()
431 static void drop_futex_key_refs(union futex_key *key) in drop_futex_key_refs() argument
433 if (!key->both.ptr) { in drop_futex_key_refs()
439 switch (key->both.offset & (FUT_OFF_INODE|FUT_OFF_MMSHARED)) { in drop_futex_key_refs()
441 iput(key->shared.inode); in drop_futex_key_refs()
444 mmdrop(key->private.mm); in drop_futex_key_refs()
468 get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw) in get_futex_key() argument
478 key->both.offset = address % PAGE_SIZE; in get_futex_key()
481 address -= key->both.offset; in get_futex_key()
497 key->private.mm = mm; in get_futex_key()
498 key->private.address = address; in get_futex_key()
499 get_futex_key_refs(key); /* implies MB (B) */ in get_futex_key()
601 key->both.offset |= FUT_OFF_MMSHARED; /* ref taken on mm */ in get_futex_key()
602 key->private.mm = mm; in get_futex_key()
603 key->private.address = address; in get_futex_key()
605 key->both.offset |= FUT_OFF_INODE; /* inode-based key */ in get_futex_key()
606 key->shared.inode = page_head->mapping->host; in get_futex_key()
607 key->shared.pgoff = basepage_index(page); in get_futex_key()
610 get_futex_key_refs(key); /* implies MB (B) */ in get_futex_key()
618 static inline void put_futex_key(union futex_key *key) in put_futex_key() argument
620 drop_futex_key_refs(key); in put_futex_key()
656 union futex_key *key) in futex_top_waiter() argument
661 if (match_futex(&this->key, key)) in futex_top_waiter()
710 pi_state->key = FUTEX_KEY_INIT; in refill_pi_state_cache()
792 union futex_key key = FUTEX_KEY_INIT; in exit_pi_state_list() local
806 key = pi_state->key; in exit_pi_state_list()
807 hb = hash_futex(&key); in exit_pi_state_list()
963 static int attach_to_pi_owner(u32 uval, union futex_key *key, in attach_to_pi_owner() argument
1017 pi_state->key = *key; in attach_to_pi_owner()
1032 union futex_key *key, struct futex_pi_state **ps) in lookup_pi_state() argument
1034 struct futex_q *match = futex_top_waiter(hb, key); in lookup_pi_state()
1047 return attach_to_pi_owner(uval, key, ps); in lookup_pi_state()
1083 union futex_key *key, in futex_lock_pi_atomic() argument
1114 match = futex_top_waiter(hb, key); in futex_lock_pi_atomic()
1155 return attach_to_pi_owner(uval, key, ps); in futex_lock_pi_atomic()
1327 union futex_key key = FUTEX_KEY_INIT; in futex_wake() local
1334 ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, VERIFY_READ); in futex_wake()
1338 hb = hash_futex(&key); in futex_wake()
1347 if (match_futex (&this->key, &key)) { in futex_wake()
1366 put_futex_key(&key); in futex_wake()
1430 if (match_futex (&this->key, &key1)) { in futex_wake_op()
1444 if (match_futex (&this->key, &key2)) { in futex_wake_op()
1492 q->key = *key2; in requeue_futex()
1510 void requeue_pi_wake_futex(struct futex_q *q, union futex_key *key, in requeue_pi_wake_futex() argument
1513 get_futex_key_refs(key); in requeue_pi_wake_futex()
1514 q->key = *key; in requeue_pi_wake_futex()
1776 if (!match_futex(&this->key, &key1)) in futex_requeue()
1865 hb = hash_futex(&q->key); in queue_lock()
1971 drop_futex_key_refs(&q->key); in unqueue_me()
2245 ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q->key, VERIFY_READ); in futex_wait_setup()
2264 put_futex_key(&q->key); in futex_wait_setup()
2275 put_futex_key(&q->key); in futex_wait_setup()
2399 ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q.key, VERIFY_WRITE); in futex_lock_pi()
2406 ret = futex_lock_pi_atomic(uaddr, hb, &q.key, &q.pi_state, current, 0); in futex_lock_pi()
2427 put_futex_key(&q.key); in futex_lock_pi()
2481 put_futex_key(&q.key); in futex_lock_pi()
2497 put_futex_key(&q.key); in futex_lock_pi()
2509 union futex_key key = FUTEX_KEY_INIT; in futex_unlock_pi() local
2523 ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, VERIFY_WRITE); in futex_unlock_pi()
2527 hb = hash_futex(&key); in futex_unlock_pi()
2535 match = futex_top_waiter(hb, &key); in futex_unlock_pi()
2556 put_futex_key(&key); in futex_unlock_pi()
2584 put_futex_key(&key); in futex_unlock_pi()
2589 put_futex_key(&key); in futex_unlock_pi()
2628 if (!match_futex(&q->key, key2)) { in handle_early_requeue_pi_wakeup()
2744 if (match_futex(&q.key, &key2)) { in futex_wait_requeue_pi()
2831 put_futex_key(&q.key); in futex_wait_requeue_pi()