[Armadillo:04997] Armadillo-9 は MMU は機能しているみたいなのですが?

Jun Monnai email@hidden
2010年 3月 2日 (火) 10:43:12 JST


お世話になります。
Armadillo-9 初心者の門内と申します。

Armadillo-9 に搭載されているLinuxは、
uClinux-dist をベースにしたatmark-dist である
との記述があるので、一般的な uClinux のように
MMU によるプロセス毎に独立したメモリー空間を
持たないと思っていました。

しかし簡単なテストを行った限りでは、
fork() システムコールも使え、fork() 後は
親と子のプロセスが別々のメモリ空間で実行されて
いるようです。

以下のプログラムを走らせると、親子で同じカウンタ
変数 foobar を逆方向にカウントして正常に終了します。

#include <stdio.h>
int foobar = 0;

int main(int argc, char* argv[])
{
    int pid = fork();
    if (pid < 0)
    {
        printf("Failed to fork().\n");
        return 1;
    }

    if (pid)
    {
        printf("PARENT: fork() ok.\n");
        for (foobar = 10000; foobar > 0; foobar--)
            printf("PARENT: %d\n", foobar);

        printf("PARENT: Now waiting for child's finishing.\n");
        wait(pid);
        printf("PARENT: Child finished.\n");
        printf("PARENT: foobar = %d\n", foobar);
    }
    else // (pid == 0)
    {
        printf("CHILD: I'm a child.\n");
        for (foobar = 0; foobar < 10000; foobar++)
            printf("CHILD: %d\n", foobar);

        printf("CHILD: Please type <Enter>:");
        getc(stdin);
        printf("CHILD: foobar = %d\n", foobar);
    }
    return 0;
}

ひょっとして uClinux ではあるが、MMU は有効に
なっていると推測しているのですが、ドキュメント
には明確な記述が見つかりませんでした。

Armadillo-9 の ROM は全く書き換えていません。

この辺りの事情をご存知であれば、
ご教授の程、宜しくお願い致します。




armadillo メーリングリストの案内