处理kmalloc的优化返回

时间:2018-04-26 17:57:15

标签: linux gcc optimization linux-kernel

所以我想知道为什么在检查kmalloc的返回值时,我们不会使用"可能"提示如下:

void *ptr = kmalloc(size, GFP_KERNEL) if (unlikely(!ptr)) return err;

我的假设当然是kmalloc不会经常失败。我很难记住它最后一次失败。基于此,它对编译器不是一个有用的推荐吗?

2 个答案:

答案 0 :(得分:1)

执行此操作可能不会有什么坏处,但除非您在紧密循环中运行malloc,否则与malloc本身的成本相比,它可能对运行时的影响可以忽略不计。

答案 1 :(得分:1)

首先注意到kmalloc只是一个宏,可以根据args扩展到不同的函数调用。它展开的func用__attribute__((__malloc__))注释,这允许编译器假设类似malloc的行为。我不知道这种做法能够带来什么样的优化,但是很可能会充分利用这种功能不会失败的预期。