xref: /linux/lib/test_static_key_base.c (revision 9c92ab61)
1*9c92ab61SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
22bf9e0abSIngo Molnar /*
32bf9e0abSIngo Molnar  * Kernel module for testing static keys.
42bf9e0abSIngo Molnar  *
52bf9e0abSIngo Molnar  * Copyright 2015 Akamai Technologies Inc. All Rights Reserved
62bf9e0abSIngo Molnar  *
72bf9e0abSIngo Molnar  * Authors:
82bf9e0abSIngo Molnar  *      Jason Baron       <jbaron@akamai.com>
92bf9e0abSIngo Molnar  */
102bf9e0abSIngo Molnar 
112bf9e0abSIngo Molnar #include <linux/module.h>
122bf9e0abSIngo Molnar #include <linux/jump_label.h>
132bf9e0abSIngo Molnar 
142bf9e0abSIngo Molnar /* old keys */
152bf9e0abSIngo Molnar struct static_key base_old_true_key = STATIC_KEY_INIT_TRUE;
162bf9e0abSIngo Molnar EXPORT_SYMBOL_GPL(base_old_true_key);
172bf9e0abSIngo Molnar struct static_key base_inv_old_true_key = STATIC_KEY_INIT_TRUE;
182bf9e0abSIngo Molnar EXPORT_SYMBOL_GPL(base_inv_old_true_key);
192bf9e0abSIngo Molnar struct static_key base_old_false_key = STATIC_KEY_INIT_FALSE;
202bf9e0abSIngo Molnar EXPORT_SYMBOL_GPL(base_old_false_key);
212bf9e0abSIngo Molnar struct static_key base_inv_old_false_key = STATIC_KEY_INIT_FALSE;
222bf9e0abSIngo Molnar EXPORT_SYMBOL_GPL(base_inv_old_false_key);
232bf9e0abSIngo Molnar 
242bf9e0abSIngo Molnar /* new keys */
252bf9e0abSIngo Molnar DEFINE_STATIC_KEY_TRUE(base_true_key);
262bf9e0abSIngo Molnar EXPORT_SYMBOL_GPL(base_true_key);
272bf9e0abSIngo Molnar DEFINE_STATIC_KEY_TRUE(base_inv_true_key);
282bf9e0abSIngo Molnar EXPORT_SYMBOL_GPL(base_inv_true_key);
292bf9e0abSIngo Molnar DEFINE_STATIC_KEY_FALSE(base_false_key);
302bf9e0abSIngo Molnar EXPORT_SYMBOL_GPL(base_false_key);
312bf9e0abSIngo Molnar DEFINE_STATIC_KEY_FALSE(base_inv_false_key);
322bf9e0abSIngo Molnar EXPORT_SYMBOL_GPL(base_inv_false_key);
332bf9e0abSIngo Molnar 
invert_key(struct static_key * key)342bf9e0abSIngo Molnar static void invert_key(struct static_key *key)
352bf9e0abSIngo Molnar {
362bf9e0abSIngo Molnar 	if (static_key_enabled(key))
372bf9e0abSIngo Molnar 		static_key_disable(key);
382bf9e0abSIngo Molnar 	else
392bf9e0abSIngo Molnar 		static_key_enable(key);
402bf9e0abSIngo Molnar }
412bf9e0abSIngo Molnar 
test_static_key_base_init(void)422bf9e0abSIngo Molnar static int __init test_static_key_base_init(void)
432bf9e0abSIngo Molnar {
442bf9e0abSIngo Molnar 	invert_key(&base_inv_old_true_key);
452bf9e0abSIngo Molnar 	invert_key(&base_inv_old_false_key);
462bf9e0abSIngo Molnar 	invert_key(&base_inv_true_key.key);
472bf9e0abSIngo Molnar 	invert_key(&base_inv_false_key.key);
482bf9e0abSIngo Molnar 
492bf9e0abSIngo Molnar 	return 0;
502bf9e0abSIngo Molnar }
512bf9e0abSIngo Molnar 
test_static_key_base_exit(void)522bf9e0abSIngo Molnar static void __exit test_static_key_base_exit(void)
532bf9e0abSIngo Molnar {
542bf9e0abSIngo Molnar }
552bf9e0abSIngo Molnar 
562bf9e0abSIngo Molnar module_init(test_static_key_base_init);
572bf9e0abSIngo Molnar module_exit(test_static_key_base_exit);
582bf9e0abSIngo Molnar 
592bf9e0abSIngo Molnar MODULE_AUTHOR("Jason Baron <jbaron@akamai.com>");
602bf9e0abSIngo Molnar MODULE_LICENSE("GPL");
61