[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 メーリングリストの案内