Blame view
lib/of-reconfig-notifier-error-inject.c
1.27 KB
08dfb4dde powerpc: pSeries ... |
1 2 |
#include <linux/kernel.h> #include <linux/module.h> |
d526e85f6 powerpc+of: Renam... |
3 |
#include <linux/of.h> |
08dfb4dde powerpc: pSeries ... |
4 5 6 7 8 |
#include "notifier-error-inject.h" static int priority; module_param(priority, int, 0); |
d526e85f6 powerpc+of: Renam... |
9 |
MODULE_PARM_DESC(priority, "specify OF reconfig notifier priority"); |
08dfb4dde powerpc: pSeries ... |
10 11 12 |
static struct notifier_err_inject reconfig_err_inject = { .actions = { |
d526e85f6 powerpc+of: Renam... |
13 14 15 16 17 |
{ NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_ATTACH_NODE) }, { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_DETACH_NODE) }, { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_ADD_PROPERTY) }, { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_REMOVE_PROPERTY) }, { NOTIFIER_ERR_INJECT_ACTION(OF_RECONFIG_UPDATE_PROPERTY) }, |
08dfb4dde powerpc: pSeries ... |
18 19 20 21 22 23 24 25 26 |
{} } }; static struct dentry *dir; static int err_inject_init(void) { int err; |
d526e85f6 powerpc+of: Renam... |
27 |
dir = notifier_err_inject_init("OF-reconfig", |
08dfb4dde powerpc: pSeries ... |
28 29 30 |
notifier_err_inject_dir, &reconfig_err_inject, priority); if (IS_ERR(dir)) return PTR_ERR(dir); |
d526e85f6 powerpc+of: Renam... |
31 |
err = of_reconfig_notifier_register(&reconfig_err_inject.nb); |
08dfb4dde powerpc: pSeries ... |
32 33 34 35 36 37 38 39 |
if (err) debugfs_remove_recursive(dir); return err; } static void err_inject_exit(void) { |
d526e85f6 powerpc+of: Renam... |
40 |
of_reconfig_notifier_unregister(&reconfig_err_inject.nb); |
08dfb4dde powerpc: pSeries ... |
41 42 43 44 45 |
debugfs_remove_recursive(dir); } module_init(err_inject_init); module_exit(err_inject_exit); |
d526e85f6 powerpc+of: Renam... |
46 |
MODULE_DESCRIPTION("OF reconfig notifier error injection module"); |
08dfb4dde powerpc: pSeries ... |
47 48 |
MODULE_LICENSE("GPL"); MODULE_AUTHOR("Akinobu Mita <akinobu.mita@gmail.com>"); |