linux/lib/test_static_key_base.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0-only
   2/*
   3 * Kernel module for testing static keys.
   4 *
   5 * Copyright 2015 Akamai Technologies Inc. All Rights Reserved
   6 *
   7 * Authors:
   8 *      Jason Baron       <jbaron@akamai.com>
   9 */
  10
  11#include <linux/module.h>
  12#include <linux/jump_label.h>
  13
  14/* old keys */
  15struct static_key base_old_true_key = STATIC_KEY_INIT_TRUE;
  16EXPORT_SYMBOL_GPL(base_old_true_key);
  17struct static_key base_inv_old_true_key = STATIC_KEY_INIT_TRUE;
  18EXPORT_SYMBOL_GPL(base_inv_old_true_key);
  19struct static_key base_old_false_key = STATIC_KEY_INIT_FALSE;
  20EXPORT_SYMBOL_GPL(base_old_false_key);
  21struct static_key base_inv_old_false_key = STATIC_KEY_INIT_FALSE;
  22EXPORT_SYMBOL_GPL(base_inv_old_false_key);
  23
  24/* new keys */
  25DEFINE_STATIC_KEY_TRUE(base_true_key);
  26EXPORT_SYMBOL_GPL(base_true_key);
  27DEFINE_STATIC_KEY_TRUE(base_inv_true_key);
  28EXPORT_SYMBOL_GPL(base_inv_true_key);
  29DEFINE_STATIC_KEY_FALSE(base_false_key);
  30EXPORT_SYMBOL_GPL(base_false_key);
  31DEFINE_STATIC_KEY_FALSE(base_inv_false_key);
  32EXPORT_SYMBOL_GPL(base_inv_false_key);
  33
  34static void invert_key(struct static_key *key)
  35{
  36        if (static_key_enabled(key))
  37                static_key_disable(key);
  38        else
  39                static_key_enable(key);
  40}
  41
  42static int __init test_static_key_base_init(void)
  43{
  44        invert_key(&base_inv_old_true_key);
  45        invert_key(&base_inv_old_false_key);
  46        invert_key(&base_inv_true_key.key);
  47        invert_key(&base_inv_false_key.key);
  48
  49        return 0;
  50}
  51
  52static void __exit test_static_key_base_exit(void)
  53{
  54}
  55
  56module_init(test_static_key_base_init);
  57module_exit(test_static_key_base_exit);
  58
  59MODULE_AUTHOR("Jason Baron <jbaron@akamai.com>");
  60MODULE_LICENSE("GPL");
  61