问题描述
我正在编写一个内核模块来连接到 softirq_raise 的跟踪点。我发现它可以显示在
/sys/kernel/debug/tracing/available_events:irq:softirq_raise
/sys/kernel/debug/tracing/available_filter_functions:__traceiter_softirq_raise
我的处理程序如下,
static void probe_softirq_raise(unsigned int vec)
{
static u64 count = 0;
if (smp_processor_id() == 5) {
if ((count % 100) == 0) {
printk("XXXXXXX CPU = %d,vec = %d\n",smp_processor_id(),vec);
}
count ++;
}
}
我得到的如下,
[ 1835.220792] XXXXXXX CPU = 5,vec = 0
[ 1844.275244] XXXXXXX CPU = 5,vec = 0
[ 1853.488791] XXXXXXX CPU = 5,vec = 0
[ 1861.112794] XXXXXXX CPU = 5,vec = 0
[ 1868.336810] XXXXXXX CPU = 5,vec = 0
令我惊讶的是,它只显示了 vec_nr = 0,没有引发其他软中断。
但是 /proc/softirqs 确实在 CPU5 上显示了许多不同的软中断。
我的处理程序有什么问题吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)