--- nono/vm/message.h 2026/04/29 17:05:14 1.1.1.2 +++ nono/vm/message.h 2026/04/29 17:05:43 1.1.1.7 @@ -16,8 +16,20 @@ class MessageID { public: enum { + // リクエストフラグにビット割付されるメッセージ。 + // Bit0 は REQUEST_EXIT で使用しているため + // こちらでは NONE に割り付けて衝突しないようにしている。 NONE = 0, + HOSTCOM_RX, + HOSTNET0_RX, + HOSTNET1_RX, + + MAX_REQUEST, + + // ここ以降はキューイングされるメッセージ。 + // 整数。 + RESET, POWEROFF_EXIT, POWEROFF_RESTART, @@ -49,8 +61,17 @@ class MessageID FDD_UNLOAD_2, FDD_UNLOAD_3, - HOSTCOM_RX, - HOSTNET_RX, + VIRTIO_BLOCK_DONE_0, + VIRTIO_BLOCK_DONE_1, + VIRTIO_BLOCK_DONE_2, + VIRTIO_BLOCK_DONE_3, + VIRTIO_BLOCK_DONE_4, + VIRTIO_BLOCK_DONE_5, + VIRTIO_BLOCK_DONE_6, + VIRTIO_BLOCK_DONE_7, + VIRTIO_NET_DONE, + VIRTIO_ENTROPY_DONE, + VIRTIO_SCSI_DONE, KEY_INPUT, @@ -58,15 +79,22 @@ class MessageID SCHEDULER_SYNCMODE, - MPU_TRACE, + MPU_TRACE_MAIN, + MPU_TRACE_XP, + // MAX は宛先を確保する際の最大値。 MAX, + + // ここ以降は、経路中だけで使われるメッセージ。 + + MPU_TRACE_ALL, }; public: MessageID() { id = NONE; } + // enum からの自動変換のため explicit つけない。 MessageID(int id_) { id = id_; } @@ -93,6 +121,14 @@ class MessageID return MessageID(FDD_UNLOAD_0 + n); } + static MessageID VIRTIO_BLOCK_DONE(int n) { + return MessageID(VIRTIO_BLOCK_DONE_0 + n); + } + + static MessageID HOSTNET_RX(int n) { + return MessageID(HOSTNET0_RX + n); + } + private: int id; };