Lines Matching refs:key
38 if (jea->key < jeb->key) in jump_label_cmp()
41 if (jea->key > jeb->key) in jump_label_cmp()
57 static void jump_label_update(struct static_key *key, int enable);
59 void static_key_slow_inc(struct static_key *key) in static_key_slow_inc() argument
62 if (atomic_inc_not_zero(&key->enabled)) in static_key_slow_inc()
66 if (atomic_read(&key->enabled) == 0) { in static_key_slow_inc()
67 if (!jump_label_get_branch_default(key)) in static_key_slow_inc()
68 jump_label_update(key, JUMP_LABEL_ENABLE); in static_key_slow_inc()
70 jump_label_update(key, JUMP_LABEL_DISABLE); in static_key_slow_inc()
72 atomic_inc(&key->enabled); in static_key_slow_inc()
77 static void __static_key_slow_dec(struct static_key *key, in __static_key_slow_dec() argument
80 if (!atomic_dec_and_mutex_lock(&key->enabled, &jump_label_mutex)) { in __static_key_slow_dec()
81 WARN(atomic_read(&key->enabled) < 0, in __static_key_slow_dec()
87 atomic_inc(&key->enabled); in __static_key_slow_dec()
90 if (!jump_label_get_branch_default(key)) in __static_key_slow_dec()
91 jump_label_update(key, JUMP_LABEL_DISABLE); in __static_key_slow_dec()
93 jump_label_update(key, JUMP_LABEL_ENABLE); in __static_key_slow_dec()
100 struct static_key_deferred *key = in jump_label_update_timeout() local
102 __static_key_slow_dec(&key->key, 0, NULL); in jump_label_update_timeout()
105 void static_key_slow_dec(struct static_key *key) in static_key_slow_dec() argument
108 __static_key_slow_dec(key, 0, NULL); in static_key_slow_dec()
112 void static_key_slow_dec_deferred(struct static_key_deferred *key) in static_key_slow_dec_deferred() argument
115 __static_key_slow_dec(&key->key, key->timeout, &key->work); in static_key_slow_dec_deferred()
119 void jump_label_rate_limit(struct static_key_deferred *key, in jump_label_rate_limit() argument
123 key->timeout = rl; in jump_label_rate_limit()
124 INIT_DELAYED_WORK(&key->work, jump_label_update_timeout); in jump_label_rate_limit()
164 static void __jump_label_update(struct static_key *key, in __jump_label_update() argument
169 (entry->key == (jump_label_t)(unsigned long)key); in __jump_label_update()
181 static enum jump_label_type jump_label_type(struct static_key *key) in jump_label_type() argument
183 bool true_branch = jump_label_get_branch_default(key); in jump_label_type()
184 bool state = static_key_enabled(key); in jump_label_type()
196 struct static_key *key = NULL; in jump_label_init() local
205 iterk = (struct static_key *)(unsigned long)iter->key; in jump_label_init()
207 if (iterk == key) in jump_label_init()
210 key = iterk; in jump_label_init()
214 *((unsigned long *)&key->entries) += (unsigned long)iter; in jump_label_init()
216 key->next = NULL; in jump_label_init()
246 static void __jump_label_mod_update(struct static_key *key, int enable) in __jump_label_mod_update() argument
248 struct static_key_mod *mod = key->next; in __jump_label_mod_update()
253 __jump_label_update(key, mod->entries, in __jump_label_mod_update()
288 struct static_key *key = NULL; in jump_label_add_module() local
300 iterk = (struct static_key *)(unsigned long)iter->key; in jump_label_add_module()
301 if (iterk == key) in jump_label_add_module()
304 key = iterk; in jump_label_add_module()
305 if (__module_address(iter->key) == mod) { in jump_label_add_module()
309 *((unsigned long *)&key->entries) += (unsigned long)iter; in jump_label_add_module()
310 key->next = NULL; in jump_label_add_module()
318 jlm->next = key->next; in jump_label_add_module()
319 key->next = jlm; in jump_label_add_module()
321 if (jump_label_type(key) == JUMP_LABEL_ENABLE) in jump_label_add_module()
322 __jump_label_update(key, iter, iter_stop, JUMP_LABEL_ENABLE); in jump_label_add_module()
333 struct static_key *key = NULL; in jump_label_del_module() local
337 if (iter->key == (jump_label_t)(unsigned long)key) in jump_label_del_module()
340 key = (struct static_key *)(unsigned long)iter->key; in jump_label_del_module()
342 if (__module_address(iter->key) == mod) in jump_label_del_module()
345 prev = &key->next; in jump_label_del_module()
346 jlm = key->next; in jump_label_del_module()
442 static void jump_label_update(struct static_key *key, int enable) in jump_label_update() argument
445 struct jump_entry *entry = jump_label_get_entries(key); in jump_label_update()
448 struct module *mod = __module_address((unsigned long)key); in jump_label_update()
450 __jump_label_mod_update(key, enable); in jump_label_update()
457 __jump_label_update(key, entry, stop, enable); in jump_label_update()