トップ «前の日記(2004年02月25日) 最新 次の日記(2004年02月27日)» 編集
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2004年02月26日

長年日記

tdiaryの設定ファイルを変えて長年日記↑をONにした。去年何をしていたかがわかる。一年があっという間に思える。同時に、1年前の自分のサルサに対する考えが幼く思える。

CAT709

debian.dodes.org が止まってるかも。名前が引けない。

追記↑こっちのネットワークの問題だった。直った。

CAT709

カーネル2.6動いたよぉ。原因は 0x29555555番地に相当するstruct_vmを作るのに失敗し、その後page_faultが発生したときにSIGVってた。0x295555555っていう中途半端な怪しい数値の正体は 0x7c000000/3 だった。これがTASK_UNMAPPED_BASEとしてdefineされている。0x295555555をPAGEにアラインしていないのでfind_vmaの後、vmを作る段で不具合を起こしていた。mm/mmap.cに適当にパッチして英語のほうのmlに報告したところ、arch_get_unmapped_area()をsh3版も正しく書いたほうが良いと返事をもらった。
#if defined(CONFIG_CPU_SH4)
/*
 * To avoid cache alias, we map the shard page with same color.
 */
#define COLOUR_ALIGN(addr)      (((addr)+SHMLBA-1)&~(SHMLBA-1))
 
unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
        unsigned long len, unsigned long pgoff, unsigned long flags)
{
        struct vm_area_struct *vma;
 
        if (flags & MAP_FIXED) {
                /* We do not accept a shared mapping if it would violate
                 * cache aliasing constraints.
                 */
                if ((flags & MAP_SHARED) && (addr & (SHMLBA - 1)))
                        return -EINVAL;
                return addr;
        }
 
        if (len > TASK_SIZE)
                return -ENOMEM;
        if (!addr)
                addr = TASK_UNMAPPED_BASE;
 
        if (flags & MAP_PRIVATE)
                addr = PAGE_ALIGN(addr);
        else
                addr = COLOUR_ALIGN(addr);
 
        for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) {
                /* At this point:  (!vma || addr < vma->vm_end). */
                if (TASK_SIZE - len < addr)
                        return -ENOMEM;
                if (!vma || addr + len <= vma->vm_start)
                        return addr;
                addr = vma->vm_end;
                if (!(flags & MAP_PRIVATE))
                        addr = COLOUR_ALIGN(addr);
        }
}
#endif
を見る限りsh4にdependsって事も無いと思うのでsh3でも同じコードで問題ないのではないかなぁ??
ここで使っているcolourという単語は、一般的なコンピュータ用語の『メモリのカラーリング』と同じ意味でよいのかな?カラーリングってのは例えば『速い高価なメモリ/遅い大容量メモリ』みたいに『使い方の異なるアドレス領域の色分け』の時に使う言葉で正しいんでしたっけ?>識者の方

どーでもいいけどcolourって英国スペルですね。コンピュータ言語だとcolorを使うことが多い気がする。