我尝试将一些功能从最新的稳定内核(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 *);
。