--- nono/host/signalthread.h 2026/04/29 17:05:11 1.1.1.1 +++ nono/host/signalthread.h 2026/04/29 17:05:18 1.1.1.2 @@ -11,12 +11,10 @@ #pragma once #include "thread.h" -#include class SignalThread : public ThreadDevice { using inherited = ThreadDevice; - friend void signal_handler(int); public: SignalThread(); @@ -26,39 +24,21 @@ class SignalThread : public ThreadDevice void ThreadRun() override; void Terminate() override; - // HostCOM スレッドへのパイプを追加する (HostCOM スレッドから呼ばれる) - void AddPipe(int fd); - // HostCOM スレッドへのパイプを削除する - void DeletePipe(); - - private: - // シグナルを再配送する - void WriteSignal(int fd, int signo); - - // HostCOM スレッドとのパイプを接続/切断する - void ChangeCOM(int reqfd); - // このスレッドにシグナルを投げる void Kill(int signo); + private: // シグナルをブロック/アンブロックする void Mask(int how, int signo); // ブロックするシグナル集合 sigset_t waitset {}; - // HostCOM へのパイプ - int wpipe {}; - // コマンド(フラグ) // 終了フラグは立てるだけ、読むだけなので atomic じゃなくてもいいはず。 bool request_terminate {}; - - // HostCOM からの接続、切断要求。 - // 負数なら要求なし、 - // INT_MAX なら切断を要求中、 - // それ以外ならこのディスクリプタの接続を要求中。 - std::atomic request_wpipe {}; }; -extern SignalThread *gSignalThread; +static inline SignalThread *GetSignalThread() { + return Object::GetObject(OBJ_SIGNAL_THREAD); +}