锻炼自己解决问题和独立思考能力

12650阅读 6评论2014-07-22 MagicBoy2010
分类:IT职场

今天收邮箱,发现一封询问《深入》一书中的一个技术细节的问题:
在阅读 <<深入linux设备驱动程序内核机制>> 第五章 195页,如下对应于linux 2.6.39 内核版本 函数 __do_softirq中,
发现  trace_softirq_entry 和 trace_softirq_exit 没有定义,
并且我也翻阅了其他较老以及较新的内核版本中 都没有发现 以上两个函数的定义(或者宏),请问您这是什么情况?

我的回复是:
你自己想办法解决了没有?
你可以在__do_softirq()函数前面定义一个同样的函数,比如:
void trace_softirq_entry(unsigned int nr)
{
        if (nr != 0)
                return;
        else
                nr++;
}

这样编译肯定会产生错误,类似error: redefinition of ‘trace_softirq_entry’.........................................

答案是该函数定义在include/trace/events/irq.h:117行(我用的3.10版本,其他版本可能略有不同):
DEFINE_EVENT(softirq, softirq_entry,

    TP_PROTO(unsigned int vec_nr),

    TP_ARGS(vec_nr)
);

这个答案并不重要,关键是你自己要想办法去解决

我猜测那位同学估计在源代码里搜了很久,最终也没有找到trace_softirq_entry的定义。但是你可以利用编译器来帮你完成啊,善于利用工具。独立思考,试着自己去解决问题,时间久了,会发现自己在遇到不同问题时会下意识地有对应的解决问题的思路。譬如语感。
上一篇:JavaScript语言
下一篇:KVM+QEMU世界中的pci总线与virtio总线

文章评论