Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

static keys: Inline the static_key_enabled() function

In the jump label enabled case, calling static_key_enabled()
results in a function call. The function returns the results of
a compare, so it really doesn't need the overhead of a full
function call. Let's make it 'static inline' for both the jump
label enabled and disabled cases.

Signed-off-by: Jason Baron <jbaron@redhat.com>
Cc: a.p.zijlstra@chello.nl
Cc: rostedt@goodmis.org
Cc: mathieu.desnoyers@polymtl.ca
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/201202281849.q1SIn1p2023270@int-mx10.intmail.prod.int.phx2.redhat.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by

Jason Baron and committed by
Ingo Molnar
8eedce99 a706d4fc

+5 -12
+5 -6
include/linux/jump_label.h
··· 127 127 extern void static_key_slow_inc(struct static_key *key); 128 128 extern void static_key_slow_dec(struct static_key *key); 129 129 extern void static_key_slow_dec_deferred(struct static_key_deferred *key); 130 - extern bool static_key_enabled(struct static_key *key); 131 130 extern void jump_label_apply_nops(struct module *mod); 132 131 extern void 133 132 jump_label_rate_limit(struct static_key_deferred *key, unsigned long rl); ··· 197 198 static inline void jump_label_lock(void) {} 198 199 static inline void jump_label_unlock(void) {} 199 200 200 - static inline bool static_key_enabled(struct static_key *key) 201 - { 202 - return (atomic_read(&key->enabled) > 0); 203 - } 204 - 205 201 static inline int jump_label_apply_nops(struct module *mod) 206 202 { 207 203 return 0; ··· 217 223 218 224 #define STATIC_KEY_INIT STATIC_KEY_INIT_FALSE 219 225 #define jump_label_enabled static_key_enabled 226 + 227 + static inline bool static_key_enabled(struct static_key *key) 228 + { 229 + return (atomic_read(&key->enabled) > 0); 230 + } 220 231 221 232 #endif /* _LINUX_JUMP_LABEL_H */
-6
kernel/jump_label.c
··· 29 29 mutex_unlock(&jump_label_mutex); 30 30 } 31 31 32 - bool static_key_enabled(struct static_key *key) 33 - { 34 - return (atomic_read(&key->enabled) > 0); 35 - } 36 - EXPORT_SYMBOL_GPL(static_key_enabled); 37 - 38 32 static int jump_label_cmp(const void *a, const void *b) 39 33 { 40 34 const struct jump_entry *jea = a;