IA64 用の Linux モジュールに取り組んでいます。現在の問題は、dma ページの割り当てにドライバーが PAGE_SIZE マクロと PAGE_SHIFT マクロを使用していることです。私が抱えている問題は、ドライバーをコンパイルするマシンが、ドライバーを実行するために必要なマシンではないことです。したがって、コンパイルするマシンの PAGE_SIZE が 2^14K で、宛先マシンが 2^16K の場合、ドライバーは失敗します。
この質問を、モジュールを実行していないマシンでモジュールをコンパイルすることに関する「ベストプラクティス」の問題に変えたくありません。私はそれについての問題を理解しています。私が見つけたのは、ほとんどの人が getpagesize() または sysconf(_SC_PAGE_SIZE) を使用していることです。これらの 2 つのオプションは ia64 カーネル ヘッダーに含まれていないため、使用できません。実行時の PAGE_SIZE を取得する別の方法はありますか?
私が見ているオプション:
- /proc 内のファイルを読み込んでいますか?
- システムコール?
- 推論によって PAGE_SIZE を計算できる他の関数 (ORDER、getpageshift など)?
- 他の?