test_static_key_base.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. #include <linux/module.h>
  11. #include <linux/jump_label.h>
  12. /* old keys */
  13. struct static_key base_old_true_key = STATIC_KEY_INIT_TRUE;
  14. EXPORT_SYMBOL_GPL(base_old_true_key);
  15. struct static_key base_inv_old_true_key = STATIC_KEY_INIT_TRUE;
  16. EXPORT_SYMBOL_GPL(base_inv_old_true_key);
  17. struct static_key base_old_false_key = STATIC_KEY_INIT_FALSE;
  18. EXPORT_SYMBOL_GPL(base_old_false_key);
  19. struct static_key base_inv_old_false_key = STATIC_KEY_INIT_FALSE;
  20. EXPORT_SYMBOL_GPL(base_inv_old_false_key);
  21. /* new keys */
  22. DEFINE_STATIC_KEY_TRUE(base_true_key);
  23. EXPORT_SYMBOL_GPL(base_true_key);
  24. DEFINE_STATIC_KEY_TRUE(base_inv_true_key);
  25. EXPORT_SYMBOL_GPL(base_inv_true_key);
  26. DEFINE_STATIC_KEY_FALSE(base_false_key);
  27. EXPORT_SYMBOL_GPL(base_false_key);
  28. DEFINE_STATIC_KEY_FALSE(base_inv_false_key);
  29. EXPORT_SYMBOL_GPL(base_inv_false_key);
  30. static void invert_key(struct static_key *key)
  31. {
  32. if (static_key_enabled(key))
  33. static_key_disable(key);
  34. else
  35. static_key_enable(key);
  36. }
  37. static int __init test_static_key_base_init(void)
  38. {
  39. invert_key(&base_inv_old_true_key);
  40. invert_key(&base_inv_old_false_key);
  41. invert_key(&base_inv_true_key.key);
  42. invert_key(&base_inv_false_key.key);
  43. return 0;
  44. }
  45. static void __exit test_static_key_base_exit(void)
  46. {
  47. }
  48. module_init(test_static_key_base_init);
  49. module_exit(test_static_key_base_exit);
  50. MODULE_AUTHOR("Jason Baron <jbaron@akamai.com>");
  51. MODULE_LICENSE("GPL");