按照我之前的问题关于极长函数背后的基本原理,我想提出一个关于一段代码我正在为我的研究而学习。它是 Linux 内核中的一个函数,相当长(412 行)且复杂(一个中冶指数共 133 条)。基本上,这是一个长而嵌套的 switch 语句
坦白说,我想不出有什么办法可以改善这个混乱局面。调度表看起来既庞大又低效,任何子例程调用都需要难以想象的参数数量才能覆盖足够大的代码段。
您是否认为可以以更易读的方式重写该函数,而不损失效率?如果没有,您觉得这段代码可读吗?
不用说,我的研究中出现的任何答案都将得到全额评分——无论是在此处还是在提交的论文中。
链接到在线源浏览器中的函数
我不认为这个功能是一团糟。我以前也写过这么乱七八糟的。
该函数是将微处理器制造商提供的表格代码转换为代码。这是非常低级的东西,为特定的中断或错误原因复制适当的硬件寄存器。在这种代码中,您通常无法触摸尚未由硬件填充的寄存器 - 这可能会导致总线错误。这可以防止使用更通用的代码(例如复制所有寄存器)。
我确实看到了一些代码重复。然而,在这个级别(在中断级别操作),速度更为重要。我不会在公共代码上使用提取方法,除非我知道提取的方法将被内联。
顺便说一句,当您在那里(内核)时,请务必捕获此代码的更改历史记录。我怀疑您会发现这里没有太多变化,因为它与硬件相关。此类代码随时间变化的性质与大多数用户模式代码经历的变化的性质有很大不同。
例如,当实施新的整合 IO 芯片时,这种情况就会发生变化。在这种情况下,更改很可能是复制粘贴并更改新副本,而不是修改现有代码以适应更改的寄存器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)