最新の安定したカーネル(4.6.3)から古いものまでいくつかの機能を移植しようとしています。すべてはかなり良い行ってきましたが、私はカーネルソースの__SetPageReferencedの定義はどこですか?
忘れてしまった私は、私はそれのソースでその定義を見つけることができないoryginal 4.6.3は事実にもかかわらず、何の問題をコンパイルしていないことを考えると面白いです static inline void __SetPageReferenced(struct page *page)
のoryginal定義を見つけることができないmm/filemap.c:1183:4: error: implicit declaration of function '__SetPageReferenced'
を得続けますinclude/linux/page-flags.h
私はそれを見つける場所を知っていれば、ここにコピーして貼り付けるだけです。残念ながら、私はそれをオンラインでどこからでも知ることはできませんでした。
コメント欄の会話、特に@LPの入力のおかげで、私は定義したハックの一種を思いついた: #define __SetPageReferenced(page) set_bit(PG_referenced, &(page)->flags)
暗黙の宣言の問題を取り除く。私は最終的に私の機能性を移植し、結果に基づいて質問を再開するか閉じることができるかどうかは関係なく投稿します。
乾杯!
サイドノート: 代わりに別の問題を修正しながらextern void mark_page_accessed(struct page *);
を使用できることを発見しました。
はあなたにもヘッダファイルを確認しましたか? 'static inline'は、関数がヘッダファイルで定義されている可能性があることを示します。 –
Linuxクロスリファレンス(LXR)は、次のような質問を掘り下げるための素晴らしいリソースです:http://lxr.free-electrons.com – datenwolf
@datenwolfありがとうございます。私はまだ試していないと私はここに書いていません。失敗しました。 @JoachimPileborg 4.6.3の 'include/linux /'に 'filemap.c'のヘッダーはありません。しかし、再帰的な検索でサブフォルダを再度チェックすることも確かめてください。また、filemapに含まれるすべてのヘッダーもチェックされています。カーネル全体を再帰的にグレープしても何も役に立たない。 – RoughTomato