有4中以blocking_notifier为例
#define XXX_EN_EVENT 1
struct blocking_notifier_head XXX_chain_head;
static int XXX_en_event(struct notifier_block *notifier,
unsigned long XXX_event, void *unused)
{
pr_info("odm %s %d\n",__func__,__LINE__);
switch (XXX_event) {
case XXX_EN_EVENT:
break;
default:
break;
}
return 0;
}
static struct notifier_block XXX_en_notifier_block = {
.notifier_call = XXX_en_event,
};
注册
blocking_notifier_chain_register(&XXX_chain_head, &XXX_en_notifier_block);
通知
blocking_notifier_call_chain(&XXX_chain_head, XXX_EN_EVENT, NULL);