root/lib/memory-notifier-error-inject.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. err_inject_init
  2. err_inject_exit

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 #include <linux/kernel.h>
   3 #include <linux/module.h>
   4 #include <linux/memory.h>
   5 
   6 #include "notifier-error-inject.h"
   7 
   8 static int priority;
   9 module_param(priority, int, 0);
  10 MODULE_PARM_DESC(priority, "specify memory notifier priority");
  11 
  12 static struct notifier_err_inject memory_notifier_err_inject = {
  13         .actions = {
  14                 { NOTIFIER_ERR_INJECT_ACTION(MEM_GOING_ONLINE) },
  15                 { NOTIFIER_ERR_INJECT_ACTION(MEM_GOING_OFFLINE) },
  16                 {}
  17         }
  18 };
  19 
  20 static struct dentry *dir;
  21 
  22 static int err_inject_init(void)
  23 {
  24         int err;
  25 
  26         dir = notifier_err_inject_init("memory", notifier_err_inject_dir,
  27                                         &memory_notifier_err_inject, priority);
  28         if (IS_ERR(dir))
  29                 return PTR_ERR(dir);
  30 
  31         err = register_memory_notifier(&memory_notifier_err_inject.nb);
  32         if (err)
  33                 debugfs_remove_recursive(dir);
  34 
  35         return err;
  36 }
  37 
  38 static void err_inject_exit(void)
  39 {
  40         unregister_memory_notifier(&memory_notifier_err_inject.nb);
  41         debugfs_remove_recursive(dir);
  42 }
  43 
  44 module_init(err_inject_init);
  45 module_exit(err_inject_exit);
  46 
  47 MODULE_DESCRIPTION("memory notifier error injection module");
  48 MODULE_LICENSE("GPL");
  49 MODULE_AUTHOR("Akinobu Mita <akinobu.mita@gmail.com>");

/* [<][>][^][v][top][bottom][index][help] */