“latent_entropy”如何修改linux内核函数?

“latent_entropy”如何修改linux内核函数?

所以在linux内核中,我们在/kernel/fork.c中有以下函数的方法签名:

static __latent_entropy struct task_struct *copy_process(
                    struct pid *pid,
                    int trace,
                    int node,
                    struct kernel_clone_args *args)

什么样的 C 语言功能让我们使用 __latent_entropy “属性”(或者它是什么?)来修改这个函数?

我不一定要特别问 Latent_entropy 的作用,因为我用 google 搜索过,我对 C 方法签名语法更好奇。我没有意识到您可以在方法签名中添加额外的标志,例如 Latent_entropy 。这是什么类型的语言功能/我可以通过谷歌搜索什么来更好地理解它?

谢谢。

答案1

这是一个宏,默认情况下被什么都取代:

#ifndef __latent_entropy
# define __latent_entropy
#endif

对于 GCC,在某些情况下它变成了一个属性:

#if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__)
#define __latent_entropy __attribute__((latent_entropy))
#endif

这是海湾合作委员会使用的熵插件

相关内容