Linux-Kernel

“latent_entropy”如何修改linux核心函式?

  • February 20, 2021

所以在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 這樣的額外標誌。這是什麼語言功能/我可以用Google搜尋什麼來更好地理解這一點?

謝謝。

這是一個宏,預設情況下被替換為 nothing

#ifndef __latent_entropy
# define __latent_entropy
#endif

使用 GCC,在某些情況下,它會變成一個屬性

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

這是由 GCC熵外掛使用的。

引用自:https://unix.stackexchange.com/questions/635543