在内核源代码中__SetPageReferenced的定义

时间:2016-07-01 09:57:40

标签: c linux-kernel

我尝试将一些功能从最新的稳定内核(4.6.3)移植到较旧的内核,无论出于何种原因我都这样做。一切都很顺利,但我不断得到mm/filemap.c:1183:4: error: implicit declaration of function '__SetPageReferenced'

我找不到oryginal的定义 static inline void __SetPageReferenced(struct page *page)这很有趣,考虑到oryginal 4.6.3编译没有问题,尽管事实上我无法在其来源中找到该定义

忘记提及,在include/linux/page-flags.h中有类似的声明我只是在这里复制并粘贴它,如果我知道在哪里找到它。不幸的是,我无法在网上找到任何有用的提及。

所以感谢评论部分的对话,尤其是@LPs输入,我想出了一个我定义的黑客攻击: #define __SetPageReferenced(page) set_bit(PG_referenced, &(page)->flags)摆脱了隐含的声明问题。当我最终移植我的功能并根据结果重新打开或关闭问题时,我会发布它是否有效。

干杯!

旁注: 发现您可以在修复不同问题时使用extern void mark_page_accessed(struct page *);

1 个答案:

答案 0 :(得分:3)

声明宏__SETPAGEFLAG here,将其用于referencedhere
结果:

static __always_inline void __SetPageReferenced(struct page *page)         \
 { __set_bit(PG_referenced, &PF_HEAD(page, 1)->flags); }