Lines Matching refs:key

203 	union futex_key key;  member
233 union futex_key key; member
242 .key = FUTEX_KEY_INIT,
261 static inline void futex_get_mm(union futex_key *key) in futex_get_mm() argument
263 atomic_inc(&key->private.mm->mm_count); in futex_get_mm()
309 static struct futex_hash_bucket *hash_futex(union futex_key *key) in hash_futex() argument
311 u32 hash = jhash2((u32*)&key->both.word, in hash_futex()
312 (sizeof(key->both.word)+sizeof(key->both.ptr))/4, in hash_futex()
313 key->both.offset); in hash_futex()
333 static void get_futex_key_refs(union futex_key *key) in get_futex_key_refs() argument
335 if (!key->both.ptr) in get_futex_key_refs()
338 switch (key->both.offset & (FUT_OFF_INODE|FUT_OFF_MMSHARED)) { in get_futex_key_refs()
340 ihold(key->shared.inode); /* implies MB (B) */ in get_futex_key_refs()
343 futex_get_mm(key); /* implies MB (B) */ in get_futex_key_refs()
361 static void drop_futex_key_refs(union futex_key *key) in drop_futex_key_refs() argument
363 if (!key->both.ptr) { in drop_futex_key_refs()
369 switch (key->both.offset & (FUT_OFF_INODE|FUT_OFF_MMSHARED)) { in drop_futex_key_refs()
371 iput(key->shared.inode); in drop_futex_key_refs()
374 mmdrop(key->private.mm); in drop_futex_key_refs()
398 get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw) in get_futex_key() argument
408 key->both.offset = address % PAGE_SIZE; in get_futex_key()
411 address -= key->both.offset; in get_futex_key()
424 key->private.mm = mm; in get_futex_key()
425 key->private.address = address; in get_futex_key()
426 get_futex_key_refs(key); /* implies MB (B) */ in get_futex_key()
524 key->both.offset |= FUT_OFF_MMSHARED; /* ref taken on mm */ in get_futex_key()
525 key->private.mm = mm; in get_futex_key()
526 key->private.address = address; in get_futex_key()
528 key->both.offset |= FUT_OFF_INODE; /* inode-based key */ in get_futex_key()
529 key->shared.inode = page_head->mapping->host; in get_futex_key()
530 key->shared.pgoff = basepage_index(page); in get_futex_key()
533 get_futex_key_refs(key); /* implies MB (B) */ in get_futex_key()
541 static inline void put_futex_key(union futex_key *key) in put_futex_key() argument
543 drop_futex_key_refs(key); in put_futex_key()
579 union futex_key *key) in futex_top_waiter() argument
584 if (match_futex(&this->key, key)) in futex_top_waiter()
633 pi_state->key = FUTEX_KEY_INIT; in refill_pi_state_cache()
715 union futex_key key = FUTEX_KEY_INIT; in exit_pi_state_list() local
729 key = pi_state->key; in exit_pi_state_list()
730 hb = hash_futex(&key); in exit_pi_state_list()
886 static int attach_to_pi_owner(u32 uval, union futex_key *key, in attach_to_pi_owner() argument
940 pi_state->key = *key; in attach_to_pi_owner()
955 union futex_key *key, struct futex_pi_state **ps) in lookup_pi_state() argument
957 struct futex_q *match = futex_top_waiter(hb, key); in lookup_pi_state()
970 return attach_to_pi_owner(uval, key, ps); in lookup_pi_state()
1003 union futex_key *key, in futex_lock_pi_atomic() argument
1028 match = futex_top_waiter(hb, key); in futex_lock_pi_atomic()
1069 return attach_to_pi_owner(uval, key, ps); in futex_lock_pi_atomic()
1228 union futex_key key = FUTEX_KEY_INIT; in futex_wake() local
1234 ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, VERIFY_READ); in futex_wake()
1238 hb = hash_futex(&key); in futex_wake()
1247 if (match_futex (&this->key, &key)) { in futex_wake()
1265 put_futex_key(&key); in futex_wake()
1328 if (match_futex (&this->key, &key1)) { in futex_wake_op()
1342 if (match_futex (&this->key, &key2)) { in futex_wake_op()
1389 q->key = *key2; in requeue_futex()
1407 void requeue_pi_wake_futex(struct futex_q *q, union futex_key *key, in requeue_pi_wake_futex() argument
1410 get_futex_key_refs(key); in requeue_pi_wake_futex()
1411 q->key = *key; in requeue_pi_wake_futex()
1669 if (!match_futex(&this->key, &key1)) in futex_requeue()
1757 hb = hash_futex(&q->key); in queue_lock()
1863 drop_futex_key_refs(&q->key); in unqueue_me()
2140 ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q->key, VERIFY_READ); in futex_wait_setup()
2159 put_futex_key(&q->key); in futex_wait_setup()
2170 put_futex_key(&q->key); in futex_wait_setup()
2291 ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q.key, VERIFY_WRITE); in futex_lock_pi()
2298 ret = futex_lock_pi_atomic(uaddr, hb, &q.key, &q.pi_state, current, 0); in futex_lock_pi()
2315 put_futex_key(&q.key); in futex_lock_pi()
2369 put_futex_key(&q.key); in futex_lock_pi()
2385 put_futex_key(&q.key); in futex_lock_pi()
2397 union futex_key key = FUTEX_KEY_INIT; in futex_unlock_pi() local
2411 ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, VERIFY_WRITE); in futex_unlock_pi()
2415 hb = hash_futex(&key); in futex_unlock_pi()
2423 match = futex_top_waiter(hb, &key); in futex_unlock_pi()
2438 put_futex_key(&key); in futex_unlock_pi()
2461 put_futex_key(&key); in futex_unlock_pi()
2466 put_futex_key(&key); in futex_unlock_pi()
2505 if (!match_futex(&q->key, key2)) { in handle_early_requeue_pi_wakeup()
2621 if (match_futex(&q.key, &key2)) { in futex_wait_requeue_pi()
2708 put_futex_key(&q.key); in futex_wait_requeue_pi()