--- nono/vm/scheduler.h 2026/04/29 17:04:32 1.1.1.2 +++ nono/vm/scheduler.h 2026/04/29 17:04:36 1.1.1.3 @@ -1,22 +1,24 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once +#include "device.h" +#include "event.h" +#include "mpu.h" #include #include +#include #include #include -#include "device.h" -#include "event.h" -#include "mpu.h" // スケジューラ class Scheduler : public Device { - typedef Device inherited; + using inherited = Device; // リクエストフラグ static const uint REQ_SYNC = 0x0001; // スケジューラを同期モードに @@ -34,16 +36,23 @@ class Scheduler : public Device // なら通常走行するというロジックを比較1回で済ませるため。 static const uint32 SCHED_STOP = 0x0001; // スケジューラが STOP 状態 static const uint32 SCHED_SYNC = 0x0002; // 同期(%1)/高速(%0)モード - // 演算を1回で済ませるために、同じ値にすること + + // 演算を1回で済ませるために、この2値は同じ値にすること。 + // ただしこれをチェックするために全員が m68030.h/m88100.h を include すると + // m88k を修正するたびに m68k も含めて全部ビルドが走るのはかなりつらいので + // 定義されてる時だけチェックすることにする。 + // もともと将来のポカよけなのでビルド中1回でも通過すれば十分。 +#if defined(CPU_REQ_STOP) static_assert(SCHED_STOP == CPU_REQ_STOP, "must be the same"); +#endif public: Scheduler(); - virtual ~Scheduler(); + ~Scheduler() override; - virtual bool Init(); + bool Init() override; - virtual bool MonitorUpdate(); + bool MonitorUpdate() override; // スレッド開始 void ThreadRun();