私はRAMサイズに対応して1 MiBファイルをmmappingすることで、基本的なCPUをモデル化しようとしています。私はこのファイルを読み書きしたい。現在、私はram[2] = 1
とSIGBUSエラーが発生しています。ファイルの範囲外でmmapしようとしています。私はおそらく、ファイルを0にしてプレースホルダとして埋める必要があると読んだのですが、私はこれをやる必要があるのか少し混乱しています。なぜなら、mmapは割り当てられるメモリチャンクを自動的に私が最初に触れたとき(私のテストで以下にしようとしているように)。私は何が欠けていますか?mmap SIGBUSエラーとファイルの初期化
int16_t ramD;
if ((ramD = open("ramMap.txt", O_RDWR | O_CREAT, 0666)) == -1)
{
errx(EX_OSERR, "RAM could not be initialized");
}
uint8_t* ram = mmap(0, ram_bytes, PROT_READ | PROT_WRITE, MAP_SHARED, ramD, 0);
ram[2] = 1;
printf("%i", ram[2]);
'ram_bytes'の値は何ですか? – myaut
あなたは 'mmap'が成功したかどうかチェックしませんでした! –
@DavidSchwartzマッピングが成功すると、sigbusが生成されます。 –