0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <linux/module.h>
0012 #include <linux/jump_label.h>
0013
0014
0015 struct static_key base_old_true_key = STATIC_KEY_INIT_TRUE;
0016 EXPORT_SYMBOL_GPL(base_old_true_key);
0017 struct static_key base_inv_old_true_key = STATIC_KEY_INIT_TRUE;
0018 EXPORT_SYMBOL_GPL(base_inv_old_true_key);
0019 struct static_key base_old_false_key = STATIC_KEY_INIT_FALSE;
0020 EXPORT_SYMBOL_GPL(base_old_false_key);
0021 struct static_key base_inv_old_false_key = STATIC_KEY_INIT_FALSE;
0022 EXPORT_SYMBOL_GPL(base_inv_old_false_key);
0023
0024
0025 DEFINE_STATIC_KEY_TRUE(base_true_key);
0026 EXPORT_SYMBOL_GPL(base_true_key);
0027 DEFINE_STATIC_KEY_TRUE(base_inv_true_key);
0028 EXPORT_SYMBOL_GPL(base_inv_true_key);
0029 DEFINE_STATIC_KEY_FALSE(base_false_key);
0030 EXPORT_SYMBOL_GPL(base_false_key);
0031 DEFINE_STATIC_KEY_FALSE(base_inv_false_key);
0032 EXPORT_SYMBOL_GPL(base_inv_false_key);
0033
0034 static void invert_key(struct static_key *key)
0035 {
0036 if (static_key_enabled(key))
0037 static_key_disable(key);
0038 else
0039 static_key_enable(key);
0040 }
0041
0042 static int __init test_static_key_base_init(void)
0043 {
0044 invert_key(&base_inv_old_true_key);
0045 invert_key(&base_inv_old_false_key);
0046 invert_key(&base_inv_true_key.key);
0047 invert_key(&base_inv_false_key.key);
0048
0049 return 0;
0050 }
0051
0052 static void __exit test_static_key_base_exit(void)
0053 {
0054 }
0055
0056 module_init(test_static_key_base_init);
0057 module_exit(test_static_key_base_exit);
0058
0059 MODULE_AUTHOR("Jason Baron <jbaron@akamai.com>");
0060 MODULE_LICENSE("GPL");