我在内核模块中添加了一个计时器,该计时器负责TCP套接字的创建,以监视其参数。一切正常,直到我想调用并行连接-立即崩溃。
这是我的方法:
全局变量:
struct timer_list ss_timer;
在模块寄存器功能中:
init_timer(&ss_timer);
在模块注销功能中:
del_timer_sync(&ss_timer);
用于启动TCP会话建立的功能(每个TCP连接调用一次,针对多个连接并行运行):
ss_timer.function = ss_timer_callback;
ss_timer.data = (unsigned long)&meta_sk;
ss_timer.expires = jiffies + msecs_to_jiffies(500);
add_timer(&ss_timer);
要让ss_timer_callback函数退出调查-我已经注释掉了它的主体-它只做一次printk
我用iperf工具对其进行了测试,对于单线程,一切正常,但是当我对两个并行客户端线程使用“ -P 2”调用它时,整个系统立即崩溃。
我认为问题出在并行的多个“ add_timer”调用中。我意识到我的想法可能完全错了,所以我非常感谢有经验的人来指导我。