--- nono/lib/config.cpp 2026/04/29 17:05:44 1.1.1.19 +++ nono/lib/config.cpp 2026/04/29 17:05:52 1.1.1.20 @@ -37,8 +37,6 @@ Config::Config() // デバッガコンソール Add("debugger-driver", "none"); Add("debugger-tcp-port", 0); - // デバッガコンソールの fallback は常に不可とする。hostcom.cpp 参照。 - // "debugger-fallback" // DIPSW エイリアス Add("dipsw-autoboot", "", VMCap::LUNA | VMCap::NEWS); @@ -78,34 +76,29 @@ Config::Config() Add("fast-mode", "0"); // ホスト CPU アクセラレーション。 - Add("host-avx2", "auto"); - Add("host-neon", "auto"); - - // CPU アフィニティ (解釈が複雑すぎるので隠しオプション)。 - // "" … 指定しない - // auto … 予約。現状は "" と同じ。 - // low: … Light スレッドを の CPU に割り付ける。 - // high: … Heavy スレッドを の CPU に割り付ける。 - // perf: … Heavy スレッドを の CPU に、 - // Light スレッドをその反集合の CPU に割り付ける。 - Add(".host-cpu-affinity", "auto"); + // host-* の方は少しの間残しておくがそのうち消す。 + Add("hostcpu-avx2", "auto"); + Add("hostcpu-neon", "auto"); + AddObsolete("host-avx2", "hostcpu-avx2"); + AddObsolete("host-neon", "hostcpu-neon"); + + // ホスト CPU の高性能コア指定。 + Add("hostcpu-fastcore", "auto"); + // 古い隠しオプションのほうは使われたらエラーを出す。 + // こっちは単なる読み替えではないため AddObsolete() ではない。 + Add(".host-cpu-affinity", "obsolete"); // シリアルポートのホスト側設定。 - // fallback は少しの間残しておくがそのうち消す。 Add("hostcom0-driver", "none"); - Add("hostcom0-fallback", 0); Add("hostcom0-tcp-port", 9998); Add("hostcom1-driver", "none", VMCap::LUNA); - Add("hostcom1-fallback", 0, VMCap::LUNA); Add("hostcom1-tcp-port", 9997, VMCap::LUNA); Add("hostcom2-driver", "none", VMCap::LUNA); - Add("hostcom2-fallback", 0, VMCap::LUNA); Add("hostcom2-tcp-port", 9996, VMCap::LUNA); AddAlias("hostcom-driver", "hostcom0-driver"); - AddAlias("hostcom-fallback", "hostcom0-fallback"); AddAlias("hostcom-tcp-port", "hostcom0-tcp-port"); // キーボードの入力モード @@ -113,9 +106,7 @@ Config::Config() // ネットワークのホスト側設定。 // (0 と 1 で -driver の初期値が違う) - // fallback は少しの間残しておくがそのうち消す。 Add("hostnet0-driver", "auto"); - Add("hostnet0-fallback", 0); Add("hostnet0-afpacket-ifname", "auto"); Add("hostnet0-bpf-ifname", "auto"); Add("hostnet0-tap-devpath", "auto"); @@ -124,7 +115,6 @@ Config::Config() Add("hostnet0-usermode-net6", "fd08::/64"); Add("hostnet1-driver", "none", VMCap::X68030); - Add("hostnet1-fallback", 0, VMCap::X68030); Add("hostnet1-afpacket-ifname", "auto", VMCap::X68030); Add("hostnet1-bpf-ifname", "auto", VMCap::X68030); Add("hostnet1-tap-devpath", "auto", VMCap::X68030); @@ -133,7 +123,6 @@ Config::Config() Add("hostnet1-usermode-net6", "fd08::/64", VMCap::X68030); AddAlias("hostnet-driver", "hostnet0-driver"); - AddAlias("hostnet-fallback", "hostnet0-fallback"); AddAlias("hostnet-afpacket-ifname", "hostnet0-afpacket-ifname"); AddAlias("hostnet-bpf-ifname", "hostnet0-bpf-ifname"); AddAlias("hostnet-tap-devpath", "hostnet0-tap-devpath"); @@ -141,6 +130,10 @@ Config::Config() AddAlias("hostnet-usermode-net", "hostnet0-usermode-net"); AddAlias("hostnet-usermode-net6", "hostnet0-usermode-net6"); + Add("hostsound-driver", "auto"); + Add("hostsound-alsa-device", "default"); + Add("hostsound-netbsd-device", "/dev/sound"); + // IPLROM1/2 ファイルパス。なければ内蔵 ROM。 Add("iplrom1-image", "", VMCap::X68030); Add("iplrom2-image", "", VMCap::X68030); @@ -314,6 +307,17 @@ Config::AddAlias(const std::string& alia return true; } +// 廃止項目を追加 +void +Config::AddObsolete(const std::string& old, const std::string& alter) +{ + // すでに追加済みなら、プログラムミス。 + if (IsObsolete(old)) { + PANIC("obsolete already has %s !", old.c_str()); + } + obsolete[old] = alter; +} + // 項目を削除 // key が見付からなくても何もしない。key は複数登録されていることはないはず。 void @@ -391,6 +395,15 @@ Config::Update(const std::string& line, UpdateLinePerf("virtio-block4-writeignore=1"); UpdateLinePerf("virtio-block5-writeignore=1"); UpdateLinePerf("virtio-block6-writeignore=1"); + UpdateLinePerf("virtio-block7-writeignore=1"); + UpdateLinePerf("virtio-scsi-id0-writeignore=1"); + UpdateLinePerf("virtio-scsi-id1-writeignore=1"); + UpdateLinePerf("virtio-scsi-id2-writeignore=1"); + UpdateLinePerf("virtio-scsi-id3-writeignore=1"); + UpdateLinePerf("virtio-scsi-id4-writeignore=1"); + UpdateLinePerf("virtio-scsi-id5-writeignore=1"); + UpdateLinePerf("virtio-scsi-id6-writeignore=1"); + UpdateLinePerf("virtio-scsi-id7-writeignore=1"); return true; } else { return UpdateLine(line, ConfigItem::FromOption, optname); @@ -429,13 +442,21 @@ Config::UpdateLine(const std::string& li return false; } + head = ConfigItem::ErrFrom(from, where, key, val); + // キーが別名なら正規名に置換 key = GetCanonKey(key); + // このキーが廃止予定なら警告は出すがそのまま使う。 + if (IsObsolete(key)) { + warnx("Warning: %s: '%s' is obsolete. Please use '%s' instead.", + head.c_str(), key.c_str(), obsolete[key].c_str()); + key = obsolete[key]; + } + // キーで検索 ConfigItem *itemptr = FindItem(key); if (itemptr == NULL) { - head = ConfigItem::ErrFrom(from, where, key, val); switch (from) { default: case ConfigItem::FromHome: