Linux-Kernel
“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 這樣的額外標誌。這是什麼語言功能/我可以用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熵外掛使用的。