Linux通知链机制及实例(2)

3.5    模块2-chain2.c
调用模块0的事件发送函数call_test_notifiers,事件发送后,订阅时间的模块1会调用其自己的函数test_init_event,输出字符串。

#include <linux/notifier.h>

#include <linux/module.h>

#include <linux/init.h>

#include <linux/kernel.h> /* printk() */

#include <linux/fs.h> /* everything() */

extern int call_test_notifiers(unsigned long val, void *v);

#define TESTCHAIN_INIT 0x52U

static int __init test_chain_2_init(void)

{

printk(KERN_DEBUG "I'm in test_chain_2\n");

call_test_notifiers(TESTCHAIN_INIT, "no_use");

return 0;

}

static void __exit test_chain_2_exit(void)

{

printk(KERN_DEBUG "Goodbye to test_chain_2\n");

}

MODULE_LICENSE("GPL");

module_init(test_chain_2_init);

module_exit(test_chain_2_exit);

然后可以依次插入模块chain0.ko,chain1.ko,chain2.ko。

输出如下:

[38086.518853] I'm in test_chain_0

[40723.535358] I'm in test_chain_1

[40731.758722] I'm in test_chain_2

[40731.758724] I got the chain event: test_chain_2 is on the way of init

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11931.html