--- nono/vm/lance.h 2026/04/29 17:04:39 1.1.1.4 +++ nono/vm/lance.h 2026/04/29 17:04:45 1.1.1.6 @@ -153,7 +153,7 @@ class LanceDevice public: LanceDevice(); - ~LanceDevice() override; + virtual ~LanceDevice() override; bool Init() override; void ResetHard() override; @@ -161,7 +161,7 @@ class LanceDevice void MonitorUpdate(TextScreen&) override; // ワーカスレッド (エントリポイントから呼ばれる) - void ThreadRun(); + void ThreadRun() override; // パケットを受信した (ホストネットワークスレッドから呼ばれる) bool RecvPacket(qvector& buf) override; @@ -174,8 +174,8 @@ class LanceDevice uint64 Peek(uint32 addr); private: - pthread_t thread; - bool thread_created = false; // スレッドが作成されたら true + pthread_t thread {}; + bool thread_created {}; // スレッドが作成されたら true // スレッドの終了を指示 void Terminate(); @@ -196,8 +196,8 @@ class LanceDevice // 割り込み要因をセットし、許可されていれば割り込みを上げる void SetInterrupt(uint32 bit); - // 許可されていれば割り込みを上げる - void Interrupt(); + // 割り込み信号線の状態を変える + void ChangeInterrupt(); void TXIdle(); void TXCopy(); @@ -208,7 +208,7 @@ class LanceDevice void RXNext(); void RXRecv(); void RXMiss(); - void Callback(int arg); + void Callback(Event& ev); const std::string BitToString(const char * const name[], uint16 bits); const std::string CSR0ToString(uint16 bits); @@ -225,19 +225,19 @@ class LanceDevice // Initialization Block uint16 initblock[12] {}; - uint32 rmd_base = 0; // 受信ディスクリプタの(ZRAM での)開始アドレス - int rmd_num = 0; // 受信ディスクリプタ数 - int rmd_cur = 0; // RMD 内の現在の注目インデックス - uint32 tmd_base = 0; // 送信ディスクリプタの(ZRAM での)開始アドレス - int tmd_num = 0; // 送信ディスクリプタ数 - int tmd_cur = 0; // TMD 内の現在の注目インデックス - - uint16 rmd1 = 0; // 現在の RMD1 - uint32 rmd1_ahead = 0; // 次の RMD1 先読み (負なら先読みしてない状態) - qvector rxq {}; // 受信バッファ + uint32 rmd_base {}; // 受信ディスクリプタの(ZRAM での)開始アドレス + int rmd_num {}; // 受信ディスクリプタ数 + int rmd_cur {}; // RMD 内の現在の注目インデックス + uint32 tmd_base {}; // 送信ディスクリプタの(ZRAM での)開始アドレス + int tmd_num {}; // 送信ディスクリプタ数 + int tmd_cur {}; // TMD 内の現在の注目インデックス + + uint16 rmd1 {}; // 現在の RMD1 + uint32 rmd1_ahead {}; // 次の RMD1 先読み (負なら先読みしてない状態) + qvector rxq {}; // 受信バッファ - uint16 tmd1 = 0; // 現在の TMD1 - uint32 tmd1_ahead = 0; // 次の TMD1 先読み (負なら先読みしてない状態) + uint16 tmd1 {}; // 現在の TMD1 + uint32 tmd1_ahead {}; // 次の TMD1 先読み (負なら先読みしてない状態) std::vector txq {}; // 送信バッファ // 待ち時間用イベント