#include <linux/module.h>
#include <linux/jump_label.h>
struct static_key old_true_key = …;
struct static_key old_false_key = …;
DEFINE_STATIC_KEY_TRUE(true_key);
DEFINE_STATIC_KEY_FALSE(false_key);
extern struct static_key base_old_true_key;
extern struct static_key base_inv_old_true_key;
extern struct static_key base_old_false_key;
extern struct static_key base_inv_old_false_key;
extern struct static_key_true base_true_key;
extern struct static_key_true base_inv_true_key;
extern struct static_key_false base_false_key;
extern struct static_key_false base_inv_false_key;
struct test_key { … };
#define test_key_func(key, branch) …
static void invert_key(struct static_key *key)
{ … }
static void invert_keys(struct test_key *keys, int size)
{ … }
static int verify_keys(struct test_key *keys, int size, bool invert)
{ … }
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
test_key_func(…)
static int __init test_static_key_init(void)
{ … }
static void __exit test_static_key_exit(void)
{ … }
module_init(test_static_key_init);
module_exit(test_static_key_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;