|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2022 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: //
8: // メッセージ
9: //
10:
11: #pragma once
12:
13: #include "device.h"
14:
15: class MessageID
16: {
17: public:
18: enum {
1.1.1.5 ! root 19: // リクエストフラグにビット割付されるメッセージ。
1.1.1.3 root 20: // Bit0 は REQUEST_EXIT で使用しているため
21: // こちらでは NONE に割り付けて衝突しないようにしている。
1.1 root 22: NONE = 0,
23:
1.1.1.3 root 24: HOSTCOM_RX,
1.1.1.4 root 25: HOSTNET0_RX,
26: HOSTNET1_RX,
1.1.1.3 root 27:
28: MAX_REQUEST,
29:
1.1.1.5 ! root 30: // ここ以降はキューイングされるメッセージ。
! 31: // 整数。
1.1.1.3 root 32:
1.1 root 33: RESET,
34: POWEROFF_EXIT,
35: POWEROFF_RESTART,
1.1.1.2 root 36: POWER_BUTTON,
1.1 root 37:
38: SCSIDEV_LOAD_0,
39: SCSIDEV_LOAD_1,
40: SCSIDEV_LOAD_2,
41: SCSIDEV_LOAD_3,
42: SCSIDEV_LOAD_4,
43: SCSIDEV_LOAD_5,
44: SCSIDEV_LOAD_6,
45: SCSIDEV_LOAD_7,
46: SCSIDEV_UNLOAD_0,
47: SCSIDEV_UNLOAD_1,
48: SCSIDEV_UNLOAD_2,
49: SCSIDEV_UNLOAD_3,
50: SCSIDEV_UNLOAD_4,
51: SCSIDEV_UNLOAD_5,
52: SCSIDEV_UNLOAD_6,
53: SCSIDEV_UNLOAD_7,
54:
1.1.1.2 root 55: FDD_LOAD_0,
56: FDD_LOAD_1,
57: FDD_LOAD_2,
58: FDD_LOAD_3,
59: FDD_UNLOAD_0,
60: FDD_UNLOAD_1,
61: FDD_UNLOAD_2,
62: FDD_UNLOAD_3,
63:
1.1.1.5 ! root 64: VIRTIO_BLOCK_DONE_0,
! 65: VIRTIO_BLOCK_DONE_1,
! 66: VIRTIO_BLOCK_DONE_2,
! 67: VIRTIO_BLOCK_DONE_3,
! 68: VIRTIO_BLOCK_DONE_4,
! 69: VIRTIO_BLOCK_DONE_5,
! 70: VIRTIO_BLOCK_DONE_6,
! 71: VIRTIO_BLOCK_DONE_7,
! 72: VIRTIO_NET_DONE,
! 73:
1.1 root 74: KEY_INPUT,
75:
76: NMI,
77:
78: SCHEDULER_SYNCMODE,
79:
1.1.1.3 root 80: MPU_TRACE_MAIN,
81: MPU_TRACE_XP,
1.1 root 82:
1.1.1.3 root 83: // MAX は宛先を確保する際の最大値。
1.1 root 84: MAX,
1.1.1.3 root 85:
86: // ここ以降は、経路中だけで使われるメッセージ。
87:
88: MPU_TRACE_ALL,
1.1 root 89: };
90:
91: public:
92: MessageID() {
93: id = NONE;
94: }
95: MessageID(int id_) {
96: id = id_;
97: }
98:
99: MessageID& operator=(int id_) {
100: id = id_;
101: return *this;
102: }
103: operator int() const {
104: return id;
105: }
106:
107: static MessageID SCSIDEV_LOAD(int n) {
108: return MessageID(SCSIDEV_LOAD_0 + n);
109: }
110: static MessageID SCSIDEV_UNLOAD(int n) {
111: return MessageID(SCSIDEV_UNLOAD_0 + n);
112: }
113:
1.1.1.2 root 114: static MessageID FDD_LOAD(int n) {
115: return MessageID(FDD_LOAD_0 + n);
116: }
117: static MessageID FDD_UNLOAD(int n) {
118: return MessageID(FDD_UNLOAD_0 + n);
119: }
120:
1.1.1.5 ! root 121: static MessageID VIRTIO_BLOCK_DONE(int n) {
! 122: return MessageID(VIRTIO_BLOCK_DONE_0 + n);
! 123: }
! 124:
1.1.1.4 root 125: static MessageID HOSTNET_RX(int n) {
126: return MessageID(HOSTNET0_RX + n);
127: }
128:
1.1 root 129: private:
130: int id;
131: };
132:
133: using MessageCallback_t = void (Device::*)(MessageID, uint32);
134: #define ToMessageCallback(f) static_cast<MessageCallback_t>(f)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.