并行计时器创建使内核崩溃

时间:2019-02-13 00:34:00

标签: c parallel-processing linux-kernel kernel kernel-module

我在内核模块中添加了一个计时器,该计时器负责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”调用中。我意识到我的想法可能完全错了,所以我非常感谢有经验的人来指导我。

0 个答案:

没有答案