KiNOKO-DAQ 関連情報 掲示板

このスレッドに記事を投稿する
前のスレッド | 次のスレッド | 掲示版ホーム

vmedrvのコンパイルエラー
2003 年 6 月 19 日 5 時 12 分
投稿者: 岩井

お世話になって下ります.新潟大学の岩井です.
vmedrvがコンパイルエラーを起こしました.
環境は
カーネル: 2.4.20以降
コンパイラ: gcc-3.2
です.Redhat8.0以降に相当する環境だと思います.

まず.vmedrv.c の

---
#ifdef TRACE_CONFIG
#define DEBUG(x) x
#else
#define DEBUG(x)
#endif
---

↑このマクロが起こられます.予約されたのかな?なので,こんな感じ(↓)にしてあげたあと,DEBUGマクロを使ってる部分をDEBUG_HOGEに改名.

#ifdef TRACE_CONFIG
#define DEBUG_HOGE(x) x
#else
#define DEBUG_HOGE(x)
#endif


で,次に,vmedrv_mmap関数内の

555: if (remap_page_range(vma->vm_start, physical_address, size, vma->vm_page_prot) < 0) {
この部分で怒られます.
どうも,"kernel-source"/include/linux/mm.hには
extern int remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned long to, unsigned long size, pgprot_t prot);
と書いてありました.

うーん,fromとtoがどこのアドレスをさすのかわからないです・・・.
とりあえず,こんなんしました.

if (remap_page_range(vma, vme_address, vme_address+size, size, vma->vm_page_prot) < 0) {

コンパイルは通ったんですけど,これが正しい記述かどうかわからないです.これから動かしてみます.


Re: ちょっと間違えました
2003 年 6 月 19 日 5 時 25 分
投稿者: 岩井

たびたびすみません,新潟大学の岩井です.
うまくいってた頃のカーネルのヘッダファイル"kernel-source"/include/linux/mm.hには
extern int remap_page_range(unsigned long from, unsigned long to, unsigned long size, pgprot_t prot);
と書いてありました.
ということは,

if (remap_page_range(vma, vma->vm_start, physical_address, size, vma->vm_page_prot) < 0) {

こうするのが正しいみたいですね.


どうもありがとう
2003 年 6 月 19 日 17 時 18 分
投稿者: 榎本三四郎

榎本です.お久しぶりです.

最近はなかなか時間がとれなくて,いろいろな環境でテストしたりすることができないので,こういうふうに指摘してもらえるととても助かります.

2.4 系列の途中でこういう変更がおきると,やっぱりソースコード中で #ifdef をするしかないでしょうか.
ソースが読みにくくなるので,あまり好きではないのだけれど...

vmedrv の次のバージョンアップに含めたいと思います.ありがとうございます.


このスレッドに記事を投稿する