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