Lines Matching refs:hash
26 static void batadv_hash_init(struct batadv_hashtable *hash) in batadv_hash_init() argument
30 for (i = 0; i < hash->size; i++) { in batadv_hash_init()
31 INIT_HLIST_HEAD(&hash->table[i]); in batadv_hash_init()
32 spin_lock_init(&hash->list_locks[i]); in batadv_hash_init()
37 void batadv_hash_destroy(struct batadv_hashtable *hash) in batadv_hash_destroy() argument
39 kfree(hash->list_locks); in batadv_hash_destroy()
40 kfree(hash->table); in batadv_hash_destroy()
41 kfree(hash); in batadv_hash_destroy()
47 struct batadv_hashtable *hash; in batadv_hash_new() local
49 hash = kmalloc(sizeof(*hash), GFP_ATOMIC); in batadv_hash_new()
50 if (!hash) in batadv_hash_new()
53 hash->table = kmalloc_array(size, sizeof(*hash->table), GFP_ATOMIC); in batadv_hash_new()
54 if (!hash->table) in batadv_hash_new()
57 hash->list_locks = kmalloc_array(size, sizeof(*hash->list_locks), in batadv_hash_new()
59 if (!hash->list_locks) in batadv_hash_new()
62 hash->size = size; in batadv_hash_new()
63 batadv_hash_init(hash); in batadv_hash_new()
64 return hash; in batadv_hash_new()
67 kfree(hash->table); in batadv_hash_new()
69 kfree(hash); in batadv_hash_new()
73 void batadv_hash_set_lock_class(struct batadv_hashtable *hash, in batadv_hash_set_lock_class() argument
78 for (i = 0; i < hash->size; i++) in batadv_hash_set_lock_class()
79 lockdep_set_class(&hash->list_locks[i], key); in batadv_hash_set_lock_class()